鸢尾花种类预测(案例)

简介

使用经典的鸢尾花案例,来梳理一下机器学习的流程。

数据集介绍

在这里插入图片描述
Iris数据集:

  • 属性4个:
  1. sepal length (萼片长度)
  2. sepal width (萼片宽度)
  3. petal length (花瓣长度)
  4. petal width (花瓣宽度)
  • 类别3个:
    Setosa、Versicolour、Virginica

  • 样本数量:150个(每类50个)

步骤分析

1. 获取数据

a. scikit-learn 加载:sklearn.datasets.load_iris()
b. 下载导入:先下载,再读取。(下载位置
这里就直接用 sklearn.datasets 加载鸢尾花数据集了。

from sklearn.datasets import load_iris
iris = load_iris()

我们可以查看一下 iris 数据:
特征值:

iris.data

截取前五行展示,因为 iris.data.shape为 (150, 4) ,共150行显示不完。
在这里插入图片描述
目标值:

iris.target

在这里插入图片描述

2. 数据基本处理

随机的将数据集划分成训练集和测试集。
借助API划分 :sklearn.model_selection.train_test_split

from sklearn.model_selection import train_test_split

把特征值数据和目标值数据作为参数传递进 train_test_split(),将返回:训练集特征值、测试集特征值、训练集目标值、测试集目标值

x_train, x_test, y_train, y_test = train_test_split(iris.data, iris.target)

3. 特征工程

虽然数据里的几个特征单位都是 cm,但是数值大小在 0-10 范围内。为了便于计算,我们对数据进行标准化处理,使数据转换到均值为 0、标准差为 1 的范围内。
标准化 API:sklearn.preprocessing.StandardScaler

from sklearn.preprocessing import StandardScaler

实例化一个转换器类。

transfer = StandardScaler()

计算参数(平均值、标准差)和转换数据:对训练集特征值和测试集特征值标准化处理。

x_train = transfer.fit_transform(x_train)
x_test = transfer.transform(x_test)
部分原始数据标准化处理后
在这里插入图片描述在这里插入图片描述

4. 机器学习

使用 k 近邻算法 (KNN) 对训练数据进行训练,并对鸢尾花类别进行预测。
相关API:sklearn.neighbors.KNeighborsClassifier
首先导入相关模块:

from sklearn.neighbors import KNeighborsClassifier

实例化一个预估计器类 (这里直接使用默认的参数了,n_neighbors=5, weights=‘uniform’, algorithm=‘auto’)
(邻居数:5;邻域所有点的权重:均匀相等;用于计算最近邻居的算法:自动选择)

estimator = KNeighborsClassifier()

训练特征值和目标值

estimator.fit(x_train, y_train)

5. 模型评估

评价一个模型怎么样,容易想到的就是,比较一下模型预测的结果和实际结果是否相等。

predict = estimator.predict(x_test)
print(predict == y_test)

在这里插入图片描述
更直观的,通过计算准确率来评估。

estimator.score(x_test, y_test)

本次运行得到的结果为:0.9736842105263158。
由于划分数据集是随机的,且样本的数量只有150个,所以如果多次运行结果会不一样。

总结

本次案例主要目的是梳理基本实现流程,有兴趣的可以使用其他数据集或算法,补充加强对数据处理、模型的调优等具体流程。

  • 3
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值