鸢尾花分类

鸢尾花分类

以前的机器学习之路是三天打鱼两天晒网的,导致现在学的不深入,今天重新开始学习

初识数据

鸢尾花数据是机器学习和统计学中经典的数据集,包含在scikir-learn的datasets中,使用load_iris函数加载数据

from sklearn.datasets import load_iris
iris_dataset=load_iris()
print("Keys of iris_dataset: \n{}".format(iris_dataset.keys()))

其中 load_iris返回iris对象的一个Bunch对象,里面包含有键和值,与字典非常相似
在这里插入图片描述
其中target_names键对应的值是一个字符串数据,里面包含所要预测的花的品种

print("Target names: {}".format(iris_dataset['target_names']))

在这里插入图片描述

数据包含在target和data字符你,其中data包含花萼长度与宽度,花瓣长度与宽度测量数据,其中data数据的每一行对应一朵花

iris_dataset['data'].shape

在这里插入图片描述通过shape函数得出总共有150朵不同的花的测量数据。
查看前五个样本的特称数值

iris_dataset['data'][:5]

在这里插入图片描述讲品种转化为从0-2的整数

print("Target: \n{}".format(iris_dataset['target']))

在这里插入图片描述这样做的目的是为了得出的预测结果方便转化为花的种类

接下来使用skikit-learn中的train_test_split函数将数据集打乱并拆分这个函数将75%的行数据及对应标签作为训练集,将剩下的25%的数据作为测试集
对数据调用train_test_split

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

查看训练集和测试集

print("X_train shape: {}".format(X_train.shape))
print("y_train shape: {}".format(y_train.shape))

在这里插入图片描述

构建K近邻分类算法

k近邻算分类算法在neigbors模块的KNeighborsClassifier类中实现,在这里需要将这个类实例化为一个对象,然后才能使用这个模型

from sklearn.neighbors import KNeighborsClassifier
knn=KNeighborsClassifier(n_neighbors=1)

接下来调用knn对象的fit方法,输入参数分本别为X_train,y_train

knn.fit(X_train,y_train)

在这里插入图片描述

做出预测

现在可以用这个模型对新数据进行预测了,假设新的鸢尾花花萼长度和宽度为5cm和2.9cm,花瓣长和宽为1cm和0.2cm,将数据存放在一个numpy数组中

import numpy as np
X_new=np.array([[5,2.9,1,0.2]])

将这朵花的测量数据转化为二维的numpy数组中的一行,因为scikit-learn的输入数据必须是二维数组
接下来调用knn对象的predict方法进行预测

prediction=knn.predict(X_new)
print("Preiction: {}".format(prediction))
print("Predicted target name : {}".format(iris_dataset['target_names'][prediction]))

在这里插入图片描述
根据模型预测,这朵花属于setosa品种。但是这个模型是否准确可靠我们并不清楚

评估模型

通过对测试数据中的每朵鸢尾花进行预测,并将预测结果与标签进行对比,通过计算精度(品种预测正确的花所占的比例)来衡量模型的好坏

y_pred=knn.predict(X_test)
print(np.mean(y_pred==y_test))

在这里插入图片描述
对于这个模型来说,测试集的精确度约为0.97,即有97%的准确率,模型足够可信,之前的预测结果也就相当可靠 了

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值