python:用 sklearn SVM 构建分类模型,并评价

编写 test_sklearn_5.py 如下

python 复制代码
# -*- coding: utf-8 -*-
""" 使用 sklearn 估计器构建分类模型,并评价 """
import numpy as np
import matplotlib.pyplot as plt
from sklearn import datasets
from sklearn.svm import SVC
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import StandardScaler

# 1.加载 datasets 中的乳腺癌数据集
cancer = datasets.load_breast_cancer()
#print(len(cancer))
#print(type(cancer))
# 数据集的数据
cancer_data = cancer['data']
#print('breast_cancer_data:','\n', data)
# 数据集的标签
target = cancer['target']
#print('breast_cancer_target:','\n', target)
# 数据集的特征名称
feature_names = cancer['feature_names']
#print('breast_cancer_feature_names:','\n', feature_names)

# 2.将数据集划分为训练集和测试集
# 使用 train_test_split 划分数据集
data_train,data_test,target_train,target_test = \
    train_test_split(cancer_data, target, test_size=0.2, random_state=42)
# 数据标准化
stdScaler = StandardScaler().fit(data_train)
trainStd = stdScaler.transform(data_train)
testStd = stdScaler.transform(data_test)
# 建立 SVM 模型
svm = SVC(C=1.0).fit(trainStd, target_train)
print(" SVM model:\n", svm)
# 预测训练集结果
cancer_target_pred = svm.predict(testStd)
print("前20个结果:\n", cancer_target_pred[:20])

# 将预测结果和真实结果做比对,求出预测对的结果和预测错的结果,并求出准确率
# 求出预测对的结果
dui = np.sum(cancer_target_pred == target_test)
print("预测对的结果数为:", dui)
print("预测错的结果数为:", target_test.shape[0]-dui)
print("预测结果的准确率为:", dui/target_test.shape[0])

# 分类模型常用评价方法
from sklearn.metrics import accuracy_score,precision_score,recall_score,f1_score,cohen_kappa_score
score = accuracy_score(target_test, cancer_target_pred)
print("用SVM 预测 breast_cancer 数据的准确率:", score)
score = precision_score(target_test, cancer_target_pred)
print("用SVM 预测 breast_cancer 数据的精确率:", score)
score = recall_score(target_test, cancer_target_pred)
print("用SVM 预测 breast_cancer 数据的召回率:", score)
score = f1_score(target_test, cancer_target_pred)
print("用SVM 预测 breast_cancer 数据的F1数值:", score)
score = cohen_kappa_score(target_test, cancer_target_pred)
print("用SVM 预测 breast_cancer 数据的 Cohen's Kappa 系数:", score)

# 分类模型评价报告
from sklearn.metrics import classification_report
print("用SVM 预测 breast_cancer 数据的分类评价报告:\n",\
    classification_report(target_test, cancer_target_pred))

# 绘制 ROC 曲线
from sklearn.metrics import roc_curve
# 求出 ROC 曲线的x轴和y轴
fpr, tpr, threholds = roc_curve(target_test, cancer_target_pred)
plt.figure(figsize=(10,6))
plt.xlim(0,1)
plt.ylim(0.0,1.1)
plt.xlabel('False Postive Rate')
plt.ylabel('True Postive Rate')
plt.plot(fpr,tpr, linewidth=2,linestyle='-',color='red')
plt.show()

运行 python test_sklearn_5.py

python 复制代码
(base) D:\python> python test_sklearn_5.py
 SVM model:
 SVC()
前20个结果:
 [1 0 0 1 1 0 0 0 1 1 1 0 1 0 1 0 1 1 1 0]
预测对的结果数为: 112
预测错的结果数为: 2
预测结果的准确率为: 0.9824561403508771
用SVM 预测 breast_cancer 数据的准确率: 0.9824561403508771
用SVM 预测 breast_cancer 数据的精确率: 0.9726027397260274
用SVM 预测 breast_cancer 数据的召回率: 1.0
用SVM 预测 breast_cancer 数据的F1数值: 0.9861111111111112
用SVM 预测 breast_cancer 数据的 Cohen's Kappa 系数: 0.9623140495867769
用SVM 预测 breast_cancer 数据的分类评价报告:
               precision    recall  f1-score   support

           0       1.00      0.95      0.98        43
           1       0.97      1.00      0.99        71

    accuracy                           0.98       114
   macro avg       0.99      0.98      0.98       114
weighted avg       0.98      0.98      0.98       114

参考书:【Python 数据分析与应用】第6章 使用 scikit-learn 构建模型

相关推荐
mywpython29 分钟前
mac 最新的chrome版本配置selenium的方式
chrome·python·selenium·macos
闲人编程33 分钟前
形态学操作(腐蚀/膨胀/开闭运算)
python·opencv·图像识别
A_ugust__33 分钟前
vue3项目使用 python +flask 打包成桌面应用
开发语言·python·flask
软件测试曦曦34 分钟前
如何使用Python自动化测试工具Selenium进行网页自动化?
自动化测试·软件测试·python·功能测试·测试工具·程序人生·自动化
zidea1 小时前
我和我的 AI Agent(1) 异步优先、结构化输出以及如何处理依赖
人工智能·python·trae
满怀10151 小时前
Python入门(5):异常处理
开发语言·python
莓事哒1 小时前
使用pytesseract和Cookie登录古诗文网~(python爬虫)
爬虫·python·pycharm·cookie·pytessarct
赵钰老师1 小时前
【Deepseek、ChatGPT】智能气候前沿:AI Agent结合机器学习与深度学习在全球气候变化驱动因素预测中的应用
人工智能·python·深度学习·机器学习·数据分析
独好紫罗兰2 小时前
洛谷题单3-P1980 [NOIP 2013 普及组] 计数问题-python-流程图重构
开发语言·python·算法
freejackman2 小时前
Selenium框架——Web自动化测试
python·selenium·测试