機器學習之KNN的實現
本片文章主要寫了針對一個csv數據,目標是對其數據進行分類,怎樣用knn實現
在此問題中將該問題分爲三個步驟:
- 數據處理:對csv數據進行處理做出適合knn的數據集,包括劃分測試集及訓練集
- 數據擬合:對數據集數據進行擬合
- 數據預測及評價指標:對所訓練得到的結果進行預測以及評價
-
數據處理
-
本實例中的數據集如下圖所示:
第一列爲數據集的標籤,第一行爲數據集的title,首先要做的處理是將數據集的數據以及標籤提取出來。即特徵與標籤類別# -*- coding: utf-8 -*- """ Created on Tue Nov 27 17:47:44 2018 @author: Administrator """ import csv from sklearn import neighbors knn = neighbors.KNeighborsClassifier()#(n_neighbors=10) from numpy import genfromtxt a = open('list.csv', 'r+') reader = csv.reader(a)#按行讀取內容 headers = next(reader)#打印出爲title那行 print(headers)
該title第一列爲數字序列,後七列爲特徵名稱,其次是提取標籤以及數據
dataPath = r"list.csv"
featureList = genfromtxt(dataPath, skip_header=1,delimiter=',',usecols=(1,2,3,4,5,6,7))
#轉化爲txt,[genfromtxt用法](https://blog.csdn.net/weixin_40123108/article/details/84531460)得到後7列數據
labelList = genfromtxt(dataPath, skip_header=1,delimiter=',',usecols=(0))#得到標籤
x= featureList[:]
print(len(x))
#print (x)
#print ("labelList")
y = labelList[:]
#print (y)
劃分數據集及訓練集
from sklearn.model_selection import train_test_split#分割數據集
X_train, X_test, y_train, y_test = train_test_split(
x, y, test_size=0.25)
print(X_train.shape)
print(X_test.shape)
**
- 數據擬合
**
knn = neighbors.KNeighborsClassifier()#(n_neighbors=10)knn參數用法
knn.fit(X_train,y_train)
**
- 數據預測及評價指標
**
y_predict = knn.predict(X_test)
#調用該對象的測試方法,主要接收一個參數:測試數據集
probility=knn.predict_proba(X_test)
#計算各測試樣本基於概率的預測
score=knn.score(X_test,y_test,sample_weight=None)
#調用該對象的打分方法,計算出準確率
print('y_predict = ')
print(y_predict)
#輸出測試的結果
print('y_test = ')
print(y_test)
#輸出原始測試數據集的正確標籤,以方便對比
print ('Accuracy:',score )
#輸出準確率計算結果
print ('probility:',probility)