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`
`
相关推荐
冬奇Lab8 小时前
Workflow 系列(04):Multi-Agent 协调——编排器边界、并发控制与上下文隔离
人工智能·工作流引擎
冬奇Lab9 小时前
每日一个开源项目(第147篇):HyperGraphRAG - 用超图表示 N 元关系,RAG 的第三代范式
人工智能·开源·graphql
甲维斯9 小时前
Github + 阿里云oss实现类似codex的自动更新!
人工智能
阿里云大数据AI技术11 小时前
光轮智能 × 阿里云:共建 Physical AI 云上数据、评测与持续学习基础设施
人工智能·机器学习
机器之心11 小时前
实锤了:Claude Code偷查用户,时区、中国AI实验室全是关键词
人工智能·openai
网易云信11 小时前
Cursor点燃个人开发者,企业级AI为何频频受挫?Agent工厂从提效工具到AI员工的跃迁
人工智能·开源
网易云信11 小时前
解锁触手可及的温暖:网易智企 x Wander Puffs AI 云游泡芙
人工智能
转转技术团队11 小时前
从 PRD 到可验证代码:AI 需求开发闭环实践
人工智能