python鸢尾花iris机器学习分类器分类

1.简介

这篇文章主要是介绍了python基于sklearn库使用不同的机器学习分类器对鸢尾花iris数据集进行分类。


2.iris数据集

鸢尾花数据集一共150个样本,其中:

  • 特征data的维度为150*4,行数150代表样本数,列数4代表特征数,包含花萼长度、花萼宽度、花瓣长度、花瓣宽度四个特征。

  • 标签target的维度为150*1,代表了不同的种类,0代表setosa,1代表versicolor,2代表virginica(三个不同的种类)。


3.分类器

一共使用了11个分类器,分别是

  • KNN(KNeighborsClassifier

  • 逻辑回归(LogisticRegression

  • 决策树(DecisionTreeClassifier

  • 梯度提升(GradientBoostingClassifier

  • AdaBoost(AdaBoostClassifier

  • 随机森林(RandomForestClassifier

  • 高斯朴素贝叶斯(GaussianNB

  • 多项式朴素贝叶斯(MultinomialNB

  • 线性判别分析(LinearDiscriminantAnalysis

  • 二次判别分析(QuadraticDiscriminantAnalysis

  • 支持向量机(SVC


4.代码

# 引入库
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
from sklearn.neighbors import KNeighborsClassifier
from sklearn.linear_model import LogisticRegression
from sklearn.tree import DecisionTreeClassifier
from sklearn.ensemble import GradientBoostingClassifier, AdaBoostClassifier, RandomForestClassifier
from sklearn.naive_bayes import GaussianNB, MultinomialNB
from sklearn.discriminant_analysis import LinearDiscriminantAnalysis, QuadraticDiscriminantAnalysis
from sklearn.svm import SVC

# 加载数据集
iris_dataset = load_iris()

# 划分训练集与测试集
X_train, X_test, y_train, y_test = train_test_split(iris_dataset['data'], iris_dataset['target'])

# 使用不同的分类器(均使用默认参数)

# KNN
clf = KNeighborsClassifier()
clf.fit(X_train, y_train)
print('KNN accuracy:', clf.score(X_test, y_test))

# 逻辑回归
clf = LogisticRegression()
clf.fit(X_train, y_train)
print('逻辑回归 accuracy:', clf.score(X_test, y_test))

# 决策树
clf = DecisionTreeClassifier()
clf.fit(X_train, y_train)
print('决策树 accuracy:', clf.score(X_test, y_test))

# 梯度提升
clf = GradientBoostingClassifier()
clf.fit(X_train, y_train)
print('梯度提升 accuracy:', clf.score(X_test, y_test))

# AdaBoost
clf = AdaBoostClassifier()
clf.fit(X_train, y_train)
print('AdaBoost accuracy:', clf.score(X_test, y_test))

# 随机森林
clf = RandomForestClassifier()
clf.fit(X_train, y_train)
print('随机森林 accuracy:', clf.score(X_test, y_test))

# 高斯朴素贝叶斯
clf = GaussianNB()
clf.fit(X_train, y_train)
print('高斯朴素贝叶斯 accuracy:', clf.score(X_test, y_test))

# 多项式朴素贝叶斯
clf = MultinomialNB()
clf.fit(X_train, y_train)
print('多项式朴素贝叶斯 accuracy:', clf.score(X_test, y_test))

# 线性判别分析
clf = LinearDiscriminantAnalysis()
clf.fit(X_train, y_train)
print('线性判别分析 accuracy:', clf.score(X_test, y_test))

# 二次判别分析
clf = QuadraticDiscriminantAnalysis()
clf.fit(X_train, y_train)
print('二次判别分析 accuracy:', clf.score(X_test, y_test))

# 支持向量机
clf = SVC()
clf.fit(X_train, y_train)
print('支持向量机 accuracy:', clf.score(X_test, y_test))

5.结果

KNN accuracy: 0.9736842105263158
逻辑回归 accuracy: 0.9736842105263158
决策树 accuracy: 0.9736842105263158
梯度提升 accuracy: 0.9473684210526315
AdaBoost accuracy: 0.9210526315789473
随机森林 accuracy: 0.9210526315789473
高斯朴素贝叶斯 accuracy: 0.9210526315789473
多项式朴素贝叶斯 accuracy: 0.9473684210526315
线性判别分析 accuracy: 0.9736842105263158
二次判别分析 accuracy: 0.9473684210526315
支持向量机 accuracy: 0.9736842105263158

完整的代码可以在我的github上找到:lizhiTech/iris_machine_learning_classifier: python鸢尾花数据基于sklearn使用不同的机器学习分类器,包括KNN、逻辑回归、决策树、梯度提升、AdaBoost、随机森林、高斯朴素贝叶斯、多项式朴素贝叶斯、线性判别分析、二次判别分析、支持向量机 (github.com)

或者csdn下载:

我们也提供包括深度学习、计算机视觉、机器学习等其他方向的其他代码及辅导服务,有需求可以通过csdn私聊或github上的联系方式联系我们。

你可能感兴趣的:(机器学习,python,分类,sklearn)