zoukankan      html  css  js  c++  java
  • 机器学习——支持向量机

    SVM就是试图把棍放在一堆球中的最佳位置,好让在棍的两边有尽可能大的间隙。这个间隙就是球到棍的距离。

    • 支持向量机:找到分类界面,使支持向量间的间隔最大,支持向量到分割界面的距离最小
    • 支持向量是通过到分割界面距离最小的点的向量,且两向量间的距离最大,在二维中其实就是点
    • 取支持向量间的最大间隔是为了若当再添加一个点到一类中,最大间隔可以容许,仍然可以进行有效分割
    • 支持向量到分割界面(决策面)距离最小意思是这些点最为接近

    导入类库

    1 from sklearn.datasets import load_digits
    2 from sklearn.metrics import classification_report
    3 from sklearn.model_selection import train_test_split
    4 from sklearn.preprocessing import StandardScaler
    5 from sklearn.svm import LinearSVC
    6 import numpy as np
    7 import matplotlib.pyplot as plt

    代码

     1 def hw_recognition():
     2     digits = load_digits()
     3 
     4     X_train, X_test, Y_train, Y_test = train_test_split(digits.data, digits.target, test_size=0.25, random_state=23)
     5 
     6     ss = StandardScaler()
     7     # fit 是实例方法,必须由实例调用
     8     X_train = ss.fit_transform(X_train)
     9     X_test = ss.transform(X_test)
    10 
    11     lsvc = LinearSVC()
    12     lsvc.fit(X_train, Y_train)
    13 
    14     # 预测测试集数据
    15     # Y_predict = lsvc.predict(np.array([X_test[90]]))
    16     # print(Y_predict)
    17 
    18     # 生成评估报告
    19     # 精确率precision = 正正 / (正正 + 反正)
    20     # 按列计算
    21     #
    22     # 召回率recall = 正正 / (正正 + 正反)
    23     # 按行计算
    24     # 按行解释正反:正正-真正的正例预测为正例;正反-真正的正例预测为反例
    25     #            反正-真正的反例预测为正例;反正-真正的反例预测为正例
    26     Y_predict = lsvc.predict(X_test)
    27     print(classification_report(Y_test, Y_predict, target_names=digits.target_names.astype(str)))
    28 
    29     # 对比预测的数字与原图像中的数字
    30     # Y_predict = lsvc.predict(np.array([digits.data[307]]))
    31     # plt.imshow(digits.images[307])
    32     # print(Y_predict)
    33     # plt.show()

    解析

     1 真实数据       预测数据
     2 ---------------------------
     3            18正     12反   
     4  20正      12正正    8正反  
     5  10反       6反正    4反反  
     6 ---------------------------
     7 
     8 精确率precision = 正正/(正正+反正)            按列计算
     9 
    10 召回率recall = 正正/(正正+正反)            按行计算

    运行结果

    精确率      召回率
                 precision    recall  f1-score   support
    
              0       1.00      1.00      1.00        37
              1       0.86      0.90      0.88        48
              2       1.00      0.98      0.99        46
              3       0.91      0.98      0.94        41
              4       1.00      0.96      0.98        49
              5       0.91      0.98      0.94        50
              6       0.98      0.98      0.98        41
              7       0.92      0.95      0.93        37
              8       0.93      0.89      0.91        46
              9       1.00      0.91      0.95        55
    
    avg / total       0.95      0.95      0.95       450
    

      

  • 相关阅读:
    Convert Sorted Array to Binary Search Tree数组变成高度平衡的二叉树
    695. Max Area of Island最大岛屿面积
    257. Binary Tree Paths返回所有深度优先的遍历
    112. Path Sum二叉树路径和
    对称二叉树 · symmetric binary tree
    100. Same Tree同样的树
    计数排序 (Counting Sort)
    基数排序 (Radix Sort)
    Linux 文件基本属性
    gensuitemodule (Mac OS) – Python 中文开发手册
  • 原文地址:https://www.cnblogs.com/siplips/p/9769125.html
Copyright © 2011-2022 走看看