《Python数据分析与应用》 第六章 构建并评价分类模型(中)

博客介绍了支持向量机(SVM)模型的构建与评价过程。先加载函数和数据,划分训练集与测试集并进行数据标准化,接着建立SVM模型,预测训练集结果并统计预测与真实一致的数目。最后介绍了分类模型的评价方法,包括计算评价指数、输出评价报告和绘制ROC曲线。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.加载所需的函数、数据

import numpy as np
from sklearn.datasets import load_breast_cancer
from sklearn.svm import SVC
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import StandardScaler
cancer = load_breast_cancer()
cancer_data = cancer['data']
cancer_target = cancer['target']
cancer_names = cancer['feature_names']

2.将数据划分为训练集测试集

cancer_data_train,cancer_data_test, \
cancer_target_train,cancer_target_test = \
train_test_split(cancer_data,cancer_target,test_size = 0.2,random_state = 22)

3.数据标准化

stdScaler = StandardScaler().fit(cancer_data_train)
cancer_trainStd = stdScaler.transform(cancer_data_train)
cancer_testStd = stdScaler.transform(cancer_data_test)

4.建立SVM模型

svm = SVC().fit(cancer_trainStd,cancer_target_train)## train  target
print('建立的SVM模型为:\n',svm)

在这里插入图片描述

5.预测训练集结果

cancer_target_pred = svm.predict(cancer_testStd)
print('预测前20个结果为:\n',cancer_target_pred[:20])

在这里插入图片描述

6.求出预测和真实一样的数目

true = np.sum(cancer_target_pred == cancer_target_test )
print('预测对的结果数目为:', true)
print('预测错的的结果数目为:', cancer_target_test.shape[0]-true)
print('预测结果准确率为:', true/cancer_target_test.shape[0])

在这里插入图片描述

7.分类模型评价方法

在这里插入图片描述

7.1建立的支持向量机模型的Precision、Recall、F1、Cohen’s Kappa系数的评价指数如下代码所示:
# 代码 6-19
from sklearn.metrics import accuracy_score,precision_score, \
recall_score,f1_score,cohen_kappa_score
print('使用SVM预测breast_cancer数据的准确率为:',
      accuracy_score(cancer_target_test,cancer_target_pred))
print('使用SVM预测breast_cancer数据的精确率为:',
      precision_score(cancer_target_test,cancer_target_pred))
print('使用SVM预测breast_cancer数据的召回率为:',
      recall_score(cancer_target_test,cancer_target_pred))
print('使用SVM预测breast_cancer数据的F1值为:',
      f1_score(cancer_target_test,cancer_target_pred))
print('使用SVM预测breast_cancer数据的Cohen’s Kappa系数为:',
      cohen_kappa_score(cancer_target_test,cancer_target_pred))

在这里插入图片描述

7.2 sklearn的metrics模块除了提供Precision等单一评价指标的函数外,还能够输出分类模型评价报告的classification_report函数
from sklearn.metrics import classification_report
print('使用SVM预测iris数据的分类报告为:','\n',
      classification_report(cancer_target_test,
            cancer_target_pred))

在这里插入图片描述

7.3绘制ROC曲线
from sklearn.metrics import roc_curve
import matplotlib.pyplot as plt
## 求出ROC曲线的x轴和y轴
fpr, tpr, thresholds = roc_curve(cancer_target_test,cancer_target_pred)
#fps和tps就是混淆矩阵中的FP和TP的值;thresholds就是 cancer_target_pred 逆序排列后的结果
# (由于保留的小数位数不同,所以表面上看上去不一样,其实是一样的)
print(fpr,'\n',tpr,'\n',thresholds)
plt.figure(figsize=(10,6))
plt.xlim(0,1) ##设定x轴的范围
plt.ylim(0.0,1.1) ## 设定y轴的范围
plt.xlabel('False Postive Rate')
plt.ylabel('True Postive Rate')
plt.plot(fpr,tpr,linewidth=2, linestyle="-",color='red')
plt.show()

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值