【机器学习实战入门项目】基于机器学习的鸢尾花分类项目
基于机器学习的鸢尾花分类项目
介绍:
本项目利用机器学习模型对鸢尾花进行分类。鸢尾花数据集是一个著名的机器学习数据集,包含三种类别的花朵:Setosa、Versicolor和Virginica,每种类别由四个特征描述:萼片长度、萼片宽度、花瓣长度和花瓣宽度。
什么是机器学习?
机器学习是关于从数据中学习预测或提取知识的过程。它是人工智能的一个子领域。机器学习算法基于样本数据(即训练数据)构建模型,并根据训练数据对新数据进行预测。
机器学习的类别:
- 监督学习:基于带有正确输出标签的已标注训练数据进行训练。
- 无监督学习:不基于标签数据进行学习,而是从无标签数据中学习模式,通常用于聚类分析。
- 半监督学习:介于监督学习和无监督学习之间,使用少量标注数据和大量未标注数据进行训练。
机器学习的应用:
- 语音识别:利用自然语言处理(NLP)将人类语音转换为文本,反之亦然。例如:Google Assistant、Alexa、Siri。
- 推荐引擎:根据用户的历史行为和搜索数据,推荐新产品或内容。例如:亚马逊产品推荐、Spotify音乐推荐。
- 聊天机器人:在无需人工代理的情况下提供客户服务,根据用户提问给出回答。
方法:
本项目将采用监督学习方法,使用称为“支持向量机”(SVM)的算法进行分类。
先决条件:
- 库:NumPy、Matplotlib、Seaborn、Pandas、Scikit-learn
鸢尾花分类步骤:
-
加载数据:
- 使用Pandas加载数据集。
import pandas as pd columns = ['Sepal length', 'Sepal width', 'Petal length', 'Petal width', 'Class_labels'] df = pd.read_csv('iris.data', names=columns) print(df.head())
-
分析和可视化数据:
- 进行基本的统计分析。
print(df.describe())
- 使用Seaborn可视化数据。
import seaborn as sns sns.pairplot(df, hue='Class_labels')
- 绘制各类别的特征平均值图。
import matplotlib.pyplot as plt import numpy as np # 绘制平均值的代码
- 进行基本的统计分析。
-
模型训练:
- 将数据划分为训练集和测试集。
from sklearn.model_selection import train_test_split X_train, X_test, y_train, y_test = train_test_split(X, Y, test_size=0.2)
- 使用SVM算法训练模型。
from sklearn.svm import SVC svn = SVC() svn.fit(X_train, y_train)
- 将数据划分为训练集和测试集。
-
模型评估:
- 在测试集上进行预测。
predictions = svn.predict(X_test)
- 计算模型的准确率。
from sklearn.metrics import accuracy_score print("准确率:", accuracy_score(y_test, predictions))
- 生成详细的分类报告。
from sklearn.metrics import classification_report print(classification_report(y_test, predictions))
- 在测试集上进行预测。
-
测试模型:
- 对新的、未见数据进行预测。
X_new = np.array([[3, 2, 1, 0.2], [4.9, 2.2, 3.8, 1.1], [5.3, 2.5, 4.6, 1.9]]) prediction = svn.predict(X_new) print("预测的物种:", prediction)
- 对新的、未见数据进行预测。
-
保存和加载模型:
- 使用pickle保存训练好的模型。
import pickle with open('SVM.pickle', 'wb') as f: pickle.dump(svn, f)
- 加载模型以供 future 使用。
with open('SVM.pickle', 'rb') as f: model = pickle.load(f) print(model.predict(X_new))
- 使用pickle保存训练好的模型。
总结:
本项目展示了使用SVM算法构建机器学习模型对鸢尾花进行分类的过程。涵盖了数据加载、分析、模型训练、评估和部署。该模型在分类准确率上达到了96%以上,证明了其在根据萼片和花瓣测量值分类鸢尾花方面的有效性。
彩蛋数据介绍:
数据集特征
- 数据类型: 表格型数据
- 学科领域: 生物学
- 相关任务: 分类
- 特征类型: 实数型
- 实例数量: 150
- 特征数量: 4
数据集信息
- 实例代表什么: 每个实例代表一种植物。
- 附加信息: 该数据集是最早用于评估分类方法的数据集之一,来自费舍尔1936年的研究。数据集包含3类,每类50个实例,其中一类与其他两类线性可分,而其他两类之间不可线性分离。
- 预测属性: 鸢尾花的种类(Iris Setosa, Iris Versicolour, 或 Iris Virginica)。
- 是否有缺失值: 没有。
变量表
变量名称 | 角色 | 类型 | 描述 | 单位 | 缺失值 |
---|---|---|---|---|---|
花萼长度 | 特征 | 连续型 | 花萼的长度 | 厘米 | 无 |
花萼宽度 | 特征 | 连续型 | 花萼的宽度 | 厘米 | 无 |
花瓣长度 | 特征 | 连续型 | 花瓣的长度 | 厘米 | 无 |
花瓣宽度 | 特征 | 连续型 | 花瓣的宽度 | 厘米 | 无 |
种类 | 目标 | 分类型 | 鸢尾花的种类 | 无 |
数据集文件
- bezdekIris.data: 4.4 KB
- iris.data: 4.4 KB
- iris.names: 2.9 KB
- Index: 105 Bytes
引用论文
- 论文标题: The Iris data set: In search of the source of virginica
- 作者: A. Unwin, K. Kleinman
- 发表年份: 2021
- 发表期刊: Significance
注意事项
- 第35个样本应为:4.9,3.1,1.5,0.2,“Iris-setosa”,错误出现在第四个特征。
- 第38个样本应为:4.9,3.6,1.4,0.1,“Iris-setosa”,错误出现在第二个和第三个特征。
通过以上信息,您可以更好地理解和使用该数据集进行研究和分析。
鸢尾花分类项目
数据集
https://archive.ics.uci.edu/ml/datasets/Iris
源代码
https://data-flair.training/blogs/iris-flower-classification/