基于深度学习的鸢尾花图像分类实验
转载
如果你也想自学深度学习,可以关注我。我会把踩过的坑分享给你,相关的教程以及配套的讲解 ,分享给大家:
https://edu.51cto.com/lesson/972293.html
鸢尾花分类
工具:jupyter notebook
目标:已有花瓣的长度和宽度以及花萼的长度和宽度的训练集,训练模型鉴定花是属于setosa、versicolor 或 virginica中的哪一种。
基础
已知测量数据,所以这是一个监督学习问题(从输入 / 输出对中进行学习的机器学习算法叫作监督学习算法)。在多个品种中选择一种,所以这是一个分类问题。每个品种称作一个类别,所以这又是一个三分类问题。对一个数据点来说,它的品种叫做标签。
模型
导入库import numpy as np import matplotlib.pyplot as plt import pandas as pd import mglearn1.2.3.4.导入数据集
鸢尾花的数据集在scikit-learn的datasets模块中,可以用load_iris函数直接加载数据:
from sklearn.datasets import load_iris # 导入数据集 iris_dataset = load_iris() # 加载数据 iris_dataset.keys() # 查看数据集中所有键值 iris_dataset['target'] # 查看该键值对应的数据1.2.3.4.训练数据与测试数据
我们可以将得到的数据分为训练数据和测试数据,前者用来训练模型,后者用来评估训练出的模型性能。利用 scikit-learn 中的 train_test_split可以打乱数据并集体进行拆分。(一般数据用大写的X,标签用小写的y)
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) X_train.shape # 看看形状,这里检验下分开的结果 y_train.shape1.2.3.4.5.6.7.观察数据
绘制散点图矩阵,数据点的颜色与鸢尾花的品种相对应。原书scatter_matrix已经弃用了,这里改用plotting.scatter_matrix。
# 利用X_train中的数据创建DataFrame # 利用iris_dataset.feature_names中的字 iris_dataframe = pd.DataFrame(X_train, columns=iris_dataset.feature_names) # 利用DataFrame创建散点图矩阵,按y_train着色 grr = pd.plotting.scatter_matrix(iris_dataframe, c=y_train, figsize=(15, 15), marker='o', hist_kwds={'bins': 20}, s=60, alpha=.8, cmap=mglearn.cm3) # scatter_matrix已经弃用了1.2.3.4.5.6.7.
构建模型:k近邻算法
考虑训练集中与新数据点最近的任意 k 个邻居(比如
说,距离最近的 3 个或 5 个邻居),而不是只考虑最近的那一个。然后,我们可以用这些
邻居中数量最多的类别做出预测。
from sklearn.neighbors import KNeighborsClassifier knn = KNeighborsClassifier(n_neighbors=1) # 考虑邻居为1的情况1.2.构建模型
想要基于训练集来构建模型,需要调用 knn 对象的 fit 方法,输入参数为 X_train 和 y_train,二者都是 NumPy 数组,前者包含训练数据,后者包含相应的训练标签
knn.fit(X_train, y_train)1.做出预测
输入一个样本,并且根据模型预测样本的标签。
X_new = np.array([[5, 2.9, 1, 0.2]]) X_new.shape1.2.
调用knn的predict方法进行预测:
对新样本进行预测:prediction = knn.predict(X_new) prediction iris_dataset['target_names'][prediction] #Out[]: #Prediction: [0] #Predicted target name: ['setosa']1.2.3.4.5.6.对测试集进行预测:
y_pred = knn.predict(X_test) y_pred1.2.评估模型
下面两种方法都可以用来计算精度来衡量模型的优劣:
np.mean(y_pred==y_test) # 预测正确率 knn.score(X_test, y_test) # 调用knn对象的score方法1.2.
如果你也想自学深度学习,可以关注我。我会把踩过的坑分享给你,相关的教程以及配套的讲解 ,分享给大家:
https://edu.51cto.com/lesson/972293.html
本文章为转载内容,我们尊重原作者对文章享有的著作权。如有内容错误或侵权问题,欢迎原作者联系我们进行内容更正或删除文章。
相关文章