通过5折交叉验证,实现逻辑回归,决策树,SVM,随机森林,GBDT,Xgboost,lightGBM的评分

2023-11-17

通过5折交叉验证,实现逻辑回归,决策树,SVM,随机森林,GBDT,Xgboost,lightGBM的评分

  • 导入的包
import pandas as pd
import warnings
from sklearn.preprocessing import scale
from sklearn.model_selection import cross_val_score
from sklearn.linear_model import LogisticRegression
from sklearn.tree import DecisionTreeClassifier
from sklearn.svm import SVC
from sklearn.ensemble import RandomForestClassifier
from sklearn.ensemble import GradientBoostingClassifier
from xgboost.sklearn import XGBClassifier
import lightgbm as lgb
  • 读取数据集
data_all = pd.read_csv('/home/infisa/wjht/project/DataWhale/data_all.csv', encoding='gbk')
  • 处理数据集
df_y=data_all['status']
df_X=data_all.drop(columns=['status'])
df_X=scale(df_X,axis=0)  #将数据转化为标准数据
  • 构建模型
lr = LogisticRegression(random_state=2018,tol=1e-6)  # 逻辑回归模型

tree = DecisionTreeClassifier(random_state=2018) #决策树模型

svm = SVC(probability=True,random_state=2018,tol=1e-6)  # SVM模型

forest=RandomForestClassifier(n_estimators=100,random_state=2018) # 随机森林

Gbdt=GradientBoostingClassifier(random_state=2018) #CBDT

Xgbc=XGBClassifier(random_state=2018)  #Xgbc

gbm=lgb.LGBMClassifier(random_state=2018)  #lgb
  • 构建评分函数,并采取5折交叉验证的方式评分
def muti_score(model):
    warnings.filterwarnings('ignore')
    accuracy = cross_val_score(model, df_X, df_y, scoring='accuracy', cv=5)
    precision = cross_val_score(model, df_X, df_y, scoring='precision', cv=5)
    recall = cross_val_score(model, df_X, df_y, scoring='recall', cv=5)
    f1_score = cross_val_score(model, df_X, df_y, scoring='f1', cv=5)
    auc = cross_val_score(model, df_X, df_y, scoring='roc_auc', cv=5)
    print("准确率:",accuracy.mean())
    print("精确率:",precision.mean())
    print("召回率:",recall.mean())
    print("F1_score:",f1_score.mean())
    print("AUC:",auc.mean())

其中mean()指的是求得的均值

模型 准确率 精确率 召回率 F1_score AUC
逻辑回归 0.7890191148682617 0.6542724662896913 0.3377975457965613 0.44525012166067884 0.7840451024530857
决策树 0.6962524533638791 0.6962524533638791 0.6962524533638791 0.6962524533638791 0.6962524533638791
SVM 0.787758390223099 0.7351623295760905 0.24060335431243626 0.36179547264664874 0.7640376541388867
随机森林 0.7921756804332226 0.7135700690071172 0.2867128441334693 0.40835414886475174 0.7752164698827589
GBDT 0.7938590063951863 0.6604108594441386 0.36633732991104395 0.4708811551285791 0.7888240065764295
Xgboost 0.7982740847293591 0.6829783239831001 0.3663162336064133 0.47673826685376613 0.7914190511145234
LightGbm 0.79049080811139 0.6421783397519263 0.3730354066312717 0.47150438344663004 0.7776116341798183
  • 分析
    模型的评分思想,是通过采用5折交叉验证,得出其中的均值分数来评判。从上表中可以看出逻辑回归,随机森林,GBDT,Xgboost,LightGbm的各个指标都很相近而且分数也较高,说明这几个模型拟合数据效果都较好,都可以选做模型。综合来看Xgboost的分数更高一些,它的评分效果最好。

  • 问题
    01 还没有学会在代码中,可以直接输出表格的操作。
    02 对各个模型的参数还不太了解
    03 对数据集划分,怎样构造优质的数据还比较欠缺。

  • 参考文章
    cross_val_score的 scoring参数值解析
    python机器学习库sklearn——交叉验证(K折、留一、留p、随机)
    12号同学写的博客

  • 完整代码

import pandas as pd
import warnings
from sklearn.preprocessing import scale
from sklearn.model_selection import cross_val_score
from sklearn.linear_model import LogisticRegression
from sklearn.tree import DecisionTreeClassifier
from sklearn.svm import SVC
from sklearn.ensemble import RandomForestClassifier
from sklearn.ensemble import GradientBoostingClassifier
from xgboost.sklearn import XGBClassifier
import lightgbm as lgb


# 读取数据集
data_all = pd.read_csv('/home/infisa/wjht/project/DataWhale/data_all.csv', encoding='gbk')

# 划分为5折交叉验证数据集
df_y=data_all['status']
df_X=data_all.drop(columns=['status'])
df_X=scale(df_X,axis=0)  #将数据转化为标准数据
#构建模型

lr = LogisticRegression(random_state=2018,tol=1e-6)  # 逻辑回归模型

tree = DecisionTreeClassifier(random_state=2018) #决策树模型

svm = SVC(probability=True,random_state=2018,tol=1e-6)  # SVM模型

forest=RandomForestClassifier(n_estimators=100,random_state=2018) # 随机森林

Gbdt=GradientBoostingClassifier(random_state=2018) #CBDT

Xgbc=XGBClassifier(random_state=2018)  #Xgbc

gbm=lgb.LGBMClassifier(random_state=2018)  #lgb



def muti_score(model):
    warnings.filterwarnings('ignore')
    accuracy = cross_val_score(model, df_X, df_y, scoring='accuracy', cv=5)
    precision = cross_val_score(model, df_X, df_y, scoring='precision', cv=5)
    recall = cross_val_score(model, df_X, df_y, scoring='recall', cv=5)
    f1_score = cross_val_score(model, df_X, df_y, scoring='f1', cv=5)
    auc = cross_val_score(model, df_X, df_y, scoring='roc_auc', cv=5)
    print("准确率:",accuracy.mean())
    print("精确率:",precision.mean())
    print("召回率:",recall.mean())
    print("F1_score:",f1_score.mean())
    print("AUC:",auc.mean())



model_name=["lr","tree","svm","forest","Gbdt","Xgbc","gbm"]
for name in model_name:
    model=eval(name)
    print(name)
    muti_score(model)


'''
lr
准确率: 0.7890191148682617
精确率: 0.6542724662896913
召回率: 0.3377975457965613
F1_score: 0.44525012166067884
AUC: 0.7840451024530857
tree
准确率: 0.6962524533638791
精确率: 0.39920670173446693
召回率: 0.4157413593052284
F1_score: 0.40705496051057793
AUC: 0.6029856787858856
svm
准确率: 0.787758390223099
精确率: 0.7351623295760905
召回率: 0.24060335431243626
F1_score: 0.36179547264664874
AUC: 0.7640376541388867
forest
准确率: 0.7921756804332226
精确率: 0.7135700690071172
召回率: 0.2867128441334693
F1_score: 0.40835414886475174
AUC: 0.7752164698827589
Gbdt
准确率: 0.7938590063951863
精确率: 0.6604108594441386
召回率: 0.36633732991104395
F1_score: 0.4708811551285791
AUC: 0.7888240065764295
Xgbc
准确率: 0.7982740847293591
精确率: 0.6829783239831001
召回率: 0.3663162336064133
F1_score: 0.47673826685376613
AUC: 0.7914190511145234
gbm
准确率: 0.79049080811139
精确率: 0.6421783397519263
召回率: 0.3730354066312717
F1_score: 0.47150438344663004
AUC: 0.7776116341798183
'''
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

通过5折交叉验证,实现逻辑回归,决策树,SVM,随机森林,GBDT,Xgboost,lightGBM的评分 的相关文章

  • eclipse导入后将普通项目变为java项目

    eclipse用subclipse导入svn项目时 没有选择项目类型 这样就不能修改项目的buildpath no action aviliable 打开workspace下面的 projcet文件在标签
  • SparkSQL HiveSQL 常用正则表达式

    SparkSQL HiveSQL 常用正则表达式 目录 SparkSQL HiveSQL 常用正则表达式 1 匹配汉字 2 匹配手机号码 3 匹配身份证 4 SparkSQL HiveSQL 常用正则函数 5 SparkSQL 分组 聚合
  • 期待2021!

    好久没写文章了 甚至好久没有看文章了 要说这些天怎么过去了呢 恍恍惚惚 竟一时语塞 恍惚着 这2020竟马上过去了 好多好多人都写了分享了自己的年终总结 看了一些 大家好像都很有收获 再想想自己 也不能说没有任何收获 但是说不出来 最大的收
  • docker镜像服务器间复制

    概述 我们制作好镜像后 有时需要将镜像复制到另一台服务器使用 能达到以上目的有两种方式 一种是上传镜像到仓库中 本地或公共仓库 但是另一台服务器很肯能只是与当前服务器局域网想通而没有公网的 所以如果使用仓库的方式 只能自己搭建私有仓库 这会
  • SpringBoot+Dubbo分布式SOA项目骨架搭建(二)

    SpringBoot Dubbo分布式SOA项目骨架搭建 项目介绍 本项目是来自于上一篇文章http blog csdn net songxinjianqwe article details 77478385 中的服务化拆分这个部分 经过一
  • QSplitter(分离器或分隔符)

    QSplitter 分离器或分隔符 本文为原创文章 转载请注明出处 或注明转载自 黄邦勇帅 原名 黄勇 本文出自本人原创著作 Qt5 10 GUI完全参考手册 网盘地址 https pan baidu com s 1iqagt4SEC8PU
  • 顺序表的原理与初始化

    顺序表是简单的一种线性结构 逻辑上相邻的数据在计算机内的存储位置也是相邻的 可以 快速定位第几个元素 中间不允许有空值 插入 删除时需要移动大量元素 顺序表的三个要素 用 elems 记录存储位置的基地址 分配一段连续的存储空间 size
  • crontab的使用方法介绍

    使用crontab你可以在指定的时间执行一个shell脚本或者一系列Linux命令 例如系统管理员安排一个备份任务使其每天都运行 安装 apt get install cron 服务器环境下默认都会安装 使用 crontab e 进入编辑页
  • java常见面试题及答案 11-20(JVM)

    11 JVM内存分哪几个区 每个区的作用是什么 java虚拟机主要分为以下一个区 方法区 1 有时候也成为永久代 在该区内很少发生垃圾回收 但是并不代表不发生GC 在这里进行的GC主要是对方法区里的常量池和对类型的卸载 2 方法区主要用来存
  • 安全测试初体验-XSS

    XSS XSS攻击成功后 攻击者能够对用户当前浏览器的页面植入恶意脚本 通过恶意脚本 控制用户的浏览器 这些用以完成各种具体功能的恶意脚本 被称为 XSS Payload XSS Payload实际上就是JavaScript脚本 所以任何J
  • JS逆向之某头条jsvmp逻辑层算法分析

    今天我们来研究下 某头条的jsvmp逻辑层加密算法 其主要的目的是想在大家在接触此类算法时 给出点实质性的建议和思路 0x01 分析加密 进入到目标网站通过分析请求会发现一个动态的 signature 加密参数 0x02 定位加密 不同于以
  • 在matlab中编译C++和opencv

    1 在matlab中运行 mex setup命令 选择C 类型 2 运行mex build 此时matlab配置基本完成 3在VS中添加matlab中的库目录和头文件目录 附加库目录 matlab安装目录下面的 extern lib win
  • 【Docker】 使用Docker-Compose 搭建基于 WordPress 的博客网站

    引 本文将使用流行的博客搭建工具 WordPress 搭建一个私人博客站点 部署过程中使用到了 Docker MySQL 站点搭建完成后经行了发布文章的体验 WordPress WordPress 是一个广泛使用的开源内容管理系统 CMS
  • 报告老师!AICA 学员交作业了!

    关注 飞桨PaddlePaddle 公众号 获取更多技术内容
  • linux-ssh安全策略(sshd)

    实际使用中 为限制ssh高危端口我们一般做以下策略 1 修改端口 ssh默认用22 2 密码强口令 3 root限制 4 新增ssh登录白名单 5 开启端口防火墙 6 有条件的话整个密钥登录更安全 不过avatar目前不支持密钥登录 所以项
  • 最安全的加密算法

    在密码学里 有一种理想的加密方案 叫做一次一密乱码本 one time pad one time pad的算法有以下要求 1 密钥必须随机产生2 密钥不能重复使用3 密钥和密文的长度是一样的 one time pad是最安全的加密算法 双方
  • “汉堡+奶昔”怎么就成了精致生活的热门标签?

    图片来源 视觉中国 文章来源 DT财经 左手汉堡 右手奶昔 这是新天地Coco的时髦新日常 最近沪上刮起一阵打卡新风潮 汉堡竟然成了标记城市美好生活的一大利器 还在纠结晚餐去金拱门还是汉堡王的DT君 发现自己在吃汉堡这件事上竟然也要被划出潮
  • 一步一步教你怎样给Apache Spark贡献代码

    本文将教大家怎样用10个步骤完成给Apache Spark贡献代码这个任务 到 Apache Spark 的github 页面内点击 fork 按钮 你的github帐户中会出现 spark 这个项目 本地电脑上 使用 git clone
  • 用python开发了一个绘制股票k线图的工具,还可以预测股票涨跌!【文末附源码和教学视频】

    文章目录 聊一聊这个工具 效果展示 股票数据 运行项目 前端界面 后端接口 源码地址 聊一聊这个工具 起初 我并不在意echarts 这不过是一个偶然 一次选择 一条简单的代码 一个图表的诞生 直到我完成了K线图的绘制 股票 一个神奇的发明
  • JS的内存泄露及处理方式

    概念 应用程序不再需要占用内存的时候 由于某些原因 内存没有被操作系统或可用内存池回收 就叫做内存泄漏 memory leak 内存的生命周期 内存分配 当我们声明变量 函数 对象的时候 系统会自动为他们分配内存 内存使用 即读写内存 也就

随机推荐