1. 程式人生 > >機器學習之KNN的總結

機器學習之KNN的總結

機器學習之KNN的總結

本片文章主要寫了針對一個csv資料,目標是對其資料進行分類,怎樣用knn實現
在此問題中將該問題分為三個步驟:

  1. 資料處理:對csv資料進行處理做出適合knn的資料集,包括劃分測試集及訓練集
  2. 資料擬合:對資料集資料進行擬合
  3. 資料預測及評價指標:對所訓練得到的結果進行預測以及評價
  • 資料處理

  • 本例項中的資料集如下圖所示:
    在這裡插入圖片描述
    第一列為資料集的標籤,第一行為資料集的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)

在這裡插入圖片描述