- 🍨 本文为🔗365天深度学习训练营 中的学习记录博客
- 🍖 原作者:K同学啊
概念:
在第L4周:机器学习-K-邻近算法模型(KNN)-CSDN博客中学习了KNN的基本概念,本次主要加深印象,用鸢尾花数据集来进行KNN分类预测
具体实现:
(一)环境:
语言环境:Python 3.10
编 译 器: PyCharm
**(二)具体步骤:
- 导入数据:
from sklearn import datasets
from sklearn.neighbors import KNeighborsClassifier
from sklearn.model_selection import train_test_split # 导入鸢尾花数据集
iris = datasets.load_iris()
print(iris)
2.分析一下数据庥
从上面的图可以看到,iris分为了“data”和“target”两个array,分别对应的是data-特征数据,target-标签数据.那我们分别取出来:
X = iris.data # 特征数据
y = iris.target # 标签数据
print("特征数据:", X)
print("标签数据:", y)
那么特征数据中的第一行四个值代表什么呢,查了一下:
第1个:Sepal.Length(花萼长度),单位是cm
第2个:Sepal.Width(花萼宽度),单位是cm
第3个:Petal.Length(花瓣长度),单位是cm
第4个:Petal.Width(花瓣宽度),单位是cm;
标签数据中的0,1,2又代表什么呢?代表鸢尾花的种类:
0:Iris Setosa(山鸢尾)
1:Iris Versicolour(杂色鸢尾)
2:Iris Virginica(维吉尼亚鸢尾)
所以整个数据集的意思是通过4个特征值来推断属于哪一种鸢尾花。
3.切分数据集
把数据集做切分,按8:2比例切,80%用来训练,20%用来预测
# 按8:2进行数据切分
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2)
4.模型训练
# 模型训练
clf = KNeighborsClassifier()
clf.fit(X_train, y_train)
5.结果预测
# 预测
X_pred = clf.predict(X_test)
print("X_test长度:", len(X_test))
print("X_Pred长度:", len(X_pred))
print("预测结果:", X_pred)
可以看到,30个特征值预测了30个结果。接下来看看30个结果的准确率有多高(就是了y_test进行对比):
# 预测准确率
acc = sum(X_pred == y_test) / X_pred.shape[0]
print("预测的准确率:%.3f" % acc)
解释一下:X_pred.shape[0] 就是结果总数30. X_pred.shape的结果是(30, 1),那么shpae[0]就是30.
**6. 模型评分
# 模型评分
scoreK = clf.score(X_test, y_test)
print("模型评分:", scoreK)