zoukankan      html  css  js  c++  java
  • KNN如何对手写数字进行识别(python)

    手写数字数据集是个非常有名的用于图像识别的数据集。数字识别的过程就是将这些图片与分类结果0-9一一对应起来。我们可以直接从sklearn中加载自带的手写数字数据集:

    from sklearn.model_selection import train_test_split
    from sklearn import preprocessing
    from sklearn.metrics import accuracy_score
    from sklearn.datasets import load_digits
    from sklearn.neighbors import KNeighborsClassifier
    from sklearn.svm import SVC
    from sklearn.naive_bayes import MultinomialNB
    from sklearn.tree import DecisionTreeClassifier
    import matplotlib.pyplot as plt
    #加载数据
    digits = load_digits()
    data = digits.data
    #数据探索
    print('数据形式:',data.shape)
    #查看第一幅图像
    print('查看第一幅图像:',digits.images[0])
    #第一幅图像代表的数字含义
    print('第一幅图像代表的数字含义:',digits.target[0])
    #将第一幅图像显示出来
    plt.gray()
    plt.imshow(digits.images[0])
    plt.show()
    #分割数据,将25%的数据作为测试集,其余作为训练集
    train_x,test_x,train_y,test_y = train_test_split(data,digits.target,test_size=0.25,random_state=33)
    #采用Z-Score规范化
    ss = preprocessing.StandardScaler()
    train_ss_x = ss.fit_transform(train_x)
    test_ss_x = ss.transform(test_x)
    #创建KNN分类器
    knn = KNeighborsClassifier()
    knn.fit(train_ss_x,train_y)
    predict_y = knn.predict(test_ss_x)
    print("KNN准确率:%.4lf"% accuracy_score(predict_y,test_y))
    #创建SVM分类器
    svm = SVC()
    svm.fit(train_ss_x,train_y)
    predict_y = svm.predict(test_ss_x)
    print('SVM准确率:%0.4lf'% accuracy_score(predict_y,test_y))
    #采用Min-Max规范化
    mm = preprocessing.MinMaxScaler()
    train_mm_x = mm.fit_transform(train_x)
    test_mm_x = mm.transform(test_x)
    #创建Naive Bayes分类器
    mnb = MultinomialNB()
    mnb.fit(train_mm_x,train_y)
    predict_y = mnb.predict(test_mm_x)
    print("多项式朴素贝叶斯准确率:%.4lf" % accuracy_score(predict_y,test_y))
    #创建CART决策树分类器
    dtc = DecisionTreeClassifier()
    dtc.fit(train_mm_x,train_y)
    predict_y = dtc.predict(test_mm_x)
    print("CART决策树准确率:%.4lf"% accuracy_score(predict_y,test_y))

    运行结果:

    数据形式: (1797, 64)
    查看第一幅图像: [[ 0.  0.  5. 13.  9.  1.  0.  0.]
     [ 0.  0. 13. 15. 10. 15.  5.  0.]
     [ 0.  3. 15.  2.  0. 11.  8.  0.]
     [ 0.  4. 12.  0.  0.  8.  8.  0.]
     [ 0.  5.  8.  0.  0.  9.  8.  0.]
     [ 0.  4. 11.  0.  1. 12.  7.  0.]
     [ 0.  2. 14.  5. 10. 12.  0.  0.]
     [ 0.  0.  6. 13. 10.  0.  0.  0.]]
    第一幅图像代表的数字含义: 0

    KNN准确率:0.9756
    SVM准确率:0.9867
    多项式朴素贝叶斯准确率:0.8844
    CART决策树准确率:0.8533

  • 相关阅读:
    ExecuteScalar requires the command to have a transaction when the connection assigned to the command is in a pending
    如何从vss中分离程序
    String or binary data would be truncated
    the pop3 service failed to retrieve authentication type and cannot continue
    The POP3 service failed to start because
    IIS Error he system cannot find the file specified _找不到页面
    pku2575Jolly Jumpers
    pku2940Wine Trading in Gergovia
    pku3219二项式系数
    pku1029false coin
  • 原文地址:https://www.cnblogs.com/xiao02fang/p/13591800.html
Copyright © 2011-2022 走看看