└── knn.py /knn.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | # 手写数字分类 3 | from sklearn.model_selection import train_test_split 4 | from sklearn import preprocessing 5 | from sklearn.metrics import accuracy_score 6 | from sklearn.datasets import load_digits 7 | from sklearn.neighbors import KNeighborsClassifier 8 | from sklearn.svm import SVC 9 | from sklearn.naive_bayes import MultinomialNB 10 | from sklearn.tree import DecisionTreeClassifier 11 | import matplotlib.pyplot as plt 12 | 13 | # 加载数据 14 | digits = load_digits() 15 | data = digits.data 16 | # 数据探索 17 | print(data.shape) 18 | # 查看第一幅图像 19 | print(digits.images[0]) 20 | # 第一幅图像代表的数字含义 21 | print(digits.target[0]) 22 | # 将第一幅图像显示出来 23 | plt.gray() 24 | plt.imshow(digits.images[0]) 25 | plt.show() 26 | 27 | # 分割数据,将25%的数据作为测试集,其余作为训练集 28 | train_x, test_x, train_y, test_y = train_test_split(data, digits.target, test_size=0.25, random_state=33) 29 | 30 | # 采用Z-Score规范化 31 | ss = preprocessing.StandardScaler() 32 | train_ss_x = ss.fit_transform(train_x) 33 | test_ss_x = ss.transform(test_x) 34 | 35 | # 创建KNN分类器 36 | knn = KNeighborsClassifier() 37 | knn.fit(train_ss_x, train_y) 38 | predict_y = knn.predict(test_ss_x) 39 | print("KNN准确率: %.4lf" % accuracy_score(test_y, predict_y)) 40 | 41 | # 创建SVM分类器 42 | svm = SVC() 43 | svm.fit(train_ss_x, train_y) 44 | predict_y=svm.predict(test_ss_x) 45 | print('SVM准确率: %0.4lf' % accuracy_score(test_y, predict_y)) 46 | 47 | # 采用Min-Max规范化 48 | mm = preprocessing.MinMaxScaler() 49 | train_mm_x = mm.fit_transform(train_x) 50 | test_mm_x = mm.transform(test_x) 51 | 52 | # 创建Naive Bayes分类器 53 | mnb = MultinomialNB() 54 | mnb.fit(train_mm_x, train_y) 55 | predict_y = mnb.predict(test_mm_x) 56 | print("多项式朴素贝叶斯准确率: %.4lf" % accuracy_score(test_y, predict_y)) 57 | 58 | # 创建CART决策树分类器 59 | dtc = DecisionTreeClassifier() 60 | dtc.fit(train_mm_x, train_y) 61 | predict_y = dtc.predict(test_mm_x) 62 | print("CART决策树准确率: %.4lf" % accuracy_score(test_y, predict_y)) --------------------------------------------------------------------------------