机器学习:逻辑回归算法实现鸢尾花预测和银行数据处理

1、鸢尾花预测

        1、特征选择

        

        2、对特征处理

train=pd.read_excel("鸢尾花训练数据.xlsx")
test=pd.read_excel("鸢尾花测试数据.xlsx")
x_train=train[["萼片长(cm)","萼片宽(cm)","花瓣长(cm)","花瓣宽(cm)"]]
y_train=train[["类型_num"]].values.ravel()

        3、选择逻辑回归作为分类模型。

from sklearn.linear_model import LogisticRegression
lr=LogisticRegression()

        4、模型训练

lr.fit(x_train,y_train)
train_predicted=lr.predict(x_train)

        5、评估模型的性能。常用的评估指标包括准确率、召回率、精确度、F1分数

from sklearn import metrics
print(metrics.classification_report(y_train,train_predicted))

  完整代码

import pandas as pd
from sklearn.linear_model import LogisticRegression
train=pd.read_excel("鸢尾花训练数据.xlsx")
test=pd.read_excel("鸢尾花测试数据.xlsx")
x_train=train[["萼片长(cm)","萼片宽(cm)","花瓣长(cm)","花瓣宽(cm)"]]
y_train=train[["类型_num"]].values.ravel()lr=LogisticRegression()
lr.fit(x_train,y_train)
train_predicted=lr.predict(x_train)
from sklearn import metrics
print(metrics.classification_report(y_train,train_predicted))x_test=test[["萼片长(cm)","萼片宽(cm)","花瓣长(cm)","花瓣宽(cm)"]]
y_test=test[["类型_num"]].values.ravel()
test_predicted=lr.predict(x_test)
print(metrics.classification_report(y_test,test_predicted))predict=pd.read_excel("鸢尾花预测数据.xlsx")
x_predict=predict[["萼片长(cm)","萼片宽(cm)","花瓣长(cm)","花瓣宽(cm)"]]
predict_predicted=lr.predict(x_predict)
print(predict_predicted)
print(lr.predict_proba(x_predict))

2、银行数据

  1. 导入必要的库

    • numpy 和 pandas 用于数据处理。
    • LogisticRegression 用于创建逻辑回归模型。
    • StandardScaler 用于特征缩放。
    • train_test_split 用于分割数据集。
    • cross_val_score 用于交叉验证。
    • metrics 用于评估模型性能。                                                                                              
  2. 读取数据

    使用 pandas 的 read_csv 函数读取 "creditcard.csv" 文件。      
  3. 特征缩放

    使用 StandardScaler 对 "Amount" 特征进行标准化。                                                                                      
    data["Amount"]=scaler.fit_transform(data[["Amount"]])
    data=data.drop(["Time"],axis=1)

  4. 删除不需要的列

    删除 "Time" 列,因为它对于分类问题可能没有帮助。
  5. 分割数据集

    使用 train_test_split 将数据集分割为训练集和测试集。                                                       
    from sklearn.model_selection import train_test_split
    x=data.drop(["Class"],axis=1)
    y=data["Class"]
    x_train,x_test,y_train,y_test=train_test_split(x,y,test_size=0.3,random_state=0)
                                                     
  6. 交叉验证寻找最佳正则化参数

    循环不同的正则化参数 C 值,使用交叉验证计算召回率,并找到最佳 C 值。                             
    from sklearn.model_selection import cross_val_score
    c=[0.01,0.1,1,10,100]
    d=[]
    for i in c:lr=LogisticRegression(penalty="l2",C=i,solver="lbfgs",max_iter=1000)score=cross_val_score(lr,x_train,y_train,cv=8,scoring="recall")scores=sum(score)/len(score)d.append(scores)
           
  7. 创建并训练逻辑回归模型

    使用找到的最佳 C 值创建逻辑回归模型,并用训练集数据训练模型。                                       
    best_c=c[np.argmax(d)]
    lr=LogisticRegression(penalty="l2",C=best_c,solver="lbfgs",max_iter=1000)
    lr.fit(x_train,y_train)
  8. 评估模型

    使用训练集和测试集数据评估模型性能,并打印分类报告。                                                   
    from sklearn import metrics
    predicted_train=lr.predict(x_train)
    print(metrics.classification_report(y_train,predicted_train))predicted_test=lr.predict(x_test)
    print(metrics.classification_report(y_test,predicted_test))
     
  9. 调整分类阈值并评估召回率

    循环不同的分类阈值 thresh,根据阈值调整预测结果,并计算每个阈值下的召回率。             
    thresh=[0.1,0.2,0.3,0.4,0.5,0.6]
    recalls=[]
    for j in thresh:y_predic_proba=lr.predict_proba(x_test)y_predic_proba=pd.DataFrame(y_predic_proba).drop([0],axis=1)y_predic_proba[y_predic_proba[[1]]>j]=1y_predic_proba[y_predic_proba[[1]]<=j]=0recall=metrics.recall_score(y_test,y_predic_proba[1])recalls.append(recall)print(j,recall)
           
  10. 打印结果:                                                                                                                                        

  11. 完整代码:

    import numpy as np
    import pandas as pd
    from sklearn.linear_model import LogisticRegression
    from sklearn.preprocessing import StandardScaler
    scaler=StandardScaler()
    data=pd.read_csv("creditcard.csv")
    data["Amount"]=scaler.fit_transform(data[["Amount"]])
    data=data.drop(["Time"],axis=1)from sklearn.model_selection import train_test_split
    x=data.drop(["Class"],axis=1)
    y=data["Class"]
    x_train,x_test,y_train,y_test=train_test_split(x,y,test_size=0.3,random_state=0)from sklearn.model_selection import cross_val_score
    c=[0.01,0.1,1,10,100]
    d=[]
    for i in c:lr=LogisticRegression(penalty="l2",C=i,solver="lbfgs",max_iter=1000)score=cross_val_score(lr,x_train,y_train,cv=8,scoring="recall")scores=sum(score)/len(score)d.append(scores)
    best_c=c[np.argmax(d)]
    lr=LogisticRegression(penalty="l2",C=best_c,solver="lbfgs",max_iter=1000)
    lr.fit(x_train,y_train)
    from sklearn import metrics
    predicted_train=lr.predict(x_train)
    print(metrics.classification_report(y_train,predicted_train))predicted_test=lr.predict(x_test)
    print(metrics.classification_report(y_test,predicted_test))thresh=[0.1,0.2,0.3,0.4,0.5,0.6]
    recalls=[]
    for j in thresh:y_predic_proba=lr.predict_proba(x_test)y_predic_proba=pd.DataFrame(y_predic_proba).drop([0],axis=1)y_predic_proba[y_predic_proba[[1]]>j]=1y_predic_proba[y_predic_proba[[1]]<=j]=0recall=metrics.recall_score(y_test,y_predic_proba[1])recalls.append(recall)print(j,recall)

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

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

相关文章

Vue 生命周期详解含demo、面试常问问题案例

Vue 生命周期详解、面试常问问题案例 含 demo 文章目录 Vue 生命周期详解、面试常问问题案例 含 demo一、Vue 生命周期是什么二、Vue 中如何使用生命周期钩子1. **beforeCreate**2. **created**3. **beforeMount**4. **mounted**5. **beforeUpdate**6. **updated**7. **beforeD…

Python编写Word文档

目录 0. 安装依赖 1. 创建word文档 2. 添加标题、居中、字体16大小 3. 添加标题一 4. 添加一段话并设置字体颜色 封装函数 5. 换页 6. 插入表格 0. 安装依赖 python-docx1.1.2 1. 创建word文档 from docx import Documentdoc Document() 2. 添加标题、居中、字体1…

php-xlswriter实现数据导出excel单元格合并,内容从指定行开始写

最终效果图&#xff1a; 代码&#xff1a; public function export_data() {$list $this->get_list_organ();$content [];$content[] []; // 第2行不设置内容&#xff0c;设置为空foreach ($list as $key > $value) {$content[] [$value[organ_name], $value[clas…

动态规划——背包问题(01背包、完全背包,分组背包与二进制优化)

本蒟蒻写二进制优化开始的时候写昏了&#xff0c;并且昏了一下午。但好在有神犇救命&#xff0c;这篇博客才得以面世——躲着人群 一、01背包 概述&#xff1a; 其常见的问题形式为&#xff1a;给出n个物品&#xff0c;每个物品有对应的价值和体积。给出背包容量后求不超过背…

JNI编程二:JNI数据类型

目录 前言一、数据类型 jclass / jobject二、JNI常见的数据类型三、运用数据类型3.1 修改String类型的变量3.2 修改int类型的变量 前言 前面阐述了JNI的开发流程&#xff0c;接下来探究JNI中的数据类型。编码承接上文JNI编程一&#xff1a;JNI开发流程 一、数据类型 jclass /…

STM32——I2C和SPI波形分析

波形分析 I2C波形 //写命令 void OLED_WR_CMD(uint8_t cmd) { HAL_I2C_Mem_Write(&hi2c1 ,0x78,0x00,I2C_MEMADD_SIZE_8BIT,&cmd,1,0x100); } //写数据 void OLED_WR_DATA(uint8_t data) { HAL_I2C_Mem_Write(&hi2c1 ,0x78,0x40,I2C_MEMADD_SIZE_8BIT,&am…

第三届IEEE云计算、大数据应用与软件工程国际学术会议 (IEEE-CBASE 2024,10月11-13)

第三届IEEE云计算、大数据应用与软件工程国际学术会议 ( CBASE 2024 &#xff09;将于2024年10月11—13日在中国杭州举办。 该会议在连续两届成功举办的基础上&#xff0c;本届将由浙江水利水电学院、浙江省自动化学会、浙江省科协智能制造学会联合体主办&#xff0c;浙江水利水…

【轻松拿捏】设计模式六大基本原则(一)单一职责原则(SRP - Single Responsibility Principle)

&#x1f388;边走、边悟&#x1f388;迟早会好 一. 概述 单一职责原则&#xff08;SRP - Single Responsibility Principle&#xff09;是面向对象设计中的一个基本原则。它的核心思想是&#xff1a;一个类只应有一个引起它变化的原因&#xff0c;也就是说&#xff0c;一个类…

git clone报错unable to access

网页能够访问github.com和外网&#xff0c;git 也是安装了最新版&#xff0c;但是在使用 git clone xxx 时就报错&#xff1a; $ git clone https://github.com/XXX.git Cloning into XXX... fatal: unable to access https://github.com/XXXc.git/: OpenSSL SSL_connect: SSL…

C ++初阶:C++入门级知识点

目录 &#x1f31e;0.前言 &#x1f688;1.C输入输出 &#x1f688;2.缺省参数 &#x1f69d;2.1全缺省参数 &#x1f69d;2.2半缺省参数 &#x1f688;3.函数重载 &#x1f69d;3.1参数类型不同 &#x1f69d; 3.2参数个数不同 &#x1f69d;3.3参数类型顺序不同 ​…

相似度计算方法-编辑距离 (Edit Distance)

定义 编辑距离&#xff08;Edit Distance&#xff09;&#xff0c;也称为Levenshtein距离&#xff0c;是一种衡量两个字符串相似度的方法。它定义为从一个字符串转换为另一个字符串所需的最少单字符编辑操作次数&#xff0c;这些操作包括插入、删除或替换一个字符。 计算方法 …

Mysql(三)---增删查改(基础)

文章目录 前言1.补充1.修改表名1.2.修改列名1.3.修改列类型1.4.增加新列1.5.删除指定列 2.CRUD3.新增(Create)3.1.单行插入3.2.指定列插入3.3.多行插入 4.数据库的约束4.1.约束的分类4.2.NULL约束4.3.Unique约束4.4.Default 默认值约束4.5.PRIMARY KEY&#xff1a;主键约束4.6.…

谷哥剪映助手实操,批量自动化制作左右分屏视频

我给大家介绍如何用谷哥剪映助手&#xff0c;配合剪映批量制作左右分屏或上下分屏视频。 首先我们准备好剪映参考草稿&#xff0c;草稿里有主轨和复轨两条素材。一般情况下&#xff0c;副轨比主轨时长更长。剪映助手将根据主轨时长裁切副轨。 这里需要注意的是&#xff0c;在批…

十五年以来 — 战略性云平台服务的演进路径之全面呈现(含亚马逊、微软和谷歌)

Gartner每年都发布对全球IaaS平台进行评估的魔力象限报告。2023年底&#xff0c;Gartner将此项评估的名称改为“战略性云平台服务”&#xff08;Strategic cloud platform services&#xff09;&#xff0c;尽管其核心仍为IaaS&#xff0c;但是&#xff0c;毫无疑问&#xff0c…

90. UE5 RPG 实现技能的装配

在上一篇里&#xff0c;我们实现了在技能面板&#xff0c;点击技能能够显示出技能的相关描述以及下一级的技能的对应描述。 在这一篇里&#xff0c;我们实现一下技能的装配。 在之前&#xff0c;我们实现了点击按钮时&#xff0c;在技能面板控制器里存储了当前选中的技能的相关…

ZooKeeper工作原理

1. ZooKeeper工作原理 1.1 ZooKeeper角色 领导者&#xff08;Leader&#xff09;&#xff1a;在Zookeeper集群中&#xff0c;Leader是负责管理集群事务的节点。它负责处理所有的写请求&#xff0c;并将这些请求转化为事务&#xff0c;并提交事务日志。Leader节点还负责发起和决…

用C#写一个随机音乐播放器

form1中namespce里的代码如下 public partial class Form1 : Form {public Form1(){InitializeComponent();}private void button1_Click(object sender, EventArgs e){string folder textBox1.Text;string folderPath folder; // 指定音频文件所在的文件夹路径OpenRandomFi…

vue项目上线打包后出现的问题

1、出现空白页 1.1 打包路径&#xff1a; module.exports {publicPath:./, //修改为绝对路径 } 修改完打包路径后build可以展示页面 1.2 路由模式&#xff1a; 项目上线要求是history模式&#xff0c;需要后端做重定向 前端自测可以使用h…

JavaWeb笔记_FilterListener

一.过滤器 1.1 过滤器概述 过滤器主要用来拦截目标资源&#xff08;静态资源或动态资源&#xff09;的请求和响应 &#xff08;类似地铁的安检&#xff09; 我们访问动态或静态资源都要通过URL访问&#xff1a;http://localhost:8080/... 所以过滤器本质上拦截的是URL 1.2 过滤…

dps或者ppt文件判断是否加密

doc文件是否加密可以通过fib来判断&#xff0c;例如 同样的方法判断ppt也可以&#xff0c;但是在判断wps保存的dps文件时&#xff0c;提示没有加密&#xff0c;文件双击打开时又需要密码&#xff0c;查看ppt格式文档有下面发现 查看文件的二进制发现了加密标识 后面再研究doc x…