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`
`
相关推荐
小程序设计1 分钟前
机械设计之大蒜茎叶粉碎抛送装置设计
人工智能·数据挖掘
测试老哥2 分钟前
Postman获取token并设置token依赖步骤
自动化测试·软件测试·python·测试工具·测试用例·接口测试·postman
郝学胜-神的一滴4 分钟前
C++11 工程级应用 06:自己造一个类似Python的Range迭代器
开发语言·c++·windows·python·程序人生·microsoft
满怀冰雪6 分钟前
23-PaddleClas 数据集、配置文件与训练参数详解
人工智能·python·深度学习·paddlepaddle
Akir.weiwen7 分钟前
③ 约束显化:把隐含的语义假设变成显式规则
人工智能·编译·设计规范·语义
tachibana27 分钟前
AI Agent 的记忆机制
人工智能·ai·大模型·llm·agent
苦猿的大模型日记9 分钟前
Day52|从0学习Claude Code(二):从一台机床到一个工具箱,循环一行没改
人工智能
richard_first11 分钟前
从 ChatGPT 到机器人:NVIDIA Jetson Orin Nano 2 背后的 Physical AI 浪潮
人工智能·chatgpt·机器人
余俊晖12 分钟前
Self-OPD:去掉教师机的流匹配模型 On-Policy 蒸馏
人工智能·算法·机器学习
手写码匠14 分钟前
华为云Flexus+DeepSeek征文|华为云MaaS DeepSeek推理服务 × Flexus云服务器 × Dify一键部署:性能评测实战
人工智能·深度学习·算法·aigc