基于sklearn库使用KNN实现鸢尾花分类

文章目录

  • 一. 流程
    • 1. 获取数据
    • 2. 划分数据集
    • 3. 数据集可视化
    • 4. 构建模型
    • 5. 测试模型
    • 6. 评估模型
  • 二. 总结
    • 思路
    • 完整代码


一. 流程

1. 获取数据

from sklearn.datasets import load_iris
iris=load_iris()

2. 划分数据集

from sklearn.model_selection import train_test_split
#X 表示数据 ,y 表示标签 
X_train,X_test,y_train,y_test=train_test_split(iris['data'],iris['target'],random_state=0)

3. 数据集可视化

#在2D情况下不同的特征组合对于不同类别的花的散点分布,以及大概的区分能力。
iris_dataframe=pd.DataFrame(X_train,columns=iris.feature_names)
grr=pd.plotting.scatter_matrix(iris_dataframe,c=y_train,figsize=(15,15),marker='o',hist_kwds={'bins':20},s=60,alpha=.8,cmap=mglearn.cm3)
plt.show()

4. 构建模型

knn=KNeighborsClassifier(n_neighbors=3)   #n_neighbors:类别预测时,选择的最邻近数据点数量,默认为5
knn.fit(X_train,y_train)

5. 测试模型

y_pre=knn.predict(X_test)
print(iris['target_names'][y_pre])

6. 评估模型

print("Test set core:{:.2f}".format(np.mean(y_pre==y_test)))
print("Test set score:{:.2f}".format(knn.score(X_test,y_test)))

二. 总结

思路

本文使用k近邻分类算法,根据新数据点在数据集中距离最近的邻居来进行预测。该算法在KNeighborsClassifier类中实现,里面既包含构建模型的算法,也包含利用模型进行预测的算法。
我们将类实例化,并设定参数。然后调用fit方法来构建模型,传入训练数据X_train和训练输出y_train作为参数。我们用score方法来评估模型,该方法计算的是模型精度。我们将score方法用于测试集数据和测试集标签,得出模型的精度约为97%,也就是说,该模型在测试集上97%的预测都是正确的。

完整代码

from sklearn.neighbors import KNeighborsClassifier
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
import numpy as np
import matplotlib.pyplot as plt
import mglearn
import pandas as pd

#数据处理
iris=load_iris()
X_train,X_test,y_train,y_test=train_test_split(iris['data'],iris['target'],random_state=0)

#数据可视化
iris_dataframe=pd.DataFrame(X_train,columns=iris.feature_names)
grr=pd.plotting.scatter_matrix(iris_dataframe,c=y_train,figsize=(15,15),marker='o',hist_kwds={'bins':20},s=60,alpha=.8,cmap=mglearn.cm3)
plt.show()

#训练模型
knn=KNeighborsClassifier(n_neighbors=3)
knn.fit(X_train,y_train)

#测试模型
X_new=np.array([[5,2.9,1,0.2]])
prediction=knn.predict(X_new)
y_pre=knn.predict(X_test)
print(iris['target_names'][y_pre])

#评估模型
print("Test set core:{:.2f}".format(np.mean(y_pre==y_test)))
print("Test set score:{:.2f}".format(knn.score(X_test,y_test)))

你可能感兴趣的:(机器学习,sklearn,机器学习,python)