美文网首页
《机器学习及实践——从零开始通往KAGGLE竞赛之路》读书笔记四

《机器学习及实践——从零开始通往KAGGLE竞赛之路》读书笔记四

作者: 风之旅人c | 来源:发表于2020-02-28 16:10 被阅读0次

    支持向量机(Support Vector Classifier)

    根据训练样本的分布,搜索所有可能的线性分类器中最佳的那个。观察我们之间的分类图,我们会发现决定其直线位置的样本并不是所有数据,而是其中的两个空间间隔最小的的两个不同类别的数据点,我们把这种可以用来真正帮助决策最优线性分类模型的数据点叫做“支持向量”。
    Logistic回归模型在训练过程中考虑了所有样本对数据对参数的影响,不一定获得最佳的分类器。

    数据描述

    手写数字图片分类任务

    # 从sklearn.datasets里导入手写体数字加载器。
    from sklearn.datasets import load_digits
    # 从通过数据加载器获得手写体数字的数码图像数据并储存在digits变量中。
    digits = load_digits()
    # 检视数据规模和特征维度。
    digits.data.shape
    
    (1797, 64)
    

    数据集中一共有1797张图片,每幅图由8*8=64像素矩阵表示。
    在模型使用这些像素矩阵的时候,习惯将2D图像逐行首位拼接为1D的像素特征向量,也许会损失一些数据本身的结构信息,但是经典模型中都没有对结构性信息进行学习的能力。

    # 从sklearn.model_selection导入train_test_split用于数据分割
    from sklearn.model_selection import train_test_split
    
    X_train, X_test, y_train, y_test = train_test_split(digits.data, digits.target, test_size=0.25, random_state = 33)
    
    y_train.shape
    
    (1347,)
    
    y_test.shape
    
    (450,)
    
    # 从sklearn.preprocessing里导入数据标准化模块。
    from sklearn.preprocessing import StandardScaler
    
    # 从sklearn.svm里导入基于线性假设的支持向量机分类器LinearSVC。
    from sklearn.svm import LinearSVC
    
    # 从仍然需要对训练和测试的特征数据进行标准化。
    ss = StandardScaler()
    X_train = ss.fit_transform(X_train)
    X_test = ss.transform(X_test)
    
    # 初始化线性假设的支持向量机分类器LinearSVC。
    lsvc = LinearSVC(max_iter=10000)
    #进行模型训练
    lsvc.fit(X_train, y_train)
    # 利用训练好的模型对测试样本的数字类别进行预测,预测结果储存在变量y_predict中。
    y_predict = lsvc.predict(X_test)
    

    性能评测

    我们依然使用准确性、召回率、精确率、和F1指标这4个测度对模型性能进行评估。

    print ('The Accuracy of Linear SVC is', lsvc.score(X_test, y_test))
    
    The Accuracy of Linear SVC is 0.9511111111111111
    
    from sklearn.metrics import classification_report
    print (classification_report(y_test, y_predict, target_names=digits.target_names.astype(str)))
    
                  precision    recall  f1-score   support
    
               0       0.92      1.00      0.96        35
               1       0.95      0.98      0.96        54
               2       0.98      1.00      0.99        44
               3       0.93      0.93      0.93        46
               4       0.97      1.00      0.99        35
               5       0.94      0.94      0.94        48
               6       0.96      0.98      0.97        51
               7       0.92      1.00      0.96        35
               8       0.98      0.83      0.90        58
               9       0.95      0.91      0.93        44
    
        accuracy                           0.95       450
       macro avg       0.95      0.96      0.95       450
    weighted avg       0.95      0.95      0.95       450
    

    需要指出的是,召回率、准确率和F1指标最先适用于二分类任务,但是我们现在是一个多类分类任务,我们的分类目标有10个,无法直接计算以上3个指标。通常的做法是逐一评估某个类别的三个性能指标:把所有其他的类别看作是负样本,这样一来,就创造了10个二分类任务。

    特点分析

    支持向量机可以帮助我们在海量甚至高维度的数据中,筛选出对预测任务最有效的少量训练样本。不仅节省了模型学习所需要的数据内存,同时也提高了模型的预测性能。然而,付出的代价是更多的计算代价。

    相关文章

      网友评论

          本文标题:《机器学习及实践——从零开始通往KAGGLE竞赛之路》读书笔记四

          本文链接:https://www.haomeiwen.com/subject/vggkhhtx.html