机器学习——逻辑回归ROC练习

一、

题目要求:

给定以下二分类模型的预测结果,手动绘制ROC曲线并计算AUC值:

y_true = [0, 1, 0, 1, 0, 1] # 真实标签(0=负类,1=正类)

y_score = [0.2, 0.7, 0.3, 0.6, 0.1, 0.8] # 模型预测得分

代码展示:

import matplotlib.pyplot as plt
from sklearn.metrics import roc_curvey_true = [0,1,0,1,0,1]
y_score = [0.2,0.7,0.3,0.6,0.1,0.8]fpr,tpr,_ = roc_curve(y_true,y_score)plt.figure(figsize=(8,9))
plt.plot(fpr,tpr,color="b")
plt.plot([0,1],[0,1],color="r",linestyle="--")
plt.xlabel("fpr")
plt.ylabel("tpr")
plt.grid()
plt.show()

结果展示:

 

 二、

题目要求

处理有相同预测得分的情况:

y_true = [1, 0, 0, 1, 1, 0, 1, 0]

y_score = [0.8, 0.5, 0.5, 0.7, 0.6, 0.5, 0.9, 0.3]

代码展示:

import matplotlib.pyplot as plt
from sklearn.metrics import roc_curvey_true = [1, 0, 0, 1, 1, 0, 1, 0]
y_score = [0.8, 0.5, 0.5, 0.7, 0.6, 0.5, 0.9, 0.3]fpr,tpr,_ = roc_curve(y_true,y_score)plt.figure(figsize=(8,9))
plt.plot(fpr,tpr,color="b")
plt.plot([0,1],[0,1],color="r",linestyle="--")
plt.xlabel("fpr")
plt.ylabel("tpr")
plt.grid()
plt.show()

结果展示:

 

三、

题目背景

在信用卡欺诈检测中,正常交易(负类)远多于欺诈交易(正类)。给定以下模拟数据:

y_true = [0, 0, 0, 0, 0, 0, 1, 0, 1, 0] # 2个欺诈(正类),8个正常(负类)

y_score = [0.1, 0.2, 0.15, 0.05, 0.3, 0.25, 0.9, 0.4, 0.6, 0.1] # 模型输出的欺诈概率

题目要求

  1. 手动计算所有(FPR, TPR)点
  2. 绘制ROC曲线
  3. 观察类别不平衡对曲线形状的影响

代码展示:

import matplotlib.pyplot as plt
from sklearn.metrics import roc_curvey_true = [0, 0, 0, 0, 0, 0, 1, 0, 1, 0]  # 2个欺诈(正类),8个正常(负类)
y_score = [0.1, 0.2, 0.15, 0.05, 0.3, 0.25, 0.9, 0.4, 0.6, 0.1]  # 模型输出的欺诈概率fpr,tpr,_ = roc_curve(y_true,y_score)plt.figure(figsize=(8,9))
plt.plot(fpr,tpr,color="b")
plt.plot([0,1],[0,1],color="r",linestyle="--")
plt.xlabel("fpr")
plt.ylabel("tpr")
plt.grid()
plt.show()

结果展示:

 

四、

使用Kaggle上的“Pima Indians Diabetes Database”数据集来进行逻辑回归的练习。该数据集的链接如下:Pima Indians Diabetes Database

‌练习场景描述‌:

你是一家医疗机构的数据分析师,你的任务是分析Pima Indians Diabetes Database数据集,以预测患者是否患有糖尿病。数据集包含了一系列与患者健康相关的指标,如怀孕次数、葡萄糖浓度、血压等。你需要使用逻辑回归模型来训练一个分类器,以根据这些指标预测患者是否患有糖尿病。

‌具体步骤‌:

  1. 使用pandas库加载数据集,并进行初步的数据探索,了解数据集的字段和分布情况。
  2. 对数据进行预处理,包括处理缺失值、标准化或归一化特征值等。
  3. 使用numpy库进行特征选择或特征工程,以提高模型的性能。
  4. 划分训练集和测试集,使用训练集训练逻辑回归模型,并使用测试集评估模型的性能。
  5. 使用matplotlib库绘制ROC曲线或混淆矩阵,以直观展示模型的分类效果。
  6. 根据评估结果调整模型的参数,以提高模型的性能。

‌题目‌:

基于上述练习场景,请完成以下任务:

  1. 加载Pima Indians Diabetes Database数据集,并进行初步的数据探索。
  2. 对数据进行预处理,包括处理缺失值和标准化特征值。
  3. 使用逻辑回归模型进行训练,并评估模型的性能。
  4. 绘制ROC曲线,展示模型的分类效果。
  5. 根据你的理解,提出至少一个改进模型性能的方法,并尝试实现。

 代码展示:

import matplotlib.pyplot as plt
import pandas as pd
from sklearn.linear_model import LogisticRegression
from sklearn.metrics import roc_curve
from sklearn.model_selection import train_test_split, GridSearchCV
from sklearn.preprocessing import StandardScalerdf = pd.read_csv("./data/diabetes.csv",encoding="utf-8")
print(df.head())
print(df.shape)df = df.dropna(axis=0)x = df.drop("Outcome",axis=1)
y = df["Outcome"]x_train,x_test,y_train,y_test = train_test_split(x,y,test_size=0.2,random_state=22)transfer = StandardScaler()
x_train = transfer.fit_transform(x_train)
x_test = transfer.fit_transform(x_test)estimator = LogisticRegression()
estimator.fit(x_train,y_train)y_predict = estimator.predict(x_test)
print("预测值和真实的对比:",y_predict == y_test)ret = estimator.score(x_test,y_test)
print("准确率:",ret)y_pred_proba = estimator.predict_proba(x_test)[:, 1]
fpr, tpr, thresholds = roc_curve(y_test, y_pred_proba)plt.figure(figsize=(8,9))
plt.plot(fpr,tpr,color="b")
plt.plot([0,1],[0,1],color="r",linestyle="--")
plt.xlabel("fpr")
plt.ylabel("tpr")
plt.grid()
plt.show()param_grid = {'C': [0.1, 1, 10, 100],'penalty': ['l1', 'l2'],'solver': ['liblinear', 'saga']
}
grid_search = GridSearchCV(LogisticRegression(), param_grid, cv=5)
grid_search.fit(x_train, y_train)best_estimator = grid_search.best_estimator_
best_ret = best_estimator.score(x_test, y_test)
print("调整参数后模型的准确率:", best_ret)

 结果展示:

预测值和真实的对比: 645    False
767     True
31      True
148    False
59      True...  
30      True
158     True
167     True
582    False
681     True
Name: Outcome, Length: 154, dtype: bool
准确率: 0.7402597402597403
调整参数后模型的准确率: 0.7402597402597403

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

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

相关文章

Python项目源码69:Excel数据筛选器1.0(tkinter+sqlite3+pandas)

功能说明:以下是一个使用Tkinter和Pandas实现的完整示例,支持Excel数据读取、双表格展示和高级条件筛选功能: 1.文件操作:点击"打开文件"按钮选择Excel文件(支持.xlsx和.xls格式),自…

php8 枚举使用教程

简介 PHP 从 8.1 开始原生支持枚举(enum),这是 PHP 向类型安全和现代语言特性迈进的重要一步。枚举可以定义一组有穷的、不可变的常量集合,常用于表示状态值、选项类型等。 基础语法 PHP 支持两种类型的枚举: 纯枚…

【Linux】Linux环境基础开发工具

前言 本篇博客我们来了解Linux环境下一些基础开发工具 💓 个人主页:zkf& ⏩ 文章专栏:Linux 若有问题 评论区见📝 🎉欢迎大家点赞👍收藏⭐文章 目录 1.Linux 软件包管理器 yum 2.Linux开发工具 2.1…

vue2开发者sass预处理注意

vue2开发者sass预处理注意 sass的预处理器,早年使用node-sass,也就是vue2最初默认的编译器。 sass官方推出了dart-sass来替代。 node-sass已经停维很久了。 vue3默认使用的是dart-sass。 Uniapp的官方文档截图 从 HBuilderX 4.56 ,vue2 …

Spring MVC Controller 方法的返回类型有哪些?

Spring MVC Controller 方法的返回类型非常灵活,可以根据不同的需求返回多种类型的值。Spring MVC 会根据返回值的类型和相关的注解来决定如何处理响应。 以下是一些常见的 Controller 方法返回类型: String: 最常见的类型之一,用于返回逻辑…

[ctfshow web入门] web55

信息收集 这里把小写字母都过滤了&#xff0c;众所周知linux是大小写区分的&#xff0c;没有小写字母根本整不出来命令 if(isset($_GET[c])){$c$_GET[c];if(!preg_match("/\;|[a-z]|\|\%|\x09|\x26|\>|\</i", $c)){system($c);} }else{highlight_file(__FILE…

2021-11-11 C++泰勒sin(x)以2步进乘方除以阶乘加减第N项

缘由c书本题&#xff0c;求解了&#xff0c;求解-编程语言-CSDN问答 int n 10, d 3, z -1; double x 2.5, xx x;while (n){xx (乘方(x, d) / 阶乘(d)) * z;d 2, --n, z * -1;}std::cout << xx << std::endl;

湖仓一体化介绍

目录 一、湖仓一体化的定义与核心概念 二、湖仓一体化出现的背景 (一)数据仓库的局限性 (二

仓颉编程语言快速入门:从零构建全场景开发能力

在万物互联的智能时代,编程语言的演进始终与计算范式的革新紧密相连。华为推出的仓颉编程语言(Cangjie Programming Language)以“原生智能化、天生全场景”为核心理念,为开发者提供了一种兼顾高效开发与极致性能的新选择。本文将带你从零开始,快速掌握这门面向未来的语言…

AI教你学VUE——Deepseek版

一、基础阶段&#xff1a;打好Web开发基础 HTML/CSS基础 学习HTML标签语义化、CSS布局&#xff08;Flex/Grid&#xff09;、响应式设计&#xff08;媒体查询、REM/VW单位&#xff09;。资源推荐&#xff1a; MDN Web文档&#xff08;免费&#xff09;&#xff1a;HTML | CSS实战…

DeepSeek智能时空数据分析(八):NL2SQL绘制河流-轨迹缓冲区如何生成

序言&#xff1a;时空数据分析很有用&#xff0c;但是GIS/时空数据库技术门槛太高 时空数据分析在优化业务运营中至关重要&#xff0c;然而&#xff0c;三大挑战仍制约其发展&#xff1a;技术门槛高&#xff0c;需融合GIS理论、SQL开发与时空数据库等多领域知识&#xff1b;空…

推导部分和-图论+dfs+连通块

先研究一下&#xff0c;感觉有点像lca里的树上前缀和&#xff0c;不过树有多颗&#xff0c;用color区分一下 https://www.luogu.com.cn/problem/P8779 #include<bits/stdc.h> using namespace std; #define N 100011 typedef long long ll; typedef pair<int,int&g…

WPF MVVM入门系列教程(六、ViewModel案例演示)

&#x1f9ed; WPF MVVM入门系列教程 一、MVVM模式介绍二、依赖属性三、数据绑定四、ViewModel五、命令和用户输入六、ViewModel案例演示 在前面的文章中&#xff0c;介绍了ViewModel的基础概念 本文会使用一些实例来进行ViewModel的演示 一个基础的数据展示示例 假设我们要…

第2章 算法分析基础

2-1 算法的时间复杂度分析 2.1.1 输入规模与基本语句 输入规模&#xff1a;算法处理数据的规模&#xff0c;通常用 n 表示。 基本语句&#xff1a;执行次数与输入规模直接相关的关键操作。 例2.1 顺序查找 int SeqSearch(int A[], int n, int k) { for (int i 0; i < n…

QT高级(1)QTableView自定义委托集合,一个类实现若干委托

自定义委托集合 1同系列文章2 功能3 源码 1同系列文章 QT中级&#xff08;1&#xff09;QTableView自定义委托&#xff08;一&#xff09;实现QSpinBox、QDoubleSpinBox委托 QT中级&#xff08;2&#xff09;QTableView自定义委托&#xff08;二&#xff09;实现QProgressBar委…

webrtc 视频直播

webrtc 是一种开源的音视频通信技术&#xff0c;可以不借助中间媒介建立浏览器点对点&#xff08;peer-to-peer&#xff09;连接&#xff0c;实现音视频以及其他数据的传输。webrtc具有平台兼容性&#xff0c;低延迟与高实时的优点。今天主要记录一下webrtc的使用记录&#xff…

游戏引擎学习第261天:切换到静态帧数组

game_debug.cpp: 将ProfileGraph的尺寸初始化为相对较大的值 今天的讨论主要围绕性能分析器&#xff08;Profiler&#xff09;以及如何改进它的可用性展开。当前性能分析器已经能够正常工作&#xff0c;但我们希望通过一些改进&#xff0c;使其更易于使用&#xff0c;特别是在…

three.js设置物体轮廓发光和物体发光

设置物体轮廓发光 <script setup> import * as THREE from three; import { OrbitControls } from three/addons/controls/OrbitControls.js; // 导入后期合成 import { EffectComposer } from three/examples/jsm/postprocessing/EffectComposer.js; import { RenderPas…

homebrew安装配置Python(MAC版)

Mac系统自带python路径为: /System/Library/Frameworks/Python.framework/Versionbrew 安装 Python3 在终端输入以下命令&#xff1a; brew search python3 # 查看支持安装的版本 brew install python3就可以轻松easy安装python了&#xff0c;安装完成后提示 查看 pyth…

如何建设网站?网站建设简单步骤有哪些?

新手如何开展网站建设&#xff1f;网站建设包括哪些步骤&#xff1f; 在开展网站建设之前先清楚了解网站建设的流程和步骤&#xff1a;注册域名、租用虚拟主机/服务器、建站工具的选取、网站建设流程详细流程共计7步&#xff0c;分别是注册域名、域名实名制、服务器或虚拟主机、…