KAGGLE竞赛实战2-捷信金融违约预测竞赛-part2-用lightgbm建立baseline

news2025/1/19 16:53:10

接着上一篇,用lightgbm建立baseline,发现模型效果得到了很大优化(模型分提升为0.73)

# In[211]:


from sklearn.model_selection import cross_val_score,KFold


# In[228]:


import lightgbm as lgb


# In[229]:


from lightgbm import LGBMClassifier 


# In[232]:


from lightgbm import early_stopping


# In[237]:


from sklearn.metrics import roc_auc_score


# In[215]:


bad_chars=[':','""','\\','']
for feature in application_train.columns:
    if any(bad_char in feature for bad_char in bad_chars):
        print(f"Feature '{feature}'包含非法字符。")


# In[216]:


#去掉特殊字符import pandas as pd
import re
def clean_column_names(df):
    """
    清理DataFrame列名,去除特殊字符,使其符合JSON格式要求。
    
    参数:
    df (pd.DataFrame): 输入的DataFrame。
    
    返回:
    pd.DataFrame: 列名已清理的DataFrame。
    """
    # 定义一个函数,用于替换单个列名中的特殊字符
    def replace_chars(col_name):
        # 替换掉所有非字母数字和下划线的字符
        return re.sub(r'\W+', '_', col_name)
    
    # 应用替换函数到所有列名
    df.columns = [replace_chars(col) for col in df.columns]
    return df


    


# In[217]:


application_train=clean_column_names(application_train)
application_test=clean_column_names(application_test)


# In[218]:


bad_chars=[':','""','\\','']
for feature in application_train.columns:
    if any(bad_char in feature for bad_char in bad_chars):
        print(f"Feature '{feature}'包含非法字符。")


# In[238]:


def fit(train=application_train, valid=application_test):
    """
    模型训练函数,
    参数:train训练集
    valid测试集
    返回值:
    valid_auc:验证集上AUC指标
    feature_importances:特征重要性
    test_results:测试集结果
    """
    test = valid.copy()
    x_train = train.drop(['SK_ID_CURR', 'TARGET'], axis=1)
    y_train = train['TARGET']
    # 五折交叉验证
    folds = KFold(n_splits=5, shuffle=True, random_state=1412)
    # 定义变量保存预测结果
    oof_preds = np.zeros(y_train.shape[0])
    test_preds = np.zeros(test.shape[0])
    # 提取特征名
    feature_names = list(x_train.columns)
    # 空数组用于存储特征重要性值
    feature_importance_values = np.zeros(len(feature_names))
    # 实例化模型
    lgb = LGBMClassifier(n_estimators=10000, early_stopping_round=200, random_state=24)
    for fold_idx, (train_idx, valid_idx) in enumerate(folds.split(x_train)):
        X = x_train.iloc[train_idx]
        y = y_train.iloc[train_idx]
        valid_X = x_train.iloc[valid_idx]
        valid_y = y_train.iloc[valid_idx]
        # 定义早停回调函数
        callbacks = [early_stopping(stopping_rounds=200)]
        # 拟合模型
        lgb.fit(X, y, eval_set=[(X, y), (valid_X, valid_y)], callbacks=callbacks)
        # 记录特征重要性
        feature_importance_values += lgb.feature_importances_ / folds.n_splits
        # 在验证集上进行预测
        proba = lgb.predict_proba(valid_X, num_iteration=lgb.best_iteration_)
        oof_preds[valid_idx] = proba[:, 1]  # 选择正类概率
        test_preds += lgb.predict_proba(test[feature_names], num_iteration=lgb.best_iteration_)[:, 1]
    valid_auc = roc_auc_score(y_train, oof_preds)
    feature_importances = pd.DataFrame({'feature': feature_names, 'importance': feature_importance_values})
    test['TARGET'] = test_preds
    return valid_auc, feature_importances, test[['SK_ID_CURR', 'TARGET']]


# In[246]:


valid_auc,feature_importance,submission=fit(application_train[:50000],application_test)
#发现报错了Do not support special JSON characters in feature name,原因是有些列名里有特殊的字符,这是get_dummies时产生的


# In[247]:


valid_auc #0.7421786519800682


# In[248]:


#看下特征重要性
feature_importance.sort_values(by='importance',ascending=False)


# In[250]:


submission.to_csv('baseline_model_lightgbm.csv',index=False)#提交后成绩0.73


# In[251]:


application_train.to_csv('original_application_train.csv')#保存下结果
application_test.to_csv('original_application_test.csv')

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

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

相关文章

ExpGCN:深度解析可解释推荐系统中的图卷积网络

一、引言 在当今信息爆炸的时代,推荐系统已成为电子商务和社交网络中不可或缺的工具,旨在为用户筛选出符合其兴趣的信息。传统的协同过滤(CF)技术通过挖掘用户与项目之间的交互记录来生成推荐,但这种方法简化了模型&a…

蓝桥杯3526 子树的大小 | 数学规律

题目传送门 这个题目是一个数学题,比较好的方法是从上往下寻找子树的最左和最右的结点,每层统计子结点数,到树的底部时打印结果。 如何求最左、最右的子结点呢? 对于第i个结点,其前面有i-1个结点,每个结点各有m个孩子,再加上1号结…

大语言模型的语境中“越狱”和思维链

大语言模型的语境中“越狱”和思维链 越狱(Jailbreaking) 含义:在大语言模型的语境中,“越狱”是指用户试图绕过语言模型的安全限制和使用规则,让模型生成违反伦理道德、包含有害内容(如暴力、歧视、恶意软件代码等)的输出。这些安全限制是由模型开发者设置的,目的是确…

解决leetcode第3418题机器人可以获得的最大金币数

3418.机器人可以获得的最大金币数 难度:中等 问题描述: 给你一个mxn的网格。一个机器人从网格的左上角(0,0)出发,目标是到达网格的右下角(m-1,n-1)。在任意时刻,机器人只能向右或向下移动。 网格中的每个单元格包含一个值coin…

python实现pdf转word和excel

一、引言   在办公中,我们经常遇收到pdf文件格式,因为pdf格式文件不易修改,当我们需要编辑这些pdf文件时,经常需要开通会员或收费功能才能使用编辑功能。今天,我要和大家分享的,是如何使用python编程实现…

【实践】操作系统智能助手OS Copilot新功能测评

一、引言 数字化加速发展,尤其人工智能的发展速度越来越快。操作系统智能助手成为提升用户体验与操作效率的关键因素。OS Copilot借助语言模型,人工智能等,对操作系统的自然语言交互操作 推出很多功能,值得开发,尤其运…

人物一致性训练测评数据集

1.Pulid 训练:由1.5M张从互联网收集的高质量人类图像组成,图像标题由blip2自动生成。 测试:从互联网上收集了一个多样化的肖像测试集,该数据集涵盖了多种肤色、年龄和性别,共计120张图像,我们称之为DivID-120,作为补充资源,还使用了最近开源的测试集Unsplash-50,包含…

【深度学习实战】kaggle 自动驾驶的假场景分类

本次分享我在kaggle中参与竞赛的历程,这个版本是我的第一版,使用的是vgg。欢迎大家进行建议和交流。 概述 判断自动驾驶场景是真是假,训练神经网络或使用任何算法来分类驾驶场景的图像是真实的还是虚假的。 图像采用 RGB 格式并以 JPEG 格式…

网络编程 | UDP套接字通信及编程实现经验教程

1、UDP基础 传输层主要应用的协议模型有两种,一种是TCP协议,另外一种则是UDP协议。在上一篇博客文章中,已经对TCP协议及如何编程实现进行了详细的梳理讲解,在本文中,主要讲解与TCP一样广泛使用了另一种协议&#xff1a…

【Linux】线程全解:概念、操作、互斥与同步机制、线程池实现

🎬 个人主页:谁在夜里看海. 📖 个人专栏:《C系列》《Linux系列》《算法系列》 ⛰️ 道阻且长,行则将至 目录 📚一、线程概念 📖 回顾进程 📖 引入线程 📖 总结 &a…

掌握未来:从零开始学习生成式AI大模型!

随着人工智能技术的飞速发展,生成式AI大模型已成为当今科技领域的热点。从文本生成、图像创作到音乐创作,生成式AI大模型在各个领域展现出惊人的潜力。本文将带领大家从零开始,逐步学习生成式AI大模型,掌握未来的关键技术。 一、生…

多肽合成 -- 液相合成(liquid-phase peptide synthesis (LPPS))

液相合成的定义 液相合成(Solution Synthesis)是指在液体介质中进行的化学合成反应,是化学合成中一种基本且重要的方法。它涉及到将反应物溶解在溶剂中,在一定的温度、压力和其他反应条件下进行化学反应,从而生成所需的…

第23篇 基于ARM A9处理器用汇编语言实现中断<五>

Q:怎样修改HPS Timer 0定时器产生的中断周期? A:在上一期实验的基础上,可以修改按键中断服务程序,实现红色LED上的计数值递增的速率,主程序和其余代码文件不用修改。 实现以下功能:按下KEY0…

ChatGPT大模型极简应用开发-CH1-初识 GPT-4 和 ChatGPT

文章目录 1.1 LLM 概述1.1.1 语言模型和NLP基础1.1.2 Transformer及在LLM中的作用1.1.3 解密 GPT 模型的标记化和预测步骤 1.2 GPT 模型简史:从 GPT-1 到 GPT-41.2.1 GPT11.2.2 GPT21.2.3 GPT-31.2.4 从 GPT-3 到 InstructGPT1.2.5 GPT-3.5、Codex 和 ChatGPT1.2.6 …

2025春秋杯冬季赛 day1 crypto

文章目录 通往哈希的旅程小哈斯RSA1ez_rsa 通往哈希的旅程 根据提示推断是哈希函数,ai一下,推测大概率是一个sha1,让ai写一个爆破脚本即可 import hashlib# 给定目标 SHA-1 哈希值 target_hash "ca12fd8250972ec363a16593356abb1f3cf…

广播网络实验

1 实验内容 1、构建星性拓扑下的广播网络,实现hub各端口的数据广播,验证网络的连通性并测试网络效率 2、构建环形拓扑网络,验证该拓扑下结点广播会产生数据包环路 2 实验流程与结果分析 2.1 实验环境 ubuntu、mininet、xterm、wireshark、iperf 2.2 实验方案与结果分析…

RustDesk ID更新脚本

RustDesk ID更新脚本 此PowerShell脚本自动更新RustDesk ID和密码,并将信息安全地存储在Bitwarden中。 特点 使用以下选项更新RustDesk ID: 使用系统主机名生成一个随机的9位数输入自定义值 为RustDesk生成新的随机密码将RustDesk ID和密码安全地存储…

JavaEE之常见的锁策略

前面我们学习过线程不安全问题,我们通过给代码加锁来解决线程不安全问题,在生活中我们也知道有很多种类型的锁,同时在代码的世界当中,也对应着很多类型的锁,今天我们对锁一探究竟! 1. 常见的锁策略 注意: …

数字图像处理:实验二

任务一: 将不同像素(32、64和256)的原图像放大为像素大 小为1024*1024的图像(图像自选) 要求:1)输出一幅图,该图包含六幅子图,第一排是原图,第 二排是对应放大…

WEB渗透技术研究与安全防御

目录 作品简介I IntroductionII 1 网络面临的主要威胁1 1.1 技术安全1 2 分析Web渗透技术2 2.1 Web渗透技术的概念2 2.2 Web漏洞产生的原因2 2.3 注入测试3 2.3.1 注入测试的攻击流程3 2.3.2 进行一次完整的Sql注入测试4 2.3.3 Cookie注入攻击11 3 安全防御方案设计…