python机器学习项目 2:IRIS 数据集(21)
本文是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)
- 现在,是时候确定最合适的算法来获得有效的准确性了。
- 在这里,我们将评估五种著名的常用算法,例如
- 线性回归算法
- 逻辑回归
- 决策树分类器
- 高斯朴素基
- 支持向量机
#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 数据集构建应用程序。
常见问题FAQ
- 程序仅供学习研究,请勿用于非法用途,不得违反国家法律,否则后果自负,一切法律责任与本站无关。
- 请仔细阅读以上条款再购买,拍下即代表同意条款并遵守约定,谢谢大家支持理解!