比赛链接https://www.kaggle.com/competitions/titanic/overview
数据集链接https://www.kaggle.com/competitions/titanic/data
# 导入pandas库,用于数据处理
import pandas as pd
# 导入scikit-learn库中的RandomForestClassifier类,用于构建随机森林模型
from sklearn.ensemble import RandomForestClassifier
# 读取训练数据集
train_data = pd.read_csv("train.csv")
# 读取测试数据集
test_data = pd.read_csv("test.csv")
# 从训练数据集中提取目标变量(即乘客是否存活)
y = train_data["Survived"]
# 定义用于训练模型的特征列
features = ["Pclass", "Age", "Sex", "SibSp", "Fare", "Parch", "Embarked"]
# 使用get_dummies函数将分类特征(如Sex, Embarked)转换为哑变量(即独热编码),并保留数值特征(如Pclass, Age, Fare等)
# 转换后的DataFrame X包含了训练数据集中指定的特征列
X = pd.get_dummies(train_data[features])
# 对测试数据集进行相同的处理,生成测试数据的特征矩阵X_test
X_test = pd.get_dummies(test_data[features])
# 初始化随机森林模型,这里使用默认参数,选择随机森林的原因是缺失项对随机森林的影响比较有限
model = RandomForestClassifier()
# 使用训练数据(X)和训练标签(y)来训练模型
model.fit(X, y)
# 使用训练好的模型对测试数据(X_test)进行预测,得到预测结果predictions
predictions = model.predict(X_test)
# 创建一个新的DataFrame output,用于存储预测结果
# 它包含两列:PassengerId(来自测试数据集)和Survived(模型的预测结果)
output = pd.DataFrame({'PassengerId': test_data.PassengerId, 'Survived': predictions})
# 将包含预测结果的DataFrame输出到CSV文件submission.csv中
output.to_csv('submission.csv', index=False)