分类算法——鸢尾花

一、问题描述

1、选择鸢尾花卉数据集,实现逻辑回归算法,分析算法的性能。
2、了解逻辑回归模型中参数的含义并调试参数,不同参数对分类准确率的影响。
3、与至少一种其他分类算法(如朴素贝叶斯、k近邻、决策树等)进行性能比较。

二、代码实现

import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
from sklearn.model_selection import train_test_split
import sklearn.metrics as metrics
from sklearn.linear_model import LogisticRegression
from sklearn.datasets import load_iris  # 鸢尾花数据集位于sklearn.datasets

'''1、下载数据集'''
data = load_iris()  # 得到数据特征
iris_target = data.target  # 得到数据对应的类标签

'''2、特征预处理'''
iris_features = pd.DataFrame(data=data.data, columns=data.feature_names)  # 利用pandas转化为DataFrame格式

'''3、可视化数据特征分布'''
iris_all = iris_features.copy()  # 进行浅拷贝,防止对于原始数据的修改
iris_all['target'] = iris_target  # 合并特征和类标签
# 特征与标签组合的散点可视化
sns.pairplot(data=iris_all, diag_kind='kde', hue='target')  # hue:使用指定变量为分类变量画图,这里使用target
plt.show()  # 从该图可以看出,仅凭petal length或petal width就可以把0类花区分出来

'''4、划分训练集、测试集'''
x_train, x_test, y_train, y_test = train_test_split(iris_features, iris_target, test_size=0.3, random_state=0)
# 测试集大小为30%

'''5、模型训练'''
# 定义逻辑回归模型
clf = LogisticRegression(random_state=0, solver='lbfgs')
# 在训练集上训练逻辑回归模型
clf.fit(x_train, y_train)

'''6、模型测试'''
# 在训练集和测试集上分别利用训练好的模型进行预测
train_predict = clf.predict(x_train)
test_predict = clf.predict(x_test)

'''7、模型评估'''
# 查看混淆矩阵
M = metrics.confusion_matrix(test_predict, y_test)
print('混淆矩阵:\n', M)
# 利用热力图进行可视化
plt.figure()
sns.heatmap(M, annot=True, cmap='Blues')
plt.xlabel('predicted labels')
plt.ylabel('True labels')
plt.show()
# 精确率、召回率
n = len(M)
for i in range(n):
    rowsum, colsum = sum(M[i]), sum(M[r][i] for r in range(n))
    precision = M[i][i] / float(colsum)
    recall = M[i][i] / float(rowsum)
    F1 = precision * recall * 2 / (precision + recall)
    print('%d类别的精确率: %s' % (i, precision), '%d类别的召回率: %s' % (i, recall), '%d类别的F1值: %s' % (i, F1))
print('逻辑回归的正确率:', clf.score(x_test, y_test))

三、结果

在这里插入图片描述在这里插入图片描述在这里插入图片描述

  • 4
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值