当前位置: 首页 > news >正文

DAY 22 复习日kaggle泰坦里克号人员生还预测

复习日

仔细回顾一下之前21天的内容,没跟上进度的同学补一下进度。

作业:

自行学习参考如何使用kaggle平台写下使用注意点,并对下述比赛提交代码

kaggle泰坦里克号人员生还预测

输入

import pandas as pd
from sklearn.tree import DecisionTreeClassifier
from sklearn.model_selection import train_test_split
from sklearn.metrics import accuracy_score
from sklearn.preprocessing import LabelEncoder
from sklearn.impute import SimpleImputer  # 添加这行导入
from sklearn.preprocessing import StandardScaler
from sklearn.ensemble import RandomForestClassifier
from sklearn.model_selection import GridSearchCV
from sklearn.ensemble import GradientBoostingClassifier
# 加载数据集# 加载数据集
train_data = pd.read_csv(r'titanic/train.csv')
test_data = pd.read_csv(r'titanic/test.csv')# 数据预处理优化
# 删除无关特征(保留原始注释)
train_data = train_data.drop(['PassengerId', 'Name', 'Ticket', 'Cabin'], axis=1)
test_data = test_data.drop(['PassengerId', 'Name', 'Ticket', 'Cabin'], axis=1)# 修正缺失值处理流程
missing_cols = {
    'str': ['Embarked', 'Sex'],
    'num': ['Age', 'Fare']
}# 统一使用训练集的统计量进行填充
imputer = {
    'str': SimpleImputer(strategy='most_frequent').fit(train_data[missing_cols['str']]),
    'num': SimpleImputer(strategy='median').fit(train_data[missing_cols['num']])
}# 应用填充
train_data[missing_cols['str']] = imputer['str'].transform(train_data[missing_cols['str']])
test_data[missing_cols['str']] = imputer['str'].transform(test_data[missing_cols['str']])
train_data[missing_cols['num']] = imputer['num'].transform(train_data[missing_cols['num']])
test_data[missing_cols['num']] = imputer['num'].transform(test_data[missing_cols['num']])# 特征编码优化
train_data = pd.get_dummies(train_data, columns=['Sex', 'Embarked'], drop_first=True)
# 确保测试集与训练集列对齐
test_data = pd.get_dummies(test_data, columns=['Sex', 'Embarked'], drop_first=True)
test_data = test_data.reindex(columns=train_data.columns.drop('Survived'), fill_value=0)# 划分数据集(添加随机种子)
X = train_data.drop('Survived', axis=1)
y = train_data['Survived']
X_train, X_val, y_train, y_val = train_test_split(X, y, test_size=0.2, random_state=42, stratify=y)# 移除特征缩放(树模型不需要)
# 新增参数调优
param_grid = {
    'n_estimators': [100, 200],
    'max_depth': [None, 5, 10],
    'class_weight': [None, 'balanced']
}rf = RandomForestClassifier(random_state=42)
grid_search = GridSearchCV(rf, param_grid, cv=5, scoring='accuracy')
grid_search.fit(X_train, y_train)best_model = grid_search.best_estimator_
val_pred = best_model.predict(X_val)
from sklearn.metrics import accuracy_score, roc_auc_score  # 添加ROC AUC指标
# 增强模型评估
print(f"\n最佳参数: {grid_search.best_params_}")
print("验证集准确率:", accuracy_score(y_val, val_pred))
print("AUC分数:", roc_auc_score(y_val, best_model.predict_proba(X_val)[:, 1]))
print("特征重要性:")
for name, importance in zip(X.columns, best_model.feature_importances_):
    print(f"{name}: {importance:.3f}")# 原导入部分保持不变,添加以下内容# 预测并保存结果
test_pred = best_model.predict(test_data)
output = pd.DataFrame({'PassengerId': range(892, 1310), 'Survived': test_pred})
output.to_csv('submission.csv', index=False)
print("预测结果已保存为 submission.csv")

输出

最佳参数: {'class_weight': None, 'max_depth': 5, 'n_estimators': 200}
验证集准确率: 0.7932960893854749
AUC分数: 0.8412384716732543
特征重要性:
Pclass: 0.141
Age: 0.118
SibSp: 0.047
Parch: 0.037
Fare: 0.180
Sex_male: 0.438
Embarked_Q: 0.012
Embarked_S: 0.028
预测结果已保存为 submission.csv

http://www.xdnf.cn/news/389737.html

相关文章:

  • 第一章 例行性工作(任务计划)
  • Python基础总结(十)之函数
  • Go语言安装proto并且使用gRPC服务(2025最新WINDOWS系统)
  • 广东省省考备考(第八天5.11)—言语:片段阅读(每日一练)
  • 数据库备份与策略【全量备份、增量备份、日志恢复】
  • python:trimesh 用于 STL 文件解析和 3D 操作
  • 深入剖析缓存与数据库一致性:Java技术视角下的解决方案与实践
  • 【连载14】基础智能体的进展与挑战综述-多智能体系统设计
  • MySQL 数据库故障排查指南
  • 网络安全设备配置与管理-实验5-p150虚拟防火墙配置
  • 【计算机网络】NAT技术、内网穿透与代理服务器全解析:原理、应用及实践
  • JVM中的安全点是什么,作用又是什么?
  • python 新闻 api + react js 客户端。
  • MinIO自定义权限策略语法深度解析
  • 苍穹外卖-创建阿里云oss工具包
  • Agent杂货铺
  • 大模型知识蒸馏(Qwen2.5系列模型KL散度蒸馏)
  • leetcode热题100——day26
  • 当虚拟照进现实——《GTA6》如何重新定义开放世界的可能性‌
  • Git的核心作用详解
  • pwm控制
  • istio in action之服务网格和istio组件
  • LLM框架
  • Ubuntu 24服务器部署abp vnext应用程序的完整教程
  • 模块自动导入的小工具
  • 使用go开发安卓程序
  • 【漫话机器学习系列】252.零损失(0-1 Loss)
  • 豆包:国内 web 辅助开发的领头羊
  • 79.评论日记
  • Linux防火墙