python机器学习项目 2:IRIS 数据集(21)

作者 : 慕源网 本文共3563个字,预计阅读时间需要9分钟 发布时间: 2021-10-23 共591人阅读

本文是Python 机器学习系列的一部分。您可以在此处找到本系列之前所有帖子的链接

介绍

本章演示了使用 IRIS 数据集的机器学习应用程序。

IRIS Dataset

Iris数据集是著名的小型数据库,用于更容易的可视化和分析技术。

1. 环境设置

  • 下载并安装Anaconda navigator,它为科学编程和数据分析师分发了多种集成开发环境,无需使用任何命令行命令。
  • spyder IDE 为数据分析提供了更好的交互式编辑和调试工具。
  • 检查已安装或未安装的必要库及其版本。
import pandas    
print('pandas version is: {}'.format(pandas.__version__))    
import numpy    
print('numpy version is:{}'.format(numpy.__version__))    
import seaborn    
print('seaborn version is{}'.format(seaborn.__version__))    
import sklearn    
print('sklearn version is:{}'.format(sklearn.__version__)) 

 2. 加载和理解数据

  • Pandas 是一个 Python 包,可为关系型或标记型数据库提供快速灵活的数据分析。
  • 在加载数据集之前,您应该将数据集存储在 spyder 工作目录中。

2.1 加载数据集

#load dataset    
import pandas as PD    
iris=pd.read_csv('Iris.csv') 

2.2 理解数据集

在这里,我们将做一些任务来了解数值数据是如何分类的。

 

2.2.1 预览数据

让我们来看看鸢尾花数值数据属于它们的四个物种。您可以看到物种的前 15 个数字行。如果数据集包含三种类型的花集,称为 Iris virginica、Versicolor 和 iris Sentosa。这三种花的特征与其物种一起测量。

#preview data    
print(iris.head(15))   

2.2.2 数据集描述

让我们看一下每个 iris 实例属性的摘要。

#Description of Data    
print(iris.describe())

如果用计数、最小值、平均值、最大值和百分位数来衡量虹膜物种的四个特征。

2.2.3 类说明

现在是查看数据框包含多少个实例的时候了。

#Flower distribution    
print(iris.groupby('iris').size())   

如果数据集包含具有 150 个实例的三个类,并且其整个实例通过其特征测量为数值。

2.2.4 数据的Shape 

shape 属性为我们提供了寻找花实例的全部数量。

#Data Shape    
print(iris.shape)   

有一个数据框在 5 列下包含 150 个样本。

3. 数据可视化

  • 可视化技术提供虹膜种类和特征的图像表示。它用于确定 X 和 Y 变量(因变量和自变量)之间的相关性。
  • 现在,我们将以两种方式可视化数据集,例如 Boxplot 和成对联合图分布(散点图)。

3.1 箱线图

  • 该图表示数据分布的形状及其上下四分位数。
  • Iris Species(鸢尾数据集)可能以很少的箱线图标准方式显示,例如平均值、中位数和偏差。
#Boxplot    
plt.figure(figsize=(15,10))    
plt.subplot(2,2,1)    
sns.boxplot(x='iris',y='sepallength',data=iris)    
plt.subplot(2,2,2)    
sns.boxplot(x='iris',y='sepalwidth',data=iris)    
plt.subplot(2,2,3)    
sns.boxplot(x='iris',y='petallength',data=iris)    
plt.subplot(2,2,4)    
sns.boxplot(x='iris',y='petalwidth',data=iris)   

3.2 配对图

配对图用于计算单个变量的分布以及两个变量之间的关系。如果对配对图给出了一个解决方案,作为对单个图形中每个花集的清晰理解。每朵花散布以不同颜色表示的图。

#Pairwise joint plot (scatter matrix)    
sns.pairplot(iris, hue='iris', size=3, diag_kind="kde")    
sns.pairplot(iris,hue='iris') 

在这里,也出现了一些重叠的数据点。

4.训练和验证数据(机器学习)

在这里,我们将数据集分成两部分用于验证过程,例如训练数据和测试数据。然后分配 80% 的数据用于训练任务,其余 20% 用于验证目的。

#dataset spliting    
array = iris.values    
X = array[:,0:4]    
Y = array[:,4]    
validation_size = 0.20    
seed = 7    
X_train, X_validation, Y_train, Y_validation = cross_validation.train_test_split(X, Y, test_size=validation_size,     
random_state=seed)    
 #k=10    
num_folds = 10    
num_instances = len(X_train)    
seed = 7    
scoring = 'accuracy'  

4.1 训练模型(Modeling)

  • 现在,是时候确定最合适的算法来获得有效的准确性了。
  • 在这里,我们将评估五种著名的常用算法,例如
  1. 线性回归算法
  2. 逻辑回归
  3. 决策树分类器
  4. 高斯朴素基
  5. 支持向量机
#evaluate model to determine better algorithm    
models = []    
models.append(('LR', LogisticRegression()))    
models.append(('LDA', LinearDiscriminantAnalysis()))    
models.append(('CART', DecisionTreeClassifier()))    
models.append(('NB', GaussianNB()))    
models.append(('SVM', SVM()))    
    
results = []    
names = []    
for name, model in models:    
    kfold = cross_validation.KFold(n=num_instances, n_folds=num_folds, random_state=seed)    
    cv_results = cross_validation.cross_val_score(model, X_train, Y_train, cv=kfold, scoring=scoring)    
    results.append(cv_results)    
    names.append(name)    
    msg = "%s: %f (%f)" % (name, cv_results.mean(), cv_results.std())    
    print(msg)   

支持向量机模型出现了很高的准确率。

4.2 算法对比

您还可以通过算法比较图发现更好的准确性。

#choose best one model trough graphical representation    
plt.figure(figsize=(15,10))    
fig = plt.figure()    
fig.suptitle('Differentiate algorithms')    
ax = fig.add_subplot(111)    
plt.boxplot(results)    
ax.set_xticklabels(names)    
plt.show() 

5.  验证数据(预测)

让我们通过验证来预测一个值。

#pretiction    
svn = SVM()    
svn.fit(X_train, Y_train)    
predictions = svn.predict(X_validation)    
print(accuracy_score(Y_validation, predictions))    
print(confusion_matrix(Y_validation, predictions))    
print(classification_report(Y_validation, predictions))  

测试新数据。

#verify new data    
X_new = numpy.array([[3, 2, 4, 0.2], [  4.7, 3, 1.3, 0.2 ]])    
print("X_new.shape: {}".format(X_new.shape))  

验证预测

#validate    
prediction = svn.predict(X_new)    
print("Prediction of Species: {}".format(prediction))  

结论

因此,在本章中,您学习了如何使用 IRIS 数据集构建应用程序。


慕源网 » python机器学习项目 2:IRIS 数据集(21)

常见问题FAQ

程序仅供学习研究,请勿用于非法用途,不得违反国家法律,否则后果自负,一切法律责任与本站无关。
请仔细阅读以上条款再购买,拍下即代表同意条款并遵守约定,谢谢大家支持理解!

发表评论

开通VIP 享更多特权,建议使用QQ登录