KNN算法案例-鸢尾花分类

KNN算法案例-鸢尾花分类

KNN算法案例-鸢尾花分类_第1张图片

  • 因为气候不同,造就性不同,统计鸢尾花的关键特征数据:花萼长度、花萼宽度、花瓣长度,花瓣宽度
  • 植物学家划分:
    • 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:
KNN算法案例-鸢尾花分类_第2张图片
y:
KNN算法案例-鸢尾花分类_第3张图片

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)

对预测的值和真实的值进行对比
KNN算法案例-鸢尾花分类_第4张图片

3.5 准确率的计算

(y_ == y_test).mean()
model.score(X_test,y_test)

KNN算法案例-鸢尾花分类_第5张图片

你可能感兴趣的:(机器学习,算法,分类,数据挖掘)