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…

线程池几个核心参数说明

线程池几个核心参数 corePoolSize:核心线程数量大小。maximumPoolSize:线程池最大容纳线程数。keepAliveTime:线程空闲后的存活时长。TimeUnit:单位时间。BlockingQueue:缓存异步任务的队列。 ThreadFactory &#xff…

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.…

AutoSAR系列讲解(实践篇)9.1-协议数据单元PDU

本章主要是讲解通信(不包括诊断和标定的纯通信),同样是主要以CAN来讲解。由于通信大家其实用的基本上是其最基础的功能,所以本章的实验主要就是教大家如何配置基础通信,但是高级一点的功能,博主也会在前面这几节给大家讲到,用不到的同学仅作了解就行。同样,忘了通信是怎…

day44-Spring_AOP

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

Grub2基础上添加Windows引导和临时启动Windows

grub2临时启动Windows 在引导列表页按c进入Grub2终端 。 insmod part_gpt set root(hd0, 1) chainloader /efi/Microsoft/Boot/bootmgfw.efi bootinsmod part_gpt 导入模块,让grub可以看到gpt格式的硬盘(这个有没有必要我也不清楚,但执行…

WPF实战学习笔记06-设置待办事项界面

设置待办事项界面 创建待办待办事项集合并初始化 TodoViewModel: using Mytodo.Common.Models; using Prism.Commands; using Prism.Mvvm; using System; using System.Collections.Generic; using System.Collections.ObjectModel; using System.Linq; using Sy…

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

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

建造者设计模式go实现尝试

文章目录 前言代码结果总结 前言 本文章尝试使用go实现“建造者”。 代码 package mainimport ("fmt" )// 产品1。可以有不同的毫无相关的产品,这里只举一个 type Product1 struct {parts []string }// 产品1逻辑。打印组成产品的部分 func (p *Product…

MySQL之函数、视图、存储过程

MySQL视图、函数与存储过程 1. 函数 1.1 语法 -- 函数是需要有返回值的,只能返回一个值 CREATE FUNCTION funcation_name (param_name data_type [, param_name2 data_type]) RETURNS return_data_type DETERMINISTIC -- 可选项,用于执行函数对于相同入参&#x…

[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…

关于uni.createInnerAudioContext()的duration音频长度获取不到问题

关于uni.createInnerAudioContext()的duration音频长度获取不到问题 代码如下: onLoad() {let _this this//初始化语音播放对象this.audioObj uni.createInnerAudioContext();this.audioObj.src 音频链接;// 音频进入可以播放状态,但不保证后面可以流…

MySQL explain详解

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

gerrit +git + windows 配置常见问题总结

Git 正常安装 配置 ssh-keygen 后,git clone 服务器代码报错 clone 报错1 no matching key exchange method found. Their offer: **diffie-hellman-group1-sha1**clone 报错2 no matching host key type found. Their offer: ssh-rsa解决方案 用户目录文件下.s…

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

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

springboot 整合Caffeine项目中使用介绍

java接口的查询如何能提高性能&#xff0c;比每次都去数据库中查询要快的方案有了&#xff0c;就是下面要介绍的。 一、添加依赖 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-cache</artifactId>…