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`
`
相关推荐
gCode Teacher 格码致知3 分钟前
Pandas教学-6:coerce详解
python·pandas
梦在远山后7 分钟前
Electron 与 FastAPI 如何完成流式 Agent 对话
python·langchain·agent
时速GEO系统15 分钟前
初元 AI V1.1 版本升级,首个正式版发布一周・实现生成、部署、上线、优化全流程自动化闭环
人工智能·数据挖掘·node.js
大衛說17 分钟前
12 · 文件 I/O 与序列化
python
咕泡科技18 分钟前
咕泡科技FDE系列最新产品重磅发布!
人工智能·大模型·ai落地·fde·前沿部署工程师
犀利豆30 分钟前
为什么全世界的 AI 都画不好一只骑自行车的鹈鹕
人工智能·llm·aigc
小静AI工程实验室31 分钟前
Python 爬虫中文乱码排查:严格解码、UTF-8 BOM 与 JSON 转义的 12 项实验
字符编码·爬虫·python
天天被压力38 分钟前
【跨市场数据实战 #08】可转债折价机会怎么筛:3个接口抓比价、列表和实时盘口
java·人工智能·python
weixin1997010801643 分钟前
[特殊字符]️《从0到1搭多平台二手ERP中台:闲鱼+淘宝+京东+拼多多+Mercari统一调度》(附Python源码)
python
王国强200944 分钟前
uv 深入指南:重新理解 Python 的包管理、依赖解析与项目工程化
python