机器学习sklearn入门:使用KNN模型分类鸢尾花和简单调参
bg:scikit--learn是不错的机器学习库,里面精简了很多东西,新手学习起来也是比较舒服的
#%%
from sklearn import datasets
from sklearn.model_selection import train_test_split
from sklearn.neighbors import KNeighborsClassifieriris = datasets.load_iris()
iris_X = iris.data
iris_y = iris.target # 选择第0行和第一行
#%%
Xtrain, Xtest, Ytrain, Ytest = train_test_split(iris_X, iris_y, test_size=0.3)knn = KNeighborsClassifier()
knn.fit(Xtrain, Ytrain) # 将训练集的特征和标签训练knn模型
knn.predict(Xtest) # 对测试集进行分类标签
#%%
Ytest # 原本Xtest数据集对应的标签
#%%
结果:
测试集准确率:
5次交叉验证准确率:
还算是比较准的
调参
knn创建对象的时候是可以添加参数的,下面就以n_neighbors参数为例,挑选出最优的参数
# 轮询找到更好的KNN参数
score_all = []
num_neighbors = np.arange(1, 10)
for num_neighbor in num_neighbors:knn = KNeighborsClassifier(n_neighbors=num_neighbor)score = cross_val_score(knn, Xtrain, Ytrain, cv=10, scoring='accuracy')score_all.append(score.mean())
思路就是遍历一遍
-- 通过matplotlib可以画出参数和准确率的关系