zoukankan      html  css  js  c++  java
  • 多标签分类及多输出分类

    1、多标签分类

    有些情况,会想让你的分类器给一个样例输出多个类别。比如思考一个人脸识别器,并识别出这个是谁。这就需要对于同一张图片,首先识别出有几个人,并给识别出的人贴上标签。这就是多个二值标签的分类系统被叫做多标签分类系统。

    现在,我们打算使用MNIST数据做一个是否为大数字(大于6)、是否为奇数的多标签分类。

    from sklearn.neighbors import KNeighborsClassifier
    knn_clf = KNeighborsClassifier()
    y_train_large = (y_train>=7)
    y_train_odd = (y_train % 2 == 1)
    y_multilabel = np.c_[y_train_large,y_train_odd]
    knn_clf.fit(X_train,y_multilabel)

    knn_clf.predict([some_digit])

     数字5不是大数(False)但是一个奇数(True)

    有许多方法去评估一个多标签分类器,和选择正确的量度标准,这取决于你的项目。举个例子,一个方法是对每个个体标签去量度 F1 值(或者前面讨论过的其他任意的二分类器的量度标准),然后计算平均值。下面的代码计算全部标签的平均 F1 值:

    y_train_knn_pred = cross_val_predict(knn_clf,X_train,y_train,cv=3)
    f1_score(y_train,y_train_knn_pred,average='macro')

     上面假设所有标签有着同等的重要性,但可能不是这样。如果想让某个标签具有更大的权重,一个简单的做法就是给每一个标签的权重等于他的支持度(比如,那个标签的样例的数目)。为了做到这点,可简单的在上面代码中设置average= “weighted”

    2、多输出分类

    分类任务“多输出-多类分类”(或者称为多输出分类)。它是多标签分类的简单泛化,在这里每一个标签可以是多类别的(比如说,可以有多个可能值)

    我们将建立一个系统,它可以去除图片中的噪音。它将有一张混有噪音的图片作为输入,期待他能够输出一个干净的数字图片,用一个像素强度的数组表示,注意这个分类器的输出是多标签的(一个像素一个标签)和每个标签可以偶多个值(像素强度取值范围从0到255)。所以他是一个多输出分类系统

    从MNIST的图片创建训练集和测试集开始,然后给图片的像素强度添加噪声。目标图像是原始图像

    noise =np.random.randint(0,100,(len(X_train),784))
    X_train_mod = X_train + noise
    noise = np.random.randint(0,100,(len(X_test),784))
    X_test_mod = X_test + noise
    y_train_mod = X_train
    y_test_mod = X_test
    some_index = 5500
    plt.subplot(121);plot_digit(X_test_mod[some_index])
    plt.subplot(122);plot_digit(y_test_mod[some_index])
    plt.show()

    knn_clf.fit(X_train_mod, y_train_mod)
    clean_digit = knn_clf.predict([X_test_mod[some_index]])
    plot_digit(clean_digit)

  • 相关阅读:
    一行语句让你的浏览器变成记事本
    为啥只有IPv4和IPv6,没有IPv5呢?
    在线C++编译器
    怎么让Visual Studiot在遇到一个project编译错误时停止编译其它project
    C#的继承类中static constructor的调用问题
    C#中静态构造函数导致的一个deadlock
    一个C++的轻量级的logger实现
    一个免费轻量的Mathematica替代Mathics
    实时交通路况
    构建WAP邮件发送服务器
  • 原文地址:https://www.cnblogs.com/whiteBear/p/12401529.html
Copyright © 2011-2022 走看看