数据挖掘——KNN算法(手写数字分类)

KNN原理部分思维导图整理:

数据挖掘——KNN算法(手写数字分类)_第1张图片
手写数据分类实战,分别用KNN、SVM、朴素贝叶斯和决策树做分类器,统计比较四个分类器的准确率。

#1、导入需要的包和数据集(手写分类数据集)
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

#2、加载数据 
digits=load_digits()
data=digits.data 

#3、数据探索
print(data.shape)

#4、查看第一幅图像
print(digits.images[0])
#将第一幅图像显示出来:
plt.gray()
plt.imshow(digits.images[0])
plt.show()

#5、分隔数据,将25%的数据作为测试集,其余作为训练集;
train_x,test_x,train_y,test_y=train_test_split(data,digits.target,test_size=0.25,random_state=33)

#6、采用Z-Score进行规范化
ss=preprocessing.StandardScaler()
train_ss_x=ss.fit_transform(train_x)
test_ss_x=ss.transform(test_x)

#7、创建KNN分类器
knn=KNeighborsClassifier()
knn.fit(train_ss_x,train_y)
predict_y=knn.predict(test_ss_x)
print("KNN准确率:%.4lf"%accuracy_score(test_y,predict_y))

#8、创建SVM分类器:
svm=SVC()
svm.fit(train_ss_x,train_y)
predict_y=svm.predict(test_ss_x)
print("SVM准确率:%0.4lf"%accuracy_score(test_y,predict_y))

#9、创建Naive Bayes分类器:
#需要采用Min-Max规范化
mm=preprocessing.MinMaxScaler()
train_mm_x=mm.fit_transform(train_x)
test_mm_x=mm.transform(test_x)

mnb=MultinomialNB()
mnb.fit(train_mm_x,train_y)
predict_y=mnb.predict(test_mm_x)
print("多项式朴素贝叶斯准确率:%0.4lf"%accuracy_score(test_y,predict_y))


#10、创建CART决策树分类器:
dtc=DecisionTreeClassifier()
dtc.fit(train_mm_x,train_y)
predict_y=dtc.predict(test_mm_x)
print("CART决策树准确率:%0.4lf"%accuracy_score(test_y,predict_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.]]
数据挖掘——KNN算法(手写数字分类)_第2张图片
KNN准确率:0.9756
SVM准确率:0.9867
多项式朴素贝叶斯准确率:0.8844
CART决策树准确率:0.8511
可以看到SVM的准确度最好,KNN不相上下。

你可能感兴趣的:(数据挖掘)