KNN算法案例-鸢尾花分类
- 因为气候不同,造就性不同,统计鸢尾花的关键特征数据:花萼长度、花萼宽度、花瓣长度,花瓣宽度
- 植物学家划分:
- setosa(中文名:山鸢尾)
- versicolor(中文名:杂色鸢尾)
- virginica(中文名:弗吉尼亚鸢尾)
- 鸢尾花数据集中每个样本包含有四个特种(花萼长度、花萼宽度、花瓣长度,花瓣宽度),用于对鸢尾花的分类
2 KNN算法建模
- 加载数据
- 数据预处理,拆分
- 声明算法,给定超参数k
- 训练算法,拟合数据,归纳规律
- 算法应用,样本预测
首先我们需要导入包
from sklearn import datasets # 数据集
from sklearn.neighbors import KNeighborsClassifier # 分类
from sklearn.model_selection import train_test_split # 数据集拆分
3 实现
3.1 加载数据
# 获取到数据集
datasets.load_iris()
我们会获取到两组数据:
数据说明:
X :存储的是鸢尾花的四个特征值(花萼长度、花萼宽度、花瓣长度,花瓣宽度)
y : 存储的是鸢尾花的分类:- setosa(中文名:山鸢尾),versicolor(中文名:杂色鸢尾),virginica(中文名:弗吉尼亚鸢尾)
x:
y:
3.1.1 给x,y的数据进行赋值:
# X 表示数据,y 表示目标值
X, y = datasets.load_iris(return_X_y=True) # return_X_y值输出x,y
display(X, y)
3.2 数据拆分
# train 训练数据 ,test 测试数据集
X_train, X_test, y_train, y_test = train_test_split(X, y, # 表示要拆分的数据
test_size=0.2, # 拆分的比例,测试数据的比例
random_state=1024 # 固定了随机状态,为了固定拆分的方式
)
# 查看拆分的形状
display(X_train.shape, X_test.shape, y_train.shape, y_test.shape)
3.3 算法建模、拟合、训练
model = KNeighborsClassifier(n_neighbors=5)
model.fit(X_train, y_train) # 建模、拟合、训练
3.4 算法预测
y_ = model.predict(X_test)
y_ # 预测值
print('保留的测试数据', y_test)
对预测的值和真实的值进行对比
3.5 准确率的计算
(y_ == y_test).mean()
model.score(X_test,y_test)