Python數據挖掘—分類—KNN


概念

  • 監督學習(Supervised Learning)

  • 從給定標注的訓練數據集中學習出一個函數,根據這個函數為新函數進行標注
  • 無監督學習(Unsupervised Learning)

  • 從給定無標注的訓練數據中學習出一個函數,根據這個函數為所有數據標注
  • 分類(Classification)

  分類算法通過對已知類別訓練數據集的分析,從中發現分類規則,以此預測新數據的類別,分類算法屬於監督學習

 

 

KNN(K Nearest Neighbors)

K近鄰分類算法:KNN算法從訓練集中找到和新數據最接近的K條記錄,然后根據他們的主要分類來決定新數據的類別

交叉驗證法(Cross Validation)

訓練集(Train Set):用來訓練模型或確定模型的數據

測試集(Test Set):用來驗證模型的准確性的數據

 

iris數據集

  iris數據集的中文名是安德森鳶尾花卉數據集,英文全稱是Anderson’s Iris data set。iris包含150個樣本,對應數據集的每行數據。每行數據包含每個樣本的四個特征和樣本的類別信息,所以iris數據集是一個150行5列的二維表。

  通俗地說,iris數據集是用來給花做分類的數據集,每個樣本包含了花萼長度、花萼寬度、花瓣長度、花瓣寬度四個特征(前4列),我們需要建立一個分類器,分類器可以通過樣本的四個特征來判斷樣本屬於山鳶尾、變色鳶尾還是維吉尼亞鳶尾(這三個名詞都是花的品種)。

  iris的每個樣本都包含了品種信息,即目標屬性(第5列,也叫target或label)。

 

--------------------- 來自 善戰驍勇 的CSDN 博客 ,全文地址請點擊:https://blog.csdn.net/java1573/article/details/78865495?utm_source=copy 

 

 步驟

1、導入iris數據集

  numpy、sklearn中的datasets類

  導入iris數據集可以通過sklearn自帶的方法導入iris數據集,前面有iris數據集的相關介紹

import numpy

from sklearn import datasets
#導入iris數據集
iris=datasets.load_iris()

iris

#查看數據的規模
iris.data.shape
#查看訓練目標的總類
numpy.unique(iris.target)#去重數組

train_test_split是交叉驗證中常用的函數,功能是從從樣本中隨機按比例選取train data和test data,形式為:data_train,data_test,target_train,target_test=train_test_split(iris.data,iris.taget,test_size=0.3,random_state=0)

  • iris.data為特征數據;
  • iris.target為目標數據;
  • test_size為測試的占比,一般使用三七分,訓練集占0.7;
  • random_state:是隨機數的種子
 1 from sklearn.model_selection import train_test_split
 2 
 3 data_train, data_test, target_train, target_test=train_test_split(
 4     iris.data,   #特征數據
 5     iris.target,  #目標數據
 6     test_size=0.3   #測試的占比,一般使用三七分,訓練集占0.7
 7 )
 8 
 9 
10 data_train.shape
11 data_test.shape
12 target_train.shape
13 target_test.shape

 

2、使用KNN的建模類neighbors.KNeighborsClassifier()

1 from sklearn import neighbors
2 
3 knnModel=neighbors.KNeighborsClassifier(n_neighbors=3)   #分類的個數,可以從數據集中獲取
4  
5 knnModel.fit(data_train,target_train)
6 
7 knnModel.score(data_test,target_test)

 

3、使用cross_val_score類、預測

 

1 from sklearn.model_selection import cross_val_score   
2 
3 cross_val_score(
4         knnModel,
5         iris.data,iris.target,cv=5  #cv為k折交叉驗證的K值
6 )      #返回五次驗證
7 
8 #使用模型進行預測
9 knnModel.predict([[0.1,0.2,0.3,0.4]])

KNeighborsClassifier在sklearn.neighbors包之中。

KNeighborsClassifier使用很簡單,

1)創建KNeighborsClassifier對象;

2)調用fit函數;

3)調用predict函數進行預測。以下代碼說明了用法。 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM