python机器学习_(1)鸢尾花的分类

时间:2021-04-04 23:51:13

鸢尾花的分类是python机器学习中比较经典的一个入门式教学课程,
属于监督学习算法
包括四个方面,训练,测试,评估,评估
此次记录也适合从这四个方面出发
一:训练
利用已知的鸢尾花数据构建机器学习模型,用于预测新测量的鸢尾花的品种。
鸢尾花的数据哪里来呢?有一个开源项目叫做sciket-learn,里面有鸢尾花的150个数据集。
1.1安装sciket-learn

pip install sciket-learn

1.2安装必要的工具和库文件

pip install numpy scipy matplotlib ipython pandas

直接使用命令安装上述都是默认安装最新版本的软件,我这里安装完之后的版本分别是:
pandas:0.23.4 修改和操作表格的
matplotlib:2.2.3 将数据绘制成图像的
Numpy:1.15.2 用来科学计算的,就是将数据变换成自己想要的格式
SciPy:1.1.0 功能和Numpy差不多
IPython:5.8.0 没什么用
scikit-learn:1.1.0 导入鸢尾花数据的
1.3分配数据
上代码:

#coding=utf-8
import numpy as np
from sklearn.model_selection import train_test_split
from sklearn.datasets import load_iris
#导入三个库
iris_dataset = load_iris()
#加载iris_dataset数据集
trainData,testData,trainResult,testResult = train_test_split(iris_dataset["data"],iris_dataset["target"],random_state = 0)
#train_test_split函数将iris_dataset数据集中的['data']数据依据['target']标签分类为75%的训练集和25%的测试集。
#iris_dataset是一个字典类型的数据,有用6个key和对应的值,其中key分别为:['target', #'DESCR', 'target_names', 'feature_names', 'data', 'filename']
#可以尝试iris_dataset.keys()和iris_dataset.values()查看相应的数据,比如查看target_names标签对应的值可以写作:iris_dataset['target_names']

1.4构建算法

from sklearn.neighbors import KNeighborsClassifier
knn = KNeighborsClassifier(n_neighbors = 1)
knn.fit(trainData,trainResult)
#K近邻算法:算法会在训练集中寻找与这个新数据点距离最近的k个邻居,根据他们的类别做出预测。
#这里让knn进行大量的训练,拥有大量数据的累积后,使得knn拥有了一定预测新数据类型的能力。

二:测试与评估
此时的knn今时不同往日了,训练了那么多,是时候试试水了,但是不能贸然拿去用吧,还是先用测试集测试一下,刚刚分配数据集的时候不是还分配了25%的数据用来测试吗。试一试

testPrediction = knn.predict(testData)
#testData这些数据的类型是已知的---testResult,里面包含的是testData真实的结果,我们拿预测的结果和真实结果比对一下,就可以知道这个算法的预测准确的能力了吧。试一试
print "Test set score is :{:.2f}".format(np.mean(testPrediction == testResult))
#这样可以打印出testPrediction和testResult之间的差异比例

三:预测
用一组新的数据来试一试

newIRIS = [[5,2.0,1,0.2]]
#四个数据分别代表:花萼长度,花萼宽度,花瓣长度,花瓣宽度
#为什么用两个中括号括起来呢?因为knn.predict的数据数据必须是一个二维数组
a = knn.predict(newIRIS)
print a