Python数据分析(6)K近邻算法分类模型

前言

  • 蛋肥使用丁香花数据集,练习K近邻算法分类模型以及K近邻算法回归模型。

准备

时间:2021/09/13
系统环境:Windows 10
所用工具:Jupyter Notebook\Python 3.0
涉及的库:pandas\train_test_split\KNeighborsClassifier\accuracy_score\KNeighborsRegressor

搭建K近邻算法分类模型

参考资料
丁香花数据集

#读取数据集
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"]

#划分训练集、测试集,测试集占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)

获取预测准确度

蛋肥想法:通过测试集数据,检验预测准确度,测得准确度为73.33%,蛋肥修改了“n_neighbors”的值,去探寻其与准确度的关系。

#预测结果评分
from sklearn.metrics import accuracy_score
Y_pred=knn.predict(X_test)
score=accuracy_score(Y_pred,Y_test)
print(str(score))

搭建K近邻算法回归模型

蛋肥想法:因为K近邻算法回归模型,是将离待预测样本点最近的K个训练样本点的平均值作为待预测样本点的分类,而此次使用的数据集,分类列是文本,需要先转换为数值。

#读取数据集
import pandas as pd
df=pd.read_csv(r"C:\Users\Archer\Desktop\course-9-syringa.csv")

#将labels转化为数值
df=df.replace({"labels":{"daphne":1,"syringa":2,"willow":3}})

#选取自变量、因变量
X=df[["sepal_length","sepal_width","petal_length","petal_width"]]
Y=df["labels"]

#划分训练集、测试集,测试集占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)

获取预测准确度

蛋肥想法:通过测试集数据,检验预测准确度,测得准确度为80.00%。

#预测结果评分
from sklearn.metrics import accuracy_score
Y_pred=knr.predict(X_test)
#因为knr算出的Y_pred值属性与Y_test不同
Y_pred_=list(map(lambda x:int(x),Y_pred))
score=accuracy_score(Y_pred_,Y_test)
print(str(score))

总结

  • K近邻算法分类模型,是将离待预测样本点最近的K个训练样本点中出现次数最多的分类作为待预测样本点的分类。
  • K近邻算法回归模型,是将离待预测样本点最近的K个训练样本点的平均值作为待预测样本点的分类。

你可能感兴趣的:(Python数据分析(6)K近邻算法分类模型)