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

news2024/11/15 18:05:28

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]=1
        y_predic_proba[y_predic_proba[[1]]<=j]=0
        recall=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]=1
        y_predic_proba[y_predic_proba[[1]]<=j]=0
        recall=metrics.recall_score(y_test,y_predic_proba[1])
        recalls.append(recall)
        print(j,recall)

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

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

相关文章

HTML及CSS面试题4

1、BFC 1.1、介绍BFC及其应用 补充——触发BFC的方式&#xff0c;常见的有&#xff1a; 设置浮动overflow设置为&#xff1a;auto、scroll、hiddenpositon设置为&#xff1a;absolute、fixed 介绍&#xff1a; ○ 所谓BFC&#xff0c;指的是&#xff1a;一个独立的布局环境&am…

C2M商业模式分析与运营平台建设解决方案(一)

C2M&#xff08;Customer to Manufacturer&#xff09;商业模式通过直接将消费者需求与生产商对接&#xff0c;极大提升了生产效率和市场响应速度&#xff0c;本文将探讨如何通过构建高效的运营平台&#xff0c;利用大数据分析、人工智能算法及灵活的供应链管理&#xff0c;优化…

四川汇昌联信做拼多多电商怎么样?

近年来&#xff0c;拼多多凭借其独特的社交电商模式迅速崛起&#xff0c;成为国内领先的电商平台之一。四川汇昌联信作为一家专注于电商领域的企业&#xff0c;涉足拼多多平台无疑是顺应市场趋势的明智之举。那么&#xff0c;四川汇昌联信在拼多多平台上的表现如何呢? 一、产品…

推荐国产跨平台、轻量级的文本编辑器 Notepad-- v2.18

Notepad-- 是使用C编写的轻量级文本编辑器, 简称ndd, 可以支持Window/Mac/Linux操作系统平台。 我们的目标&#xff1a;完成文本编辑类软件的国产可替代&#xff0c;重点在国产Uos/Linux系统、Mac 系统上发展。 对比其它竞品Notepad类软件而言&#xff0c;我们的优势是可以跨…

【unix高级编程系列】信号

引言 以前对信号的理解&#xff0c;仅仅停留在main函数入口注册几个异常信号&#xff08;SIGPIPE、SIGSEGV、SIGFPE&#xff09;处理函数。当捕获到异常时&#xff0c;将进程的堆栈进行打印&#xff0c;方便排查、定位问题。这一类问题我认为是利用linux系统的异常信号机制&am…

系统架构师选择题知识点笔记

系统架构师复习笔记 选择题知识点 分布数据库特性 分片透明性&#xff1a;指用户或应用程序不需要知道逻辑上访问的表具体是怎么分块存储的&#xff1b;复制透明性&#xff1a;指采用复制技术的分布方法&#xff0c;用户不需要知道数据是复制到哪些节点上&#xff1b;逻辑透…

AI绘画网站爆款推荐,人人都是艺术家!

嗨&#xff0c;小伙伴们&#xff0c;最近AI 绘画简直是火出了新高度&#xff01;网上那么多 AI 绘图站&#xff0c;你或许已经眼花缭乱。但悄悄告诉你&#xff0c;有些站点只能照搬照片&#xff0c;却不让你天马行空地改造&#xff0c;想找一个既聪明又有创意的 AI 画家&#x…

Nginx详解配置实例及企业高性能web服务器

目录 企业高性能web服务器 一.Web 服务基础介绍 1.1 互联网发展历程回顾 1.2 Web 服务介绍 1.2.1 Apache 经典的 Web 服务端 1.2.1.1 Apache prefork 模型 1.2.1.2 Apache worker 模型 1.2.1.3 Apache event模型 1.2.2 Nginx-高性能的 Web 服务端 1.2.3服务端 I/O 流…

循环图神经网络教程2——循环图神经网络

介绍 循环图神经网络&#xff08;Recurrent Graph Neural Network&#xff0c;RGNN&#xff09;。在标准神经网络中&#xff0c;连续的学习权重层用于从输入张量中逐步提取更高级别的特征。在用于计算机视觉的神经网络中&#xff0c;低级特征(如短直线和曲线)的存在是由较早的…

Java类的卸载

类、类的加载器、类的实例之间的引用关系 类的生命周期 类的加载器如下&#xff1a;

进程部分相关概念

进程 进程是一个程序执行的过程&#xff0c;会去分配内存资源&#xff0c;cpu的调度 进程不仅仅是一个正在运行的程序&#xff0c;它包含了程序执行所需的所有资源和状态信息 资源分配&#xff1a;操作系统会为每个进程分配必要的资源&#xff0c;如内存空间、文件句柄等。这些…

nginx重定向与防盗链

重定向 由于网站的扩容&#xff0c;负荷较大&#xff0c;需要将一部分内容迁移到其他服务器上。但是这个时候又不能更改用户常访问的域名&#xff0c;因此对其进行重定向。 1. 域名重定向 www.sxl1.com/aaa的站点需要重定向到aaa.sxl1.com rewrite ^/aaa$ aaa.sxl1.com/…

letcode 分类练习 513.找树左下角的值 112. 路径总和 106.从中序与后序遍历序列构造二叉树

letcode 分类练习 513.找树左下角的值 112. 路径总和 106.从中序与后序遍历序列构造二叉树 513.找树左下角的值112. 路径总和106.从中序与后序遍历序列构造二叉树 513.找树左下角的值 遍历二叉树&#xff0c;并记录当前的深度&#xff0c;如果深度大于最大深度&#xff0c;那么…

关于 Vivado HLS 的三大误读

【转载】关于 Vivado HLS 的三大误读 目前&#xff0c;在高层次综合&#xff08;HLS, High Level Synthesis&#xff09;领域&#xff0c;Vivado HLS可谓独树一帜。它有效地拉近了软件工程师与FPGA之间的距离&#xff0c;加速了算法开发的进程&#xff0c;缩短了产品上市时间。…

leetcode_52. N 皇后 II

52. N 皇后 II 题目描述&#xff1a;n 皇后问题 研究的是如何将 n 个皇后放置在 n n 的棋盘上&#xff0c;并且使皇后彼此之间不能相互攻击。 给你一个整数 n &#xff0c;返回 n 皇后问题 不同的解决方案的数量。 示例 1&#xff1a; 输入&#xff1a;n 4 输出&#xff1a;2…

C++:病毒系列回归记2/3 (Doge智能系统已上线)

上一期&#xff1a;C:病毒系列回归记1/3 (Doge智能系统已上线) 这一步真的非常爽哦 void Crazy(int n) {if(n 0)system("start ラム.vbs");if(n 1)system("start 今年のトラック.vbs");if(n 2)system("start ロシアのスートン焼却発電.vbs")…

安装并配置开发环境

安装并配置开发环境 获取虚拟机系统 下载vmware虚拟机工具 使用浏览器打开网址 https://www.vmware.com/products/workstation-pro/workstation-pro-evaluation.html 参考下图箭头所示&#xff0c;点击下载安装 Windows版本的VMware Workstation &#xff0c;点击 DOWNLOAD …

java基础--day10字符串

视频网址&#xff1a;字符串-01-API和API帮助文档_哔哩哔哩_bilibili 1.API 1.1API概述 什么是PAI API (Application Programming Interface) &#xff1a;应用程序编程接口 java中的API 指的就是 JDK 中提供的各种功能的 Java类&#xff0c;这些类将底层的实现封装了起来&am…

MySQL笔记01: MySQL入门_1.3 MySQL启动停止与登录

1.3 MySQL启动停止与登录 1.3.1 MySQL启动与停止 MySQL数据库分为客户端和服务器端&#xff0c;只有服务器端服务开启以后&#xff0c;才可以通过客户端登录MySQL服务端。 首先&#xff0c;以管理员身份运行“命令提示符”&#xff1a; &#xff08;1&#xff09;启动MySQL服务…

AArch64中的寄存器

目录 通用寄存器 其他寄存器 系统寄存器 通用寄存器 大多数A64指令在寄存器上操作。该架构提供了31个通用寄存器。 每个寄存器可以作为64位的X寄存器&#xff08;X0..X30&#xff09;使用&#xff0c;或者作为32位的W寄存器&#xff08;W0..W30&#xff09;使用。这两种是查…