Redian新闻
>
【内含baseline】Kaggle机器学习新赛指南!文末送书~

【内含baseline】Kaggle机器学习新赛指南!文末送书~

公众号新闻


日前,Kaggle发布了ICR - Identifying Age-Related Conditions疾病识别大赛。这是一个机器学习中的二分类任务,需要你使用ML的方法对病人进行诊断,判断病人是否有相关疾病,从而为医生提供进行合理诊断的依据。


本次比赛提供了4份数据,分别是:

train、test、sample_submission、greeks。其中:

train文件标记了每个病人的相关特征和label。

test、sample_submission为提交答案时用。

greeks是补充元数据,仅适用于训练集。


为了帮助同学们冲分拿牌,我为大家带来了重磅福利:

 原价198元的赛题讲座免费观看!

 完整高分baseline免费赠送!

算法竞赛入门经典(第2版包邮赠送!(文末详情)

扫码免费看讲座,领baseline,抽图书!


赛题讲座


训练数据分析

Number of rows in train data: 617Number of columns data: 58


数据样例:


数据分布:


相关性分析:


构建训练数据


读取数据,具体可以详见baseline代码,里面有更为详细的介绍

train             = pd.read_csv('/kaggle/input/icr-identify-age-related-conditions/train.csv')test              = pd.read_csv('/kaggle/input/icr-identify-age-related-conditions/test.csv')greeks            = pd.read_csv('/kaggle/input/icr-identify-age-related-conditions/greeks.csv')sample_submission = pd.read_csv('/kaggle/input/icr-identify-age-related-conditions/sample_submission.csv')

Baseline流程


加载数据,特征处理:

from sklearn.impute import SimpleImputerfrom sklearn.preprocessing import MinMaxScaler, OneHotEncoder
# Combine numeric and categorical featuresFEATURES = num_cols + cat_cols
# Fill missing values with mean for numeric variablesimputer = SimpleImputer(strategy='mean')numeric_df = pd.DataFrame(imputer.fit_transform(train[num_cols]), columns=num_cols)
# Scale numeric variables using min-max scalingscaler = MinMaxScaler()scaled_numeric_df = pd.DataFrame(scaler.fit_transform(numeric_df), columns=num_cols)
# Encode categorical variables using one-hot encodingencoder = OneHotEncoder(sparse=False, handle_unknown='ignore')encoded_cat_df = pd.DataFrame(encoder.fit_transform(train[cat_cols]), columns=encoder.get_feature_names_out(cat_cols))
# Concatenate the scaled numeric and encoded categorical variablesprocessed_df = pd.concat([scaled_numeric_df, encoded_cat_df], axis=1)


定义训练函数:

from sklearn.utils import class_weight
FOLDS = 10SEED = 1004xgb_models = []xgb_oof = []f_imp = []
counter = 1X = processed_dfy = train['Class']
# Calculate the sample weightsweights = class_weight.compute_sample_weight('balanced', y)
skf = StratifiedKFold(n_splits=FOLDS, shuffle=True, random_state=SEED)for fold, (train_idx, val_idx) in enumerate(skf.split(X, y)):    if (fold + 1)%5 == 0 or (fold + 1) == 1:        print(f'{"#"*24} Training FOLD {fold+1} {"#"*24}')            X_train, y_train = X.iloc[train_idx], y.iloc[train_idx]      X_valid, y_valid = X.iloc[val_idx], y.iloc[val_idx]    watchlist = [(X_train, y_train), (X_valid, y_valid)]        # Apply weights in the XGBClassifier    model = XGBClassifier(n_estimators=1000, n_jobs=-1, max_depth=4, eta=0.2, colsample_bytree=0.67)    model.fit(X_train, y_train, sample_weight=weights[train_idx], eval_set=watchlist, early_stopping_rounds=300, verbose=0)        val_preds = model.predict_proba(X_valid)[:, 1]        # Apply weights in the log_loss    val_score = log_loss(y_valid, val_preds, sample_weight=weights[val_idx])    best_iter = model.best_iteration        idx_pred_target = np.vstack([val_idx,  val_preds, y_valid]).T    f_imp.append({i: j for i, j in zip(X.columns, model.feature_importances_)})    print(f'{" "*20} Log-loss: {val_score:.5f} {" "*6} best iteration: {best_iter}')                  xgb_oof.append(idx_pred_target)       xgb_models.append(model)      print('*'*45)print(f'Mean Log-loss: {np.mean([log_loss(item[:, 2], item[:, 1], sample_weight=weights[item[:, 0].astype(int)]) for item in xgb_oof]):.5f}')              


特征重要性查看:

# Confusion Matrix for the last foldcm = confusion_matrix(y_valid, model.predict(X_valid))
# Feature Importance for the last modelfeature_imp = pd.DataFrame({'Value':xgb_models[-1].feature_importances_, 'Feature':X.columns})feature_imp = feature_imp.sort_values(by="Value", ascending=False)feature_imp_top20 = feature_imp.iloc[:20]
fig, ax = plt.subplots(1, 2, figsize=(14, 4))
# Subplot 1: Confusion Matrixsns.heatmap(cm, annot=True, fmt='d', ax=ax[0], cmap='YlOrRd')ax[0].set_title('Confusion Matrix')ax[0].set_xlabel('Predicted')ax[0].set_ylabel('True')
# Subplot 2: Feature Importancesns.barplot(x="Value", y="Feature", data=feature_imp_top20, ax=ax[1], palette='YlOrRd_r')ax[1].set_title('Feature Importance')
plt.tight_layout()plt.show()

扫码免费看讲座,领baseline,抽图书!


包邮赠书福利


添加客服,凭当前文章截图参与抽奖送书。抽取50名同学,包邮送出《算法竞赛入门经典(第2版)》

图书将在月末统一寄出哦,感谢同学们的耐心等待~


扫码免费看讲座,领baseline,抽图书!

微信扫码关注该文公众号作者

戳这里提交新闻线索和高质量文章给我们。
相关阅读
文末送书 | 深度学习之图像识别:详解核心算法与12个经典实战案例文末送书 | 这就是推荐系统!TikTok、快手等多个一线大厂实战经验总结我们要建微信群啦~(文末送书)Established Chinese Apparel Brands Struggle to Stay Afloat给爆火的Llama 2划重点,Huggingface机器学习科学家写了篇分析文章邱锡鹏老师推荐的新书:ChatGPT原理与实战,文末留言送书~独行海内寻知己,求下联。文末送书 | 搜狐创始人、物理学博士张朝阳全新著作,重磅来袭!收藏这份2023年女足世界杯观赛指南,为中国女足加油!从 Istio 在 CNCF 毕业,看服务网格的架构变迁 | 文末送书Cell Syst | 上海药物所郑明月/廖苍松提出机器学习辅助定向进化新方法对机器学习感兴趣?不如先来实践一下!|《ChatGPT聊天机器人语义情绪波动检测》加州更多分行几个月内关闭,含BOA、富国银行,不少位于华人区;用户应该怎么做?[电脑] 「内外兼修」Abee Pixel One机箱+ROG Z790吹雪主板+影驰 RTX4070显卡装机分享谎言什么时候可以是高尚的 —— 答一帖君问【提示】@球迷们,本周六上海德比赛观赛指南请查收→China’s Livehouse Scene Struggles to Ride Post-Pandemic Wave柯洲:智能AI会不会颠覆咨询、营销行业?(文末送价值799的福利!)你好,我是筚(bì)篥( lì)!文末送书 | 全面详述NLP典型范式:复旦教授历时3年打造近600页全彩专著Kaggle医学影像新赛事:腹部创伤检测笔记侠CEO柯洲:GPT有架构思维吗?(文末送价值799的福利!)《Python机器学习》畅销书作者又出新书了,全方位扩展你的机器学习知识文末送书 | 4个维度讲透ChatGPT技术原理,揭开ChatGPT神秘技术黑盒!从0到1理解ChatGPT, GPT-4【文末送书】雨停了汇聚机器学习发展前沿,「第十九届中国机器学习会议」即将开幕文末送书 | OpenAI CEO强推!国内首部顶级AI学者ChatGPT原理解释之作美国更多分行将被关闭,含BOA、富国银行,华人用户应该怎么做?文末送书 | 系统讲解ChatGPT核心原理,教你构建高质量的提示指令文末送书 | 知乎盐选专栏9.4高分!世界的形状:读懂你一知半解的科学知识会议通知 | 首届机器学习与统计会议暨中国现场统计研究会机器学习分会成立大会PPT小白常犯的错误有哪些?这份PPT都告诉你了!(文末送书)北国小城沃特敦通缩你个头啊
logo
联系我们隐私协议©2024 redian.news
Redian新闻
Redian.news刊载任何文章,不代表同意其说法或描述,仅为提供更多信息,也不构成任何建议。文章信息的合法性及真实性由其作者负责,与Redian.news及其运营公司无关。欢迎投稿,如发现稿件侵权,或作者不愿在本网发表文章,请版权拥有者通知本网处理。