最新版学习笔记—Python机器学习基础教程(1)Irises(鸢尾花)分类—附完整代码

最新版学习笔记—Python机器学习基础教程(1)Irises(鸢尾花)分类—附完整代码最新版学习笔记-Python机器学习基础教程(1)Irises(鸢尾花)分类-附完整代码_load_iris

开始学习机器学习基础,在此留下学习心得与自己的理解。
啥也不说,先看一下鸢尾花啥样
在这里插入图片描述
好看吧~~~~

1.环境搭建

python版本最好是3.6.x及以上,我这里用的是3.7.1版本
安装有机器学习库sklearn、numpy,若没有用pip安装

pip install sklearn
pip install numpy

用到的库和包

from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
from sklearn.neighbors import KNeighborsClassifier
import numpy as np

2.了解数据

2.1读取数据

首先,我们使用load_iris函数调用存储在scikit-learn的datasets模块中的Iris数据集。
运行代码如下:

from sklearn.datasets import load_iris
iris_data=load_iris()
  • 其中,load_iris返回的是一个Bunch对象,与字典相似,里面也包键和值
  • 从网站api上面爬取数据有一部分数据返回的也是Bunch对象

2.2查看数据

首先,我们先来看一下,这个数据集里面有多少个键,好为接下来处理数据做准备。
运行代码如下:

from sklearn.datasets import load_iris
iris_data =load_iris()
print(iris_data.keys())

输出结果:

dict_keys(['data', 'target', 'target_names', 'DESCR', 'feature_names', 'filename'])

可以看见有六个键,我们其实可以通过名字就能猜到每个键对应的值是什么。好比‘feature_names’一看就知道是特点的名字,也就是特征呗。所以有时候不需要我们每一个键都运行查看一下。
接下来,既然是学习,那么还是让我们看一下每一个键分别存储了哪些值吧
运行代码如下:

from sklearn.datasets import load_iris
iris_dataset =load_iris()
print(iris_dataset['data']\n)
print(iris_dataset['target']\n)
print(iris_dataset['target_names']\n)
print(iris_dataset['DESCR']\n)
print(iris_dataset['feature_names']\n)
print(iris_dataset['filename'])

输出如下:

[[5.1 3.5 1.4 0.2]
 .
 .
 .
 [6.2 3.4 5.4 2.3]
 [5.9 3.  5.1 1.8]]
 
[0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2 2 2 2
 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2
 2 2]
 
['setosa' 'versicolor' 'virginica']

DESCR的键对应的值是数据集的简要说明(这里就不显示了,太多了)

['sepal length (cm)', 'sepal width (cm)', 'petal length (cm)', 'petal width (cm)']

D:\Python37\lib\site-packages\sklearn\datasets\data\iris.csv

从输出的数据,我们可以看出:

  • data里面是花萼长度、花萼宽度、花瓣长度、花瓣宽度的测量数据,格式为NumPy数组
  • target数组包含的是测量过的每朵花的品种,品种被转换为0到2的整数,格式为NumPy数组
  • target_names键对应的值是一个字符串数组,里面包含我们要预测的花种
  • DESCR键对应的值是数据集的简要说明
  • feature_names键对应的值是一个字符串列表,对应一个特征进行了说明
  • filename键对应的值是数据集的存储位置

3.分离数据

我们想要利用这些数据构建一个机器学习的模型,但是我们不能将用于构建模型的数据用于评估模型,无法告诉我们模型的泛化能力如何(也就是说,在新数据上能否正确预测)
我们将收集好的带标签的数据分成两部分,一部分用于构建机器学习模型,叫训练数据、训练集;另一部分用于评估模型性能,叫测试数据、测试集或留出集.。

在这里,用scikit-learn的model_selection模块的train_test_split函数打乱数据集并进行拆分。
这个函数将75%的行数据及对应标签作为训练集,剩下25%的数据及其标签作为测试集。

  • scikit-learn中的数据通常用大写X表示,标签用小写y表示。
  • 这里受到数学标准公式启发,其中x是函数的输入,y是函数的输出。
  • 我们用大写的X是因为数据是一个二维矩阵,用小写y是因为目标是一维向量,这是数学中的约定

运行代码如下:

from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
iris_dataset =load_iris()
X_train,X_test,y_train,y_test=train_test_split(iris_dataset['data'],
	iris_dataset['target'],random_state=0)

其中,传入参数random_state指定了随机数生成器的种子。作用是每次运行这行代码,随机挑选出来的数据不再发生改变

4.构建模型(k临近算法)

scikit-learn中有许多可用的分类算法,这里我们用的是k临近分类器

  • 原理:要对一个新的数据点做出判断,算法会在训练集中寻找与这个新的数据点距离最近的数据点,然后将找到的数据点的标签赋给这个新的数据点.
  • k的含义:我们可以考虑训练集中与新数据点最近的任意k个邻居,而不是只考虑最近的那一个。

运行代码入下:

from sklearn.neighbors import KNeighborsClassifier
knn=KNeighborsClassifier(n_neighbors=1)#这里我们设置邻居的数目为1

knn对象对算法进行了封装,即包括用训练数据构建模型的算法,也包括对新数据点进行预测的算法。
想要基于训练集来构建模型,需要调用knn对象的fit()方法,传入参数为X_train和y_train,二者都是NumPy数组,前者为训练集,后者为训练集相对应的训练标签。
运行代码如下:

knn.fit(X_train,y_train)#构建模型

5.评估模型(计算测试集精度)

这里我们要用到之前分离的测试集。我们可以通过计算精度来和衡量模型的优劣。

  • 这里的精度指的是品种预测正确的的花所占的比例。

5.1方法一

我们先对测试数据中的每朵花进行预测,再将预测结果与标签(已知品种)进行对比。
运行代码如下:

import numpy as np
y_pred=knn.predict(X_test)
score = np.mean(y_pred==y_test)
print("{:.2f}".format(score))

输出:

0.97

5.2方法二

直接用knn对象的score方法来计算测试集的精度。运行代码如下:

score=knn.score(X_test,y_test)
print("{:.2f}".format(score))

输出:

0.97

在这里插入图片描述

  • 完整代码在配套资源里面
  • 有不懂得地方和问题请留言
  • 大家可以收藏一下以后学习可能用得到

今天的文章最新版学习笔记—Python机器学习基础教程(1)Irises(鸢尾花)分类—附完整代码分享到此就结束了,感谢您的阅读。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/89010.html

(0)
编程小号编程小号

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注