資料探勘——KNN演算法(手寫數字分類)
KNN原理部分思維導圖整理:
手寫資料分類實戰,分別用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準確率:0.9756
SVM準確率:0.9867
多項式樸素貝葉斯準確率:0.8844
CART決策樹準確率:0.8511
可以看到SVM的準確度最好,KNN不相上下。
相關文章
- KNN 演算法-實戰篇-如何識別手寫數字KNN演算法
- KNN演算法——分類部分KNN演算法
- 手勢識別演算法: 資料濾波演算法、資料分演算法——KNN演算法KNN
- 計算機視覺—kNN識別手寫數字(10)計算機視覺KNN
- 《資料探勘導論》實驗課——實驗四、資料探勘之KNN,Naive BayesKNNAI
- 最基礎的分類演算法(KNN)演算法KNN
- Tensorflow-線性迴歸與手寫數字分類
- 機器學習演算法-K近鄰(KNN)演算法(三):馬絞痛資料--kNN資料預處理+kNN分類pipeline(程式碼附詳細註釋)機器學習演算法KNN
- 演算法實踐:KNN分類(day08)演算法KNN
- 常用資料探勘演算法演算法
- 資料探勘-層次聚類聚類
- 資料探勘概念與技術 - chapter 8 - 分類:基本概念APT
- 一看就懂的K近鄰演算法(KNN),K-D樹,並實現手寫數字識別!演算法KNN
- scikit-learn中KNN演算法資料歸一化的分裝KNN演算法
- KNN 演算法-理論篇-如何給電影進行分類KNN演算法
- Deep Learning Tutorial (翻譯) 之使用邏輯迴歸分類手寫數字MNIST邏輯迴歸
- 機器學習演算法(九): 基於線性判別模型的LDA手寫數字分類識別機器學習演算法模型LDA
- 資料探勘之 層次聚類聚類
- 資料探勘—邏輯迴歸分類—信用卡欺詐分析邏輯迴歸
- 資料探勘十大演算法演算法
- python 資料探勘演算法簡要Python演算法
- 資料探勘和資料提取該怎麼區分?
- 資料探勘與分析 概念與演算法演算法
- [PAT B] 1012 數字分類
- KNN演算法的資料歸一化--Feature ScalingKNN演算法
- 《資料探勘概念與技術》第八章 分類:基本概念
- 【python資料探勘課程】二十七.基於SVM分類器的紅酒資料分析Python
- 資料探勘十大經典演算法演算法
- 圖資料探勘:社群檢測演算法(一)演算法
- sklearn學習 第一篇:knn分類KNN
- Python資料探勘入門與實踐---使用scikit-learn 估計器分類Python
- Python有哪些資料探勘工具?五大類Python
- opencv python 基於KNN的手寫體識別OpenCVPythonKNN
- 基於PyTorch框架的多層全連線神經網路實現MNIST手寫數字分類PyTorch框架神經網路
- 資料結構與演算法-kd二叉樹(kNN)資料結構演算法二叉樹KNN
- 資料探勘演算法跟資料結構中的演算法有區別嗎演算法資料結構
- 資料治理與資料分類分級!
- tensorflow.js 手寫數字識別JS