前言
- 蛋肥使用丁香花數(shù)據(jù)集,練習(xí)K近鄰算法分類模型以及K近鄰算法回歸模型。
準(zhǔn)備
時(shí)間:2021/09/13
系統(tǒng)環(huán)境:Windows 10
所用工具:Jupyter Notebook\Python 3.0
涉及的庫:pandas\train_test_split\KNeighborsClassifier\accuracy_score\KNeighborsRegressor
搭建K近鄰算法分類模型
參考資料
丁香花數(shù)據(jù)集
#讀取數(shù)據(jù)集
import pandas as pd
df=pd.read_csv(r"C:\Users\Archer\Desktop\course-9-syringa.csv")
#選取自變量、因變量
X=df[["sepal_length","sepal_width","petal_length","petal_width"]]
Y=df["labels"]
#劃分訓(xùn)練集、測試集,測試集占20%
from sklearn.model_selection import train_test_split
X_train,X_test,Y_train,Y_test=train_test_split(X,Y,test_size=0.2,random_state=1)
#搭建K近鄰算法分類模型
from sklearn.neighbors import KNeighborsClassifier as KNN
knn=KNN(n_neighbors=3)
knn.fit(X_train,Y_train)
獲取預(yù)測準(zhǔn)確度
蛋肥想法:通過測試集數(shù)據(jù),檢驗(yàn)預(yù)測準(zhǔn)確度,測得準(zhǔn)確度為73.33%,蛋肥修改了“n_neighbors”的值,去探尋其與準(zhǔn)確度的關(guān)系。
#預(yù)測結(jié)果評分
from sklearn.metrics import accuracy_score
Y_pred=knn.predict(X_test)
score=accuracy_score(Y_pred,Y_test)
print(str(score))

搭建K近鄰算法回歸模型
蛋肥想法:因?yàn)镵近鄰算法回歸模型,是將離待預(yù)測樣本點(diǎn)最近的K個(gè)訓(xùn)練樣本點(diǎn)的平均值作為待預(yù)測樣本點(diǎn)的分類,而此次使用的數(shù)據(jù)集,分類列是文本,需要先轉(zhuǎn)換為數(shù)值。
#讀取數(shù)據(jù)集
import pandas as pd
df=pd.read_csv(r"C:\Users\Archer\Desktop\course-9-syringa.csv")
#將labels轉(zhuǎn)化為數(shù)值
df=df.replace({"labels":{"daphne":1,"syringa":2,"willow":3}})
#選取自變量、因變量
X=df[["sepal_length","sepal_width","petal_length","petal_width"]]
Y=df["labels"]
#劃分訓(xùn)練集、測試集,測試集占20%
from sklearn.model_selection import train_test_split
X_train,X_test,Y_train,Y_test=train_test_split(X,Y,test_size=0.2,random_state=1)
from sklearn.neighbors import KNeighborsRegressor as KNR
knr=KNR(n_neighbors=3)
knr.fit(X_train,Y_train)
獲取預(yù)測準(zhǔn)確度
蛋肥想法:通過測試集數(shù)據(jù),檢驗(yàn)預(yù)測準(zhǔn)確度,測得準(zhǔn)確度為80.00%。
#預(yù)測結(jié)果評分
from sklearn.metrics import accuracy_score
Y_pred=knr.predict(X_test)
#因?yàn)閗nr算出的Y_pred值屬性與Y_test不同
Y_pred_=list(map(lambda x:int(x),Y_pred))
score=accuracy_score(Y_pred_,Y_test)
print(str(score))
總結(jié)
- K近鄰算法分類模型,是將離待預(yù)測樣本點(diǎn)最近的K個(gè)訓(xùn)練樣本點(diǎn)中出現(xiàn)次數(shù)最多的分類作為待預(yù)測樣本點(diǎn)的分類。
- K近鄰算法回歸模型,是將離待預(yù)測樣本點(diǎn)最近的K個(gè)訓(xùn)練樣本點(diǎn)的平均值作為待預(yù)測樣本點(diǎn)的分類。
