机器学习入门/最简单的机器学习项目——茸尾花(Iris Flower )分类

本文详细介绍了机器学习项目的一般步骤,包括数据导入、数据概览、可视化、算法评估和预测实施。通过使用各种数据可视化工具和统计方法,如散点矩阵、箱线图和直方图,对数据进行深入分析。同时,运用多种分类算法如逻辑回归、决策树、KNN、LDA、GaussianNB和SVM,并通过10折交叉验证评估其性能,最终选择SVM作为最优模型。
摘要由CSDN通过智能技术生成

机器学习

机器学习项目步骤

( 1 )导入数据。( 2)概述数据。( 3)数据可视化。( 4)评估算法。( 5)实施预测。

导入数据

#导入类库
from pandas import read_csv 
from pandas.plotting import scatter_matrix 
from matplotlib import pyplot 
from sklearn.model_selection import train_test_splat
from sklearn.model_selection import KFold 
from sklearn.model_selection import cross_val_score
from sklearn.metrics import classification_report 
from sklearn.metrics import confusion_matrix 
from sklearn.metrics import accuracy_score 
from sklearn.linear_model import LogisticRegression
from sklearn.tree import DecisionTreeClassifier 
from sklearn.discriminant_analysis import LinearDiscriminantAnalysis 
from sklearn.neighbors import KNeighborsClassifier 
from sklearn.naive_bayes import GaussianNB 
from sklearn.svm import SVC
#导入数据
filename ='iris.data.csv' 
names = ['separ-length','separ-width','petal-length','petal-width', 'class'] 
dataset = read_csv(filename, names=names) 


概述数据

1.从以下几个角度来审查数据:( 1 )数据的维度。(2)查看数据自身。
(1)数据维度:通过查看数据的维度,可以对数据集有一个大概的了解,如数据集中有多少行数据、数据有几个属性等。
(2)查看数据自身也是一个很好的理解数据的方法,通过查看数据可以直观地看到数据的特征、数据的类型,以及大概的数据分布范围等。
2.统计描述数据
数据特征的统计描述信息包括数据的行数、中位值、最大值、最小值、均值、四分位值等统计数据信息。
3.数据分类分布
看数据在不同分类的分布情况,执行程序后得到的将是每个分类数据量的绝对的数值,看一下各个分类的数据分布是否均衡。
当数据分布不平衡时,需要对数据进行处理,调整数据到相对平衡的状态。调整数据平衡时有以下几种方法:

·扩大数据样本:这是一个容易被忽视的选择。一个更大的数据集,就有可能挖掘出不同的或许更平 衡的方面提高算法模型的准确度。

·数据的重新抽样:过抽样(复制少数类样本)和欠抽样(删除多数类样本)。当数据量很大时可以考虑测试欠抽样(大于一万条记录),当数据量比较少时可以考虑过抽样。

·尝试生成人工样本:一种简单的生成人工样本的方法是从少数类的实例中随机抽样特征属性,生成更多的数据。

·异常检测和变化检测:尝试用不同的观点进行思考,以解决问题。异常检测是对罕见事件的检测。这种思维的转变在于考虑以小类作为异常值类,它可以帮助获得一种新方法来分离和分类样本。

#显示数据维度
print('数据维度:行%s,列%s' % dataset.shape)
#查看数据的前10行
print (dataset.head (10))
#统计描述数据信息
print(dataset.describe())
#分类分布情况
print(dataset.groupby('class').size())

数据可视化

通过对数据集的审查,对数据有了一个基本的了解,接下来将通过图表来进一步查看数据特征的分布情况和数据不同特征之间的相互关系。
·使用单变量图表可以更好地理解每一个特征属性。
·多变量图表用于理解不同特征属性之间的关系。

单变量图表

单变量图表可以显示每一个单独的特征属性,因为每个特征属性都是数字,因此我们可以通过箱线图来展示属性与中位值的离散速度。

#籍线图
dataset.plot(kind='box',subplots=True, layout=(2,2), sharex=False, sharey=False)
pyplot.show()
#直方图
dataset.hist() 
pyplot.show()
多变量图表

通过多变量图表可以查看不同特征属性之间的关系。我们通过散点矩阵图来查看每个属性之间的影响关系。

#散点矩阵图
scatter_matrix(dataset) 
pyplot.show()

评估算法

通过不同的算法来创建模型,并评估它们的准确度,以便找到最合适的算法。将按照下面的步骤进行操作:( 1 )分离出评估数据集。(2)采用10折交叉验证来评估算法模型。( 3)生成6个不同的模型来预测新数据。( 4)选择最优模型。
(1)分离出评估数据集
模型被创建后需要知道创建的模型是否足够好。在选择算法的过程中会采用统计学方法来评估算法模型。但是,我们更想知道算法模型对真实数据的准确度如何,这就是保留一部分数据来评估算法模型的主要原因 。

#按照 80%的训练数据集 , 20%的评估数据集来分离数据。
 array = dataset.values
X = array[ : , 0: 4]
Y = array[:, 4]
validation_size = 0.2
seed = 7
X_train, X_validation, Y_train, Y_validation = \
train_test_split(X, Y, test_size=validation_size,
random_state=seed)
#现在就分离出了X_train和Y_train用来训练算法创建模型,x_validation和Y_validation在后面会用来验证评估模型。

(2)采用10折交叉验证来评估算法模型
10折交叉验证是随机地将数据分成10份:9份用来训练模型,1份用来评估算法。后面会使用相同的数据对每一种算法进行训练和评估,并从中选择最好的模型。
(3)生成6个不同的模型来预测新数据
接下来评估六种不同的算法:线性回归(LR)、线性判别分析(LDA)、 K近邻(KNN)、分类与回归树(CART)、贝叶斯分类器(NB)、·支持向量机(SVM)。

#算法审查
models={} 
models['LR']= LogisticRegression() 
models['LDA'] = LinearDiscriminantAnalysis() 
models['KNN'] = KNeighborsClassifier() 
models['CART'] = DecisionTreeClassifier() 
models['NB'] = GaussianNB() 
models['SVM'] = SVC() 
#评估算法
results = {}
for key in models:
	kfold = KFold(n_splits=lO,random_state=seed) 
	cv_results = cross_val_score(models[key], X_train,
	 Y_train, cv=kfold, scoring='accuracy') 
	 results.append(cv_results) 
	 print('%s:%f (%f)' %(key,cv_results.mean(), 
	 cv_results.std()))

(4)选择最优模型。
执行上面代码,查看结果
可通过创建箱线图,通过图表比较算法评估结果

#箱线图比较算法
fig = pyplot.figure() 
fig.suptitle ('Algorithm Comparison')
ax= fig.add_subplot(lll) 
pyplot.boxplot(results) 
ax.set_xticklabels(models.keys()) 
pyplot.show()

实施预测

评估的结果显示,支持向量机(SVM)是准确度最高的算法。然后使用预留的评估数据集来验证这个算法模型。这将会对生成的算法模型的准确度有一个更加直观的认识。

#使用评估数据集评估算法
svm = SVC() 
svm.fit(X=X_train, y=Y_train) 
predictions= svm.predict(X_validation) 
print(accuracy_score(Y_validation,predictions)) print(confusion_matrix(Y_validation, predictions)) print(classification_report(Y_validation, predictions)) 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
深度学习是一种机器学习的方法,通过建立深度神经网络来对复杂的数据进行学习与识别。鸾尾花,又称虞美人,是一种常见的花卉,其花瓣颜色和形状多样,因此通过深度学习来识别鸾尾花是可行的。 实现深度学习识别鸾尾花的一般步骤如下: 1. 数据收集:收集鸾尾花的图像数据,包括不同颜色和形状的花朵图像。可以通过网络搜索或者在现实生活中采集数据。 2. 数据预处理:对收集到的图像数据进行预处理,包括图像缩放、去除噪声、增强对比度等操作,以便更好地提取特征。 3. 模型建立:建立深度神经网络模型,可以使用常见的深度学习框架,如TensorFlow或PyTorch。根据数据集的大小和复杂度,可以选择不同的网络结构,如卷积神经网络(CNN)或递归神经网络(RNN)等。 4. 训练模型:使用预处理后的数据集来训练深度神经网络模型。通过不断迭代、反向传播和优化算法,优化模型参数,使得模型能够更准确地区分不同的鸾尾花图片。 5. 模型测试与评估:使用测试集来测试训练好的模型的准确度和性能。评估指标可以选择准确率、召回率等。 6. 预测与应用:将训练好的模型应用于新的鸾尾花图片上,通过模型输出预测结果来识别鸾尾花。 通过深度学习识别鸾尾花,能够提高识别的准确率和效率,且可以应用于实际情境,包括园艺学研究、植物保护、花卉市场等领域。但需要注意的是,深度学习模型的训练需要大量标注好的数据集和计算资源,且模型过于复杂可能会带来过拟合等问题,因此需要权衡选择合适的模型和参数。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小零呦

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值