Python机器学习之旅|手把手带你探索IRIS数据集
系列导读
前言
大家好,关于数据挖掘或者机器学习的理论我想大家应该都已经了解很多,而数据挖掘的工具例如Pandas、NumPy、Sklearn等在历史文章都有所介绍,因此今天我们将开始第二个案例实战也是使用非常多的IRIS数据集:根据花瓣和花萼的长宽预测鸢尾花的种类。
加载数据
首先我们打开Jupyter Notebook
导入相关库
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
from sklearn import model_selection
from sklearn.metrics import accuracy_score
from sklearn.linear_model import LogisticRegression
from sklearn.linear_model import LinearRegression
from sklearn.ensemble import RandomForestClassifier
from sklearn.neighbors import KNeighborsClassifier
from sklearn.svm import SVC
from pandas.plotting import scatter_matrix
接下来就是加载数据集,虽然在Sklearn库中内置了IRIS数据集,但是在这我使用处理好的数据
可以看到我们一共有150条数据,每条数据的前四列对应是花萼长度,花萼宽度,花瓣长度,花瓣宽度,最后一列就是花的种类,现在我们就需要通过这4个特征预测鸢尾花卉属于(iris-setosa/iris-versicolor/iris-virginica)中的哪一品种。
探索性分析
本节对数据集进行一些探索性分析,首先查看每一类的情况
可以看到我们的数据很完整,一共150条数据每类50条,再查看数据的描述统计
接着我们通过箱线图与直方图来观察数据的最值,中位数和偏差与数据分布
进一步,我们可以绘散点图来观察四个变量之间的关联
可以看到有些变量之前有着明显的相关性,因此我们可以进行预测
建模分类
现在开始建模分类,和之前的例子一样,我们将数据集划分为训练集和测试集。因为我们的数据集只有150条记录,所以将使用120条记录来训练模型,剩下的30条记录用来评估模型
array = data.values
X = array[:,0:4]
Y = array[:,4]
x_train, x_test, y_train, y_test = model_selection.train_test_split(X, Y, test_size=0.2, random_state=7)
用于分类的模型很多,本文将使用以下四种经典算法来建模并进行评估:
-
K近邻(KNN)
-
支持向量机(SVM)
-
随机森林(RF)
-
逻辑回归(LR)
关于这几种算法的理论并不会在本文详细展开,事实上可以通过百度轻松查到每一种算法的推导与应用,你应该了解后再往下进行。
OK,现在我们直接来实现,在Python中实现并不困难,以KNN为例,仅需4行代码即可完成训练模型和评估
model = KNeighborsClassifier()
model.fit(x_train,y_train)
predictions = model.predict(x_test)
print(accuracy_score(y_test, predictions))
其他三种算法的实现过程也是类似的,最后我们来看来四种算法的正确率
从结果可以看到,KNN的效果最好为90%,而基于决策树的随机森林表现较差为83.3%,当然由于随机性每次的结果可能不同,感兴趣的读者可以多试几次。
结束语
以上就是使用著名的IRIS数据集并使用分类算法创建和训练模型的全部过程,当然你也可以使用更大的数据集/不同的模型来进行训练。文中使用的数据可以在『早起Python』后台回复:ML获取。感兴趣的话一定要动手敲一遍代码!下一期将继续以这种形式来介绍经典的机器学习案例,如果你喜欢本系列的话请点个在看让我知道,拜拜~
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步