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

编写 test_sklearn_5.py 如下

# -*- 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 

(base) D:\python> python test_sklearn_5.pySVM 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   support0       1.00      0.95      0.98        431       0.97      1.00      0.99        71accuracy                           0.98       114macro avg       0.99      0.98      0.98       114
weighted avg       0.98      0.98      0.98       114

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/492455.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

uniapp blob格式转换为video .mp4文件使用ffmpeg工具

前言 介绍一下这三种对象使用场景 您前端一旦涉及到文件或图片上传Q到服务器,就势必离不了 Blob/File /base64 三种主流的类型它们之间 互转 也成了常态 Blob - FileBlob -Base64Base64 - BlobFile-Base64Base64 _ File uniapp 上传文件 现在已获取到了blob格式的…

springboot447教师薪酬管理系统(论文+源码)_kaic

摘 要 传统信息的管理大部分依赖于管理人员的手工登记与管理,然而,随着近些年信息技术的迅猛发展,让许多比较老套的信息管理模式进行了更新迭代,老师信息因为其管理内容繁杂,管理数量繁多导致手工进行处理不能满足广…

三、ubuntu18.04安装docker

1.使用默认ubuntu存储库安装docker 更新软件存储库 更新本地软件数据库确保可以访问最新版本。打开终端输入:sudo apt-get update 卸载旧版本的docker 建议继续之前卸载任何旧的docker软件。打开终端输入:sudo apt-get remove docker docker-engine …

Java JDK8之前传统的日期时间-Date、SimpleDateFormat、Calendar

1. Date (1) Date代表的是日期和时间 (2) 常见构造器和常用方法 构造器说明public Date()创建一个Date对象,代表系统当前日期和时间public Date(long time)根据传入的时间毫秒值创建一个Date对象 方法说明public long getTime()返回从1970.1.1 00:00:00到此时的毫…

powershell(1)

免责声明 学习视频来自 B 站up主泷羽sec,如涉及侵权马上删除文章。 笔记的只是方便各位师傅学习知识,以下代码、网站只涉及学习内容,其他的都与本人无关,切莫逾越法律红线,否则后果自负。 泷羽sec官网:http…

matlab绘图时设置左、右坐标轴为不同颜色

目录 一、需求描述 二、实现方法 一、需求描述 当图中存在两条曲线,需要对两条曲线进行分别描述时,应设置左、右坐标轴为不同颜色,并设置刻度线,且坐标轴颜色需要和曲线颜色相同。 二、实现方法 1.1、可以实现: 1…

初学stm32 --- 窗口看门狗

STM32F1 窗口看门狗 窗口看门狗(WWDG)通常被用来监测由外部干扰或不可预见的逻辑条件造成的应用程序背离正常的运行序列而产生的软件故障。除非递减计数器的值在 T6 位(WWDG->CR 的第六位)变成 0 前被刷新,看门狗电…

Kafka Streams 在监控场景的应用与实践

作者:来自 vivo 互联网服务器团队- Pang Haiyun 介绍 Kafka Streams 的原理架构,常见配置以及在监控场景的应用。 一、背景 在当今大数据时代,实时数据处理变得越来越重要,而监控数据的实时性和可靠性是监控能力建设最重要的一环…

论文笔记:是什么让多模态学习变得困难?

整理了What Makes Training Multi-modal Classification Networks Hard? 论文的阅读笔记 背景方法OGR基于最小化OGR的多监督信号混合在实践中的应用 实验 背景 直观上,多模态网络接收更多的信息,因此它应该匹配或优于其单峰网络。然而,最好的…

【鸿蒙实战开发】HarmonyOS状态管理之@Link

前言 在前面两篇状态管理相关的文章中,我们分别讲解了 State 和 Prop 两个状态管理装饰器的作用和基本使用。State 状态管理装饰器是最基本的状态管理装饰器,组件使用其修饰的变量,组件的更新可以随着变量的变化而更新;Prop 状态…

Nginx常用配置详解(1)

Nginx常用配置详解 一、全局块(main)配置 在Nginx的配置文件中,最外层的部分是全局块。这部分配置通常会影响Nginx服务器整体的运行参数。 worker_processes 作用:这个配置指令用于指定Nginx工作进程的数量。工作进程是Nginx处理…

NVIDIA发布紧凑型生成式AI超级计算机:性能提升,价格更低

每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗?订阅我们的简报,深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同,从行业内部的深度分析和实用指南中受益。不要错过这个机会,成为AI领…

jmeter连接mysql

查询mysql数据库版本 SELECT VERSION(); 下载jmeter mysql 驱动jar包,版本低于mysql版本,放在jmeter的lib 路径下 MySQL :: Download MySQL Connector/J (Archived Versions) 添加JDBC Connection Configuration 填写 variable name 及数据库信息 注意…

STM32二刷学习笔记--GPIO

文章目录 GPIO使用详解GPIO基本结构GPIO工作模式简单示例推挽输出LED闪烁按键控制LED闪烁**LED控制函数****按键控制函数** GPIO使用详解 在STM32开发中,GPIO(通用输入输出)是与外设接口的基础模块。通过GPIO,我们可以连接各种外…

PCDN之网心云

PCDN之网心云 前言 利用闲置宽带赚取收益 CDN原理 使用你的设备缓存加速资源 当别人需要访问资源时会就近分配访问到你缓存资源实现边缘加速的效果 推荐宽带上行 >10MB 磁盘大于60G 否则收益可能不是很高 注册网心云账号 打开如下网址注册 务必填写邀请码 否则会少几块…

FPGA-PS端编程1:

目标 在小梅哥的zynq 7015上,完成以下目标: 读取 S1 按键的电平, 当 S1 按键为按下状态时,驱动 PS LED 以 1S 的频率闪烁(注意理解 1S 的频率闪烁和 1S的时间翻转两种描述之间的差别), 当 S1 释放后,停止…

ArcGIS计算土地转移矩阵

在计算土地转移矩阵时,最常使用的方法就是在ArcGIS中将土地利用栅格数据转为矢量,然后采用叠加分析计算,但这种方法计算效率低。还有一种方法是采用ArcGIS中的栅格计算器,将一个年份的地类编号乘以个100或是1000再加上另一个年份的…

51c大模型~合集91

我自己的原文哦~ https://blog.51cto.com/whaosoft/12848734 #工业界主流大语言模型后训练(Post-Training)技术总结 本文整理工业界主流开源LLM的后训练方案,着重介绍训练算法和数据处理部分 今年工业界陆续开源了多款优秀的大语言模型,并放出了技术…

怎样在html中异步加载js文件,以避免js文件太大而影响页面打开速度?

在HTML中异步加载JS文件可以防止因JS文件过大而阻塞页面渲染。 异步加载js文件方法: 1、等待DOM完全加载 等待HTML文档解析完成,即所有的DOM元素都已经被浏览器读取并构建。 实现这一点可以通过监听DOMContentLoaded事件,这个事件会在文档…

监控视频汇聚融合云平台一站式解决视频资源管理痛点

随着5G技术的广泛应用,各领域都在通信技术加持下通过海量终端设备收集了大量视频、图像等物联网数据,并通过人工智能、大数据、视频监控等技术方式来让我们的世界更安全、更高效。然而,随着数字化建设和生产经营管理活动的长期开展&#xff0…