機器學習sklearn之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)

在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章