当前位置:   article > 正文

机器学习鸢尾花各种模型准确率对比

机器学习鸢尾花各种模型准确率对比

流程

  1. 获取数据集
  2. 导入需要的包
  3. 读取数据
  4. 划分训练集和测试集
  5. 调用各种模型
  6. 比较准确率

获取数据集

链接:https://pan.baidu.com/s/1RzZyXsaiJB3e611itF466Q?pwd=j484 
提取码:j484 
--来自百度网盘超级会员V1的分享

  • 1
  • 2
  • 3
  • 4

导入需要的包

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns
import warnings
warnings.filterwarnings('ignore')
import matplotlib as mpl
## 设置属性防止中文乱码
mpl.rcParams['font.sans-serif'] = [u'SimHei']
mpl.rcParams['axes.unicode_minus'] = False

# 导入各种模型 svm,knn,RidgeClassifier(),LogisticRegression(逻辑回归)
# 支持向量机分类svc,最近邻居 knn,lr逻辑回归,rc
# SVM=Support Vector Machine 是支持向量
# SVC=Support Vector Classification就是支持向量机用于分类,这里是分类问题所以引入SVC
# SVR=Support Vector Regression.就是支持向量机用于回归分析
from sklearn.linear_model import LogisticRegression,RidgeClassifier
from sklearn.svm import SVC
from sklearn.neighbors import KNeighborsClassifier
# 到这里四种方式引入完毕
# 引入sklearn的划分训练集和测试集合
from sklearn.model_selection import train_test_split
# 计算模型准确率
from sklearn.metrics import accuracy_score`在这里插入代码片`

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25

读取数据

iris_data=pd.read_csv('iris.csv', usecols=[ 1, 2, 3, 4,5])

  • 1
  • 2

划分训练集和测试集

x = iris_data[['sepal_length', 'sepal_width', 'petal_length', 'petal_width']]        		
r = iris_data['species']   
x_train, x_test, r_train, r_test = train_test_split(x, r, random_state=0)
  • 1
  • 2
  • 3

调用各种模型

SVC

# svc训练
svm = SVC(C=1, kernel='linear')

## 模型训练
svm.fit(x_train, r_train)
  • 1
  • 2
  • 3
  • 4
  • 5

KNN

# knn训练
knn = KNeighborsClassifier(n_neighbors=1)
# 模型训练
knn.fit(x_train, r_train)
  • 1
  • 2
  • 3
  • 4

逻辑回归和RidgeClassifier

# 逻辑回归和RidgeClassifier训练
lr = LogisticRegression()
rc = RidgeClassifier()
# 模型训练
lr.fit(x_train, r_train)
rc.fit(x_train, r_train)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

得到四个模型的测试集合准确度

# 得到4个模型测试集准确率
svm_score2 = accuracy_score(r_test, svm.predict(x_test))

lr_score2 = accuracy_score(r_test, lr.predict(x_test))

rc_score2 = accuracy_score(r_test, rc.predict(x_test))

knn_score2 = accuracy_score(r_test, knn.predict(x_test))
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
print(svm_score2)
print(lr_score2)
print(rc_score2)
print(knn_score2)
#0.9736842105263158
#0.9736842105263158
#0.7631578947368421
#0.9736842105263158
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

绘图比较

# 绘图得到四个对比数据
x_tmp = [0,1,2,3]
# y_score1 = [svm_score1, lr_score1, rc_score1, knn_score1]
y_score2 = [svm_score2, lr_score2, rc_score2, knn_score2]

plt.figure(facecolor='w')
# plt.plot(x_tmp, y_score1, 'r-', lw=2, label=u'训练集准确率')
plt.plot(x_tmp, y_score2, 'g-', lw=2, label=u'测试集准确率')
plt.xlim(0, 3)
plt.ylim(np.min((np.min(y_score1), np.min(y_score2)))*0.9, np.max((np.max(y_score1), np.max(y_score2)))*1.1)
plt.legend(loc = 'lower right')
plt.title(u'鸢尾花数据不同分类器准确率比较', fontsize=16)
plt.xticks(x_tmp, [u'SVM', u'Logistic', u'Ridge', u'KNN'], rotation=0)
plt.grid()
plt.show()
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15

在这里插入图片描述

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/很楠不爱3/article/detail/477419
推荐阅读
相关标签
  

闽ICP备14008679号