首页 > 其他分享 >【Kaggle】AAAMLP读书笔记 Cat-in-the-dat II (优化)

【Kaggle】AAAMLP读书笔记 Cat-in-the-dat II (优化)

时间:2023-12-17 21:32:38浏览次数:39  
标签:fold AUC 读书笔记 df Kaggle II Fold valid col

本人希望从0开始,自己的Kaggle竞赛

  1. 12月拿到自己的第一块Kaggle奖牌
  2. 短期内读完Abhishek Thakur的Approaching (Almost) Any Machine Learning Problem并且发博客记录https://github.com/abhishekkrthakur/approachingalmost
  3. 12月至少发21篇博客
  4. 每天保持八小时的学习时间

Approaching categorical variables(实验部分)

RandomForestClassifier 随机森林模型

在上一篇文章中https://blog.51cto.com/u_15683639/8822476

我们使用默认的RF参数进行训练得到了如下结果:

Fold = 0, AUC = 0.7143420371128966

Fold = 1, AUC = 0.7182654891323974

Fold = 2, AUC = 0.7162629185564836

Fold = 3, AUC = 0.7138862032799431

Fold = 4, AUC = 0.7169939048511448

我们发现是明显弱于逻辑回归的结果的,我们尝试对模型进行优化

xgboot

之后的模型我们讲基于xgboot的基础效果,采用对变量进行处理的方式优化模型

import numpy as np
import pandas as pd
import xgboost as xgb
from sklearn import metrics
from sklearn import preprocessing

mapping = {
    'ord_1':
    {
        'Novice': 0,
        'Contributor': 1,
        'Expert': 2,
        'Master': 3,
        'Grandmaster': 4
    },
    'ord_2':
    {
        "Freezing": 0,
        "Warm": 1,
        "Cold": 2,
        "Boiling Hot": 3,
        "Hot": 4,
        "Lava Hot": 5
    }
}
def run(fold):
    df = pd.read_csv("input/cat_train.csv")
    features = [
        f for f in df.columns if f not in ("id", "target", "kfold")
    ]
    for col in features:
        # if col in mapping.keys():
        #     df.loc[:, col] = df[col].map(mapping[col])
        #     df.loc[:, col] = df[col].fillna(np.mean(df[col]))
        #     continue
        df.loc[:, col] = df[col].astype(str).fillna("NONE")

        lbl = preprocessing.LabelEncoder()
        lbl.fit(df[col])
        df.loc[:, col] = lbl.transform(df[col])
    df_train = df[df.kfold != fold].reset_index(drop=True)

    df_valid = df[df.kfold == fold].reset_index(drop=True)
    # 将训练集、验证集沿行合并
    x_train = df_train[features].values
    x_valid = df_valid[features].values
    model = xgb.XGBClassifier(
        n_jobs=-1,
        max_depth=7,
        n_estimators=200)
    model.fit(x_train, df_train.target.values)
    valid_preds = model.predict_proba(x_valid)[:, 1]
    auc = metrics.roc_auc_score(df_valid.target.values, valid_preds)
    print(f"Fold = {fold}, AUC = {auc}")
if __name__ == "__main__":
    # 运行折叠0
    for fold in range(5):
        run(fold)
结果
Fold = 0, AUC = 0.7593127296060671
Fold = 1, AUC = 0.7636982814902823
Fold = 2, AUC = 0.7612284353949836
Fold = 3, AUC = 0.7588940006054744
Fold = 4, AUC = 0.7588587930357571
将有相对值的变量,赋值为相对值
mapping = {
    'ord_1':
    {
        'Novice': 0,
        'Contributor': 1,
        'Expert': 2,
        'Master': 3,
        'Grandmaster': 4
    },
    'ord_2':
    {
        "Freezing": 0,
        "Warm": 1,
        "Cold": 2,
        "Boiling Hot": 3,
        "Hot": 4,
        "Lava Hot": 5
    }
}

对于“NONE”我们赋值为平均值

df.loc[:, col] = df[col].fillna(np.mean(df[col]))
结果
Fold = 0, AUC = 0.7592536106272681
Fold = 1, AUC = 0.7628082884089922
Fold = 2, AUC = 0.7617342260822304
Fold = 3, AUC = 0.7580344934678367
Fold = 4, AUC = 0.7591430836126225

NONE赋值为0时:

Fold = 0, AUC = 0.7598587660799765
Fold = 1, AUC = 0.7635835866917194
Fold = 2, AUC = 0.7618911101907058
Fold = 3, AUC = 0.7578635518090245
Fold = 4, AUC = 0.7597198400752665

我们发现模型效果几乎没有变化


标签:fold,AUC,读书笔记,df,Kaggle,II,Fold,valid,col
From: https://blog.51cto.com/u_15683639/8863504

相关文章

  • 程序员的思维修炼 读书笔记02
    第三章认识你的大脑R型对直觉,问题解决和创造性非常重要,L型让你细致工作并实现目标。人类具有超强的感知能力,其中许多无法有效地用语言表达。例如,你可以立刻认出大量熟悉的人的面孔,无论他们是否改变了发型、穿着,或者肥了10磅,还是过了20年。但是,尝试描述你最亲密爱人的脸庞,你......
  • 读书笔记
     1.有基本函数的用法 Numpy: 来存储和处理大型矩阵,比Python自身的嵌套列表(nestedliststructure)结构要高效的多,本身是由C语言开发。这个是很基础的扩展,其余的扩展都是以此为基础。数据结构为ndarray,一般有三种方式来创建。 Pandas: 基于NumPy的一种工具,该工具是......
  • 读书笔记——槽叔《攒多少钱,才能安心养老》
    01中国人养老的四大迷思◆1.1我的社保养老,能领多少?社保养老:国人养老第一支柱城镇职工养老保险和城乡居民养老保险统称为社保养老金。现收现付制:读懂第一支柱的钥匙设计职工养老金制度时,政府设立了两个账户:统筹账户和个人账户。统筹账户由单位出资,按月薪的16%计算。—......
  • 代码随想录算法训练营第四天 | 24. 两两交换链表中的节点,19.删除链表的倒数第N个节点,
    一、24.两两交换链表中的节点题目链接:LeetCode24.两两交换链表中的节点学习前:思路:未新增虚拟结点。节点数为0,1,2需要另外讨论。当节点数>=2时,返回的head值为第2个节点,需要3个指针first、second、prev,分别是第一个节点和第二个节点,以及第一个节点的前节点。while(first......
  • 《构建之法》读书笔记(二)
      “人们为了解决现实社会和生活中的各种问题,要求助于软件。”那我们如果精准地获取到这些需求呢?通过阅读我了解到以下步骤。   开发一个软件前,我们要去了解这个软件的受益者,了解他们的需求,了解他们对这个软件的期待,然后软件工程师按照相应的需求开发,替用户着想。当然......
  • Windows2008R2 IIS配置证书 ERR_SSL_VERSION_OR_CIPHER_MISMATCH 错误解决方法
    IISCrypto 用这个工具很方便,也可以手动修改注册表工具内置最佳实践,点击 BestPractices再Apply,然后重启服务器即可,设置前记得备份注册表。参考:https://blog.csdn.net/a873744779/article/details/103635882https://blog.csdn.net/jackbon8/article/details/82702563 ......
  • 142. 环形链表 II
    1.题目介绍给定一个链表的头节点 \(head\) ,返回链表开始入环的第一个节点。 如果链表无环,则返回 \(null\)。如果链表中有某个节点,可以通过连续跟踪\(next\)指针再次到达,则链表中存在环。为了表示给定链表中的环,评测系统内部使用整数\(pos\)来表示链表尾连接到链表中的......
  • 142.环形链表II
    题目142.环形链表II要求给定一个链表的头节点 head ,返回链表开始入环的第一个节点。 如果链表无环,则返回 null。如果链表中有某个节点,可以通过连续跟踪 next 指针再次到达,则链表中存在环。为了表示给定链表中的环,评测系统内部使用整数 pos 来表示链表尾连接到链表中......
  • 《需求分析与系统设计》读书笔记1
    第一章讲了软件过程,从总体生描述了软件开发过程中的策略问题,介绍了支撑现代软件开发的过程和方法,认到了软件工程的本质是软件固有的复杂性,一致性,可变性和不可见性的产物。软件工程的偶然因素分为3类,即投入者,过程和建模语言和工具;投入者指那些与软件项目之间存在着利害关系的人,即客......
  • 代码随想录算法训练营Day2 |977.有序数组的平方、209.长度最小的子数组、59.螺旋矩阵
    明天四级考试了,时间非常紧张,好在这些数组相关的算法题很久之前就做过,思路上是不存在不理解的地方的。有序数组的平方是一道非常直观的双指针方法的应用,实现过程之中没有什么坑。长度最小的子数组就是我们的滑动窗口方法了,题目不难,但是这种处理方式有着很深刻的背景,之后还会遇到......