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

news2024/11/26 15:27:00

所用数据

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

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.coloradmin.cn/o/780549.html

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

相关文章

启用window10专业版系统自带的远程桌面

启用window10专业版系统自带的远程桌面 Windows操作系统作为应用最广泛的个人电脑操作系统,在我们身边几乎随处可见。虽然近些年因手机、平板电脑等设备的兴起,个人电脑的存在感逐渐降低,但对于一些大型程序和特殊情况(办公软件、…

超细Python性能测试实战,Locust框架性能测试(详全)

目录:导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结(尾部小惊喜) 前言 当涉及到评估应用…

《零基础入门学习Python》第062讲:论一只爬虫的自我修养10:安装Scrapy

这节课我们来谈谈 Scrapy 说到Python爬虫,大牛们都会不约而同地提起Scrapy。因为Scrapy是一个为了爬取网站数据,提取结构性数据而编写的应用框架。可以应用在包括数据挖掘,信息处理或存储历史数据等一系列的程序中。 Scrapy最初是为了页面抓…

【微信小程序】使用iView组件库中的icons资源

要在微信小程序中使用iView组件库中的icons资源,需要先下载并引入iView组件库,并按照iView的文档进行配置和使用。 以下是一般的使用步骤: 下载iView组件库的源码或使用npm安装iView。 在小程序项目的app.json文件中添加iView组件库的引入配…

概率论的学习和整理21:用EXCEL来做假设检验(未完成草稿)

目录 1 EXCEL可以用来做假设检验 1.1 如何打开 数据分析 和 规划求解 1.2 EXCEL里关于正态分布的准备知识 2 基本的假设检验 2.1 最基本的假设检验,单边的Z检验 2.1 双样本F检验 2.1.1 例题 2.1.2 进行F检验之前需要满足一些假设条件 2.1.3 计算步骤 2.1…

qs库的使用

前言 qs是一个流行的查询参数序列化和解析库。可以将一个普通的object序列化成一个查询字符串,或者反过来可以将一个查询字符串解析成一个object,而且支持复杂的嵌套。在工作中,最经常使用qs的地方就是请求参数格式转换的时候,但是…

QT通过TCP协议发送结构体数据

文章目录 前言1. memcpy方式1.1 发送整个结构体1.2 发送部分数据 2. QDataStream2.1 符号<<2.2 wrieteRawData 总结 前言 做上位机的时候下发数据&#xff0c;数据是一个结构体&#xff0c;这里就阐述一下怎么通过TCP协议发送结构体。 我自己写的时候主要通过两种方式&a…

K8S初级入门系列之五-Pod的高级特性

一、前言 前一篇我们了解了Pod的基本概念和操作&#xff0c;本篇我们继续研究Pod的一些高级特性&#xff0c;包括Pod的生命周期&#xff0c;pod探针&#xff0c;pod的调度等。 二、生命周期 1、Pod的生命周期 Pod的生命周期示意图如下&#xff1a; 挂起(Pending)&#xff0c…

webpack配置externals汇总

webpack5.88.1 vue2.7.14 vue-router3.6.5 element-ui2.15.13 ant-design-vue1.7.8 externals用于提取第三方依赖包&#xff0c;使用cdn资源的方式将第三方依赖包引入项目&#xff0c;可以大大减少项目打包体积 配置externals对象有技巧&#xff1a; key 就是 import aaa from …

No3: 学习过程中故障成长积累

文章目录 故障积累1、编码错误导致 故障积累1、编码错误导致

JDK8,JDK11,JDK17,JDK21及中间版本主要更新特性

一、版本roadmap图 官方地址&#xff1a; https://www.oracle.com/java/technologies/java-se-support-roadmap.html 从上图可以很清晰得可以看出&#xff0c;JDK7,JDK8,JDK11,JDK17,JDK21是长期维护的版本。从目前来看&#xff0c;JDK8到2023年已经有将近10年的历史了&#…

C++笔记之使用STL的function实现回调机制

C笔记之使用STL的function实现回调机制 code review! 文章目录 C笔记之使用STL的function实现回调机制1.使用普通函数2.使用匿名函数&#xff08;Lambda表达式&#xff09;3.使用函数对象&#xff08;functor&#xff09;4.运行输出 1.使用普通函数 代码 #include <funct…

【C++杂货铺】运算符重载

目录 前言一、运算符重载二、赋值运算符重载三、完善日期类3.1 重载关系运算符3.2 重载、3.3 重载-、-3.4 重载、--3.5 重载<<、>> 四、const成员五、取地址及const取地址操作符重载 前言 本文将以日期类为基础&#xff0c;去探寻运算符重载的特性与使用方法&…

小程序如何删除/修改/上下架分类

删除、修改或上下架小程序中的分类可以帮助商家更好地管理和调整分类展示。下面将介绍如何在小程序中删除、修改或上下架分类的操作步骤。 在小程序管理员后台->分类管理&#xff0c;可以看到处于上架和下架状态的分类。 删除&#xff1a;点击分类上的删除按钮&#xff0c;…

vscode使用g++编译.c文件或.cpp文件

vscode是一个跨平台、轻量级、插件非常丰厚的IDE&#xff0c;这里介绍在vscode里使用g来编译.cpp文件。g也叫GCC, 在Window中&#xff0c;是使用MinGW方式实现g的&#xff0c;它分为32位和64位2个版本&#xff0c;其中&#xff0c;MinGW-64是64位的&#xff0c;MinGW-32是32位的…

qt MainWindow设置layout失效

错误的做法&#xff1a;直接把layout设置到MainWindow上 MainWindow::MainWindow(QWidget *parent): QMainWindow(parent), ui(new Ui::MainWindow) {ui->setupUi(this);QVBoxLayout *mainLayout new QVBoxLayout();QPushButton *btn1 new QPushButton("aa", t…

VRIO模型

VRIO模型 由美国学者Jay B.Barney 1991年在《企业资源和持续竞争优势》中提出的&#xff0c;是一个战略规划工具&#xff0c;一般用于评估和分析企业的内部资源&#xff0c;并利用这些资源获得持续的竞争力。 模型介绍 该模型指出了有四个因素对持久的竞争优势产生了影响&…

【技术面试】Java八股文业余选手-上篇(持续更新)

文章目录 1. Java 基础【√】1.1 数据结构&#xff1a;集合 Set Map List Array Tree【√】1.2 基础算法&#xff1a;排序算法、二分算法、银行家算法、最短路径算法、最少使用算法、一致性哈希算法【√】1.3 Thread【】1.4 代理、反射、流操作、Netty【√】1.5 JVM 原理【√】…

前端学习——Vue (Day2)

指令补充 指令修饰符 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta http-equiv"X-UA-Compatible" content"IEedge"><meta name"viewport" content"widthdevi…

PHP登陆/php登录--【强撸项目】

强撸项目系列总目录在000集 PHP要怎么学–【思维导图知识范围】 文章目录 本系列校训本项目使用技术 上效果图phpStudy 设置导数据库 项目目录如图&#xff1a;页面代码后台代码 这么丑的界面能忍&#xff1f;配套资源作业&#xff1a; 本系列校训 用免费公开视频&#xff0…