python实现逻辑回归-清风数学建模-二分类水果数据

所用数据

👉👉👉二分类水果数据
在这里插入图片描述

1.数据预处理

可以看到有4个特征,2种分类结果,最后4个没有分类结果的数据是拿来预测的

# 1. 数据预处理
import pandas as pd
df = pd.read_excel('oridata/二分类水果数据.xlsx',usecols=lambda col:col!='ID') #不读入第一列ID
df_willpred = df[df['fruit_name'].isnull()].drop(columns='fruit_name') #把要预测的对象拆分出来(最后4个)
df = df[~df['fruit_name'].isnull()] #去除最后4个数据
X = df.drop(columns='fruit_name') # 取出4列feature
Y = df['fruit_name'] # 取出target

X(特征)
在这里插入图片描述

在这里插入图片描述
Y(target)
在这里插入图片描述

2. 数据可视化

# 2. 可视化数据
import seaborn as sns
import matplotlib.pyplot as plt
## 不同特征组合对于不同类别的花的散点分布
sns.pairplot(data=df,hue='fruit_name')# 参数详解:data-数据集,hue-数据集中的目标变量
plt.show()## 特征箱型图
column_name=list(X.columns)
fig,axes=plt.subplots(2,2,figsize=(10, 5))
idx=0
for i in range(2):for j in range(2):sns.boxplot(data=df,x='fruit_name',y=column_name[idx],palette='pastel',ax=axes[i,j])# 参数详解:data-数据集,x,y-从数据集中取横坐标、纵坐标,palette-调色,ax-子图位置坐标idx+=1
plt.show()

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

3. 划分test和train

# 3. 划分test和train
from sklearn.model_selection import train_test_split
X_train, X_test, Y_train, Y_test = train_test_split(X, Y, test_size=0.2,random_state=111)#参数详解:test_size:用多少样本量做测试集,random_state:随便取数,只是为了每一次运行结果都相同

4.模型搭建

# 4. 模型搭建
from sklearn.linear_model import LogisticRegression
model = LogisticRegression(solver='liblinear',random_state=111) # 初始化模型,sovler为求解器类型,,random_state同上
model.fit(X_train, Y_train) # 训练

5. 模型分类结果和准确率

# 5. 模型分类结果和准确率
## 查看test的分类结果
Y_test_pred = model.predict(X_test)
Y_pred_proba = model.predict_proba(X_test)
Y_train_pred=model.predict(X_train)
tmp = pd.DataFrame()
tmp['Y_test'] = list(Y_test[:20]) #[:20] 只是保证每一列个数相等
tmp['Y_pred_proba'] = list(Y_pred_proba[:20])
tmp['Y_test_pred'] = list(Y_test_pred[:20])## 模型准确率
from sklearn.metrics import accuracy_score
print("train分类准确率:",accuracy_score(Y_train_pred, Y_train))
print("test分类准确率:",accuracy_score(Y_test_pred, Y_test))

在这里插入图片描述

6. 预测分类

# 6. 预测分类
print(model.predict(df_willpred))

最后四个预测结果:
在这里插入图片描述

7. 计算混淆矩阵

# 7. 混淆矩阵
from sklearn.metrics import  confusion_matrix
confusion_matrix_res=confusion_matrix(Y_test,Y_test_pred)
sns.heatmap(data=confusion_matrix_res,annot=True,cmap='Blues')
plt.show()

在这里插入图片描述

完整代码

# 1. 数据预处理
import pandas as pd
df = pd.read_excel('oridata/二分类水果数据.xlsx',usecols=lambda col:col!='ID') #不读入第一列ID
df_willpred = df[df['fruit_name'].isnull()].drop(columns='fruit_name') #把要预测的对象拆分出来(最后4个)
df = df[~df['fruit_name'].isnull()] #去除最后4个数据
X = df.drop(columns='fruit_name') # 取出4列feature
Y = df['fruit_name'] # 取出target# 2. 可视化数据
import seaborn as sns
import matplotlib.pyplot as plt
## 不同特征组合对于不同类别的花的散点分布
sns.pairplot(data=df,hue='fruit_name')# 参数详解:data-数据集,hue-数据集中的目标变量
plt.show()## 特征箱型图
column_name=list(X.columns)
fig,axes=plt.subplots(2,2,figsize=(10, 5))
idx=0
for i in range(2):for j in range(2):sns.boxplot(data=df,x='fruit_name',y=column_name[idx],palette='pastel',ax=axes[i,j])# 参数详解:data-数据集,x,y-从数据集中取横坐标、纵坐标,palette-调色,ax-子图位置坐标idx+=1
plt.show()# 3. 划分test和train
from sklearn.model_selection import train_test_split
X_train, X_test, Y_train, Y_test = train_test_split(X, Y, test_size=0.2,random_state=111)#参数详解:test_size:用多少样本量做测试集,random_state:随便取数,只是为了每一次运行结果都相同# 4. 模型搭建
from sklearn.linear_model import LogisticRegression
model = LogisticRegression(solver='liblinear',random_state=111) # 初始化模型,sovler为求解器类型,,random_state同上
model.fit(X_train, Y_train) # 训练# 5. 模型分类结果和准确率
## 查看test的分类结果
Y_test_pred = model.predict(X_test)
Y_pred_proba = model.predict_proba(X_test)
Y_train_pred=model.predict(X_train)
tmp = pd.DataFrame()
tmp['Y_test'] = list(Y_test[:20]) #[:20] 只是保证每一列个数相等
tmp['Y_pred_proba'] = list(Y_pred_proba[:20])
tmp['Y_test_pred'] = list(Y_test_pred[:20])## 模型准确率
from sklearn.metrics import accuracy_score
print("train分类准确率:",accuracy_score(Y_train_pred, Y_train))
print("test分类准确率:",accuracy_score(Y_test_pred, Y_test))# 6. 预测分类
print(model.predict(df_willpred))# 7. 混淆矩阵
from sklearn.metrics import  confusion_matrix
confusion_matrix_res=confusion_matrix(Y_test,Y_test_pred)
sns.heatmap(data=confusion_matrix_res,annot=True,cmap='Blues')
plt.show()

总结

  1. 先用特征组合展示数据散点图,从直观上看哪些特征能有效区分水果
  2. 分类准确率不算太高:清风视频里用的spss准确率也只有76%,因此属于正常范围

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

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

相关文章

开源大模型LLaMA 2会扮演类似Android的角色么?

在AI大模型没有商业模式?等文章中,我多次表达过这样一个观点:不要把大模型的未来应用方式比喻成公有云,大模型最终会是云端操作系统的核心(新通用计算平台),而它的落地形式会很像过去的沃森&…

【C++】开源:Linux端ALSA音频处理库

😏★,:.☆( ̄▽ ̄)/$:.★ 😏 这篇文章主要介绍Linux端ALSA音频处理库。 无专精则不能成,无涉猎则不能通。。——梁启超 欢迎来到我的博客,一起学习,共同进步。 喜欢的朋友可以关注一下&#xff0c…

Python增删改查小练习

目录 1. List操作-增加 2. List操作-查询 3. List操作-修改 4. List操作-删除 资料获取方法 1. List操作-增加 List Append(“xx”) 插入到列表尾部 Insert(x,xx) 在指定的位置插入 Extend 将列表的元素分开,插入到之前列表的尾部 小练习: 把一个字符串”abcdefg…

ssh打开远程vscode

如果想要远程打开其他终端的vscode,首先要知道远程终端的ip地址和用户名称以及用户密码 1、打开本地vscode 2、点击左下角蓝色区域 3、页面上部出现如下图,点击ssh,我这里已经连接,所以是connect to host 4、选择Add New SSH Host…

appium中toast识别

目录 一、什么是Toast? 二、环境前提 三、修改配置 四、安装驱动 五、常见报错及解决方案 1、cnpm 不识别,提示不是内部或外部命令 2、npm 也不识别 3、报错 六、代码节选 一、什么是Toast? Android中的Toast是一种简易的消息提示框…

比selenium体验更好的ui自动化测试工具: cypress介绍

话说 Cypress is a next generation front end testing tool built for the modern web. And Cypress can test anything that runs in a browser.Cypress consists of a free, open source, locally installed Test Runner and a Dashboard Service for recording your tests.…

day44-Spring_AOP

0目录 1.2.3 1.Spring_AOP 实体类: Mapper接口: Service和实现类: 测试1: 运行后: 测试2:无此型号时 测试3:库存不足时 解决方案1:事务声明管理器 测试&#xff1a…

RocketMQ主从集群broker无法启动,日志报错

使用vmWare安装的centOS7.9虚拟机,RocketMQ5.1.3 在rocketMQ的bin目录里使用相对路径的方式启动broker,jps查询显示没有启动,日志报错如下 排查配置文件没有问题,nameServer也已经正常启动 更换绝对路径,启动broker&…

[ELK使用篇]:SpringCloud整合ELK服务

文章目录 一:前置准备-(参考之前博客):1.1:准备Elasticsearch和Kibana环境:1.1.1:地址:[https://blog.csdn.net/Abraxs/article/details/128517777](https://blog.csdn.net/Abraxs/article/details/1285177…

MySQL explain详解

文章目录 0 环境准备1 explain 之 id2 explain 之 select_type3 explain 之 table4 explain 之 type5 explain 之 key6 explain 之 rows7 explain 之 extra MySQL 的 EXPLAIN 是一个用于查询优化的关键字。它用于分析和评估查询语句的执行计划,帮助开发者理解查询语…

尚硅谷大数据项目《在线教育之采集系统》笔记001

视频地址:尚硅谷大数据项目《在线教育之采集系统》_哔哩哔哩_bilibili 目录 P004 P006 P007 P009 P010 P017 P025 P026 P027 P028 P030 P004 将数据以图形图表的方式展示出来! P006 数据埋点 所谓埋点就是在应用中特定的流程收集一些信息&…

(css)自定义登录弹窗页面

(css)自定义登录弹窗页面 效果&#xff1a; 代码&#xff1a; <!-- 登录弹窗 --> <el-dialog:visible.sync"dialogVisible"title"用户登录"width"25%"centerclass"custom-dialog":show-close"false":close-on-cli…

【NLP】温和解读:transformer的核心思想

变压器模型及其关键组件的概述。 一、介绍 在这篇博文中&#xff0c;我将讨论本世纪最具革命性的论文“注意力是你所需要的一切”&#xff08;Vaswani et al.&#xff09;。首先&#xff0c;我将介绍自我注意机制&#xff0c;然后介绍变形金刚的架构细节。在之前的博客文章《从…

基于C#的无边框窗体动画效果的完美解决方案 - 开源研究系列文章

最近在整理和编写基于C#的WinForm应用程序&#xff0c;然后碰到一个其他读者也可能碰到的问题&#xff0c;就是C#的Borderless无边框窗体的动画效果问题。 在Visual Studio 2022里&#xff0c;C#的WinForm程序提供了Borderless无边框窗体的样式效果&#xff0c;但是它没提供在无…

区间预测 | MATLAB实现基于QRF随机森林分位数回归多变量时间序列区间预测模型

区间预测 | MATLAB实现基于QRF随机森林分位数回归多变量时间序列区间预测模型 目录 区间预测 | MATLAB实现基于QRF随机森林分位数回归多变量时间序列区间预测模型效果一览基本介绍程序设计参考资料 效果一览 基本介绍 1.Matlab实现基于QRF随机森林分位数回归多变量时间序列区间…

Visual Studio Code Python 扩展中的包管理

排版&#xff1a;Alan Wang Python 凭借其简单的语法和强大的库&#xff0c;目前已成为最流行的编程语言之一&#xff0c;也是最适合那些刚接触编程的人们的语言。但是&#xff0c;随着项目复杂性和规模的增长&#xff0c;管理依赖项的复杂性也会增加。当新用户不断承接更成熟的…

数分面试题-SQL常见面试题型1

目录标题 1、连续时间问题1.1 最近一周内的活跃天数1.2 每个用户一周内最大连续活跃天数1.3 计算截至当前&#xff0c;每个用户已经连续签到的天数 2、时间间隔问题举例3、sql窗口分析函数3.1 有一个日志登陆列表&#xff0c;获取用户在某个页面停留时长3.2 寻找至少连续出现3次…

【Docker】Docker容器编排

目录 一、Docker Compose1.2Docker Compose 环境安装1.3 YAML 文件格式及编写注意事项2.3 Docker Compose配置常用字段2.4 Docker Compose 常用命令 二、Docker Compose实验2.1编写Nginx的Dockerfile脚本2.2编写MySQL&#xff0c;Dockerfile脚本2.3编写PHP&#xff0c;Dockerfi…

K8S中网络如何通信

Kubernetes 提出了一个自己的网络模型“IP-per-pod”&#xff0c;能够很好地适应集群系统的网络需求&#xff0c;它有下面的这 4 点基本假设&#xff1a; 集群里的每个 Pod 都会有唯一的一个 IP 地址。Pod 里的所有容器共享这个 IP 地址。集群里的所有 Pod 都属于同一个网段。…

STM32MP157驱动开发——按键驱动(POLL 机制)

文章目录 “POLL ”机制&#xff1a;APP执行过程驱动使用的函数应用使用的函数pollfd结构体poll函数事件类型实现原理 poll方式的按键驱动程序(stm32mp157)gpio_key_drv.cbutton_test.cMakefile修改设备树文件编译测试 “POLL ”机制&#xff1a; 使用休眠-唤醒的方式等待某个…