Python机器学习之旅|手把手带你探索IRIS数据集

2020-05-12 09:31:31 浏览数 (1)

前言

大家好,关于数据挖掘或者机器学习的理论我想大家应该都已经了解很多,而数据挖掘的工具例如PandasNumPySklearn等在历史文章都有所介绍,因此今天我们将开始第二个案例实战也是使用非常多的IRIS数据集:根据花瓣和花萼的长宽预测鸢尾花的种类。

加载数据

首先我们打开Jupyter Notebook导入相关库

代码语言:javascript复制
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条记录用来评估模型

代码语言:javascript复制
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行代码即可完成训练模型和评估

代码语言:javascript复制
model = KNeighborsClassifier()
model.fit(x_train,y_train)
predictions = model.predict(x_test)
print(accuracy_score(y_test, predictions))

其他三种算法的实现过程也是类似的,最后我们来看来四种算法的正确率

从结果可以看到,KNN的效果最好为90%,而基于决策树的随机森林表现较差为83.3%,当然由于随机性每次的结果可能不同,感兴趣的读者可以多试几次。

0 人点赞