本文所有的代码及数据均存放与https://github.com/MADMAX110/Titanic
泰坦尼克号幸存者预测挑战赛是一个非常受欢迎的机器学习实践项目。这是 Kaggle.com 上最受欢迎的比赛之一。
数据中有3个文件:train.csv,test.csv,和gender_submit .csv。
train.csv包含一部分乘客的详细信息。
test.csv没有显示是否幸存——这些信息是隐藏的,你需要预测是否幸存。
gender_submit .csv文件是一个示例,你的输出文件格式应该和它一样。
首先遍历一下titianic的所有文件并输出
import numpy as np
import pandas as pd
import os
for dirname, _, filenames in os.walk('titanic'):
for filename in filenames:
print(os.path.join(dirname, filename))
可以看到数据集有三个文件
再来看一下train.csv的文件结构
train_data = pd.read_csv("titanic/train.csv")
train_data.head()
再看一下test.csv的文件结构
test_data = pd.read_csv("titanic/test.csv")
test_data.head()
可以计算一下男人和女人各自的生存率
women = train_data.loc[train_data.Sex == 'female']["Survived"]
rate_women = sum(women) / len(women)
print("% of women who survived:", rate_women)
men = train_data.loc[train_data.Sex == 'male']["Survived"]
rate_men = sum(men) / len(men)
print("% of men who survived:", rate_men)
使用随机森林算法构建泰坦尼克生存预测模型,并在测试集上得到预测结果。
from sklearn.ensemble import RandomForestClassifier
#训练集标签
y = train_data["Survived"]
#特征名
features = ["Pclass", "Sex", "SibSp", "Parch"]
#训练集特征
X = pd.get_dummies(train_data[features])
#测试集特征
X_test = pd.get_dummies(test_data[features])
model = RandomForestClassifier(n_estimators=100, max_depth=5, random_state=1)
#模型训练
model.fit(X, y)
#在测试集上预测
predictions = model.predict(X_test)
#模型训练
output = pd.DataFrame({'PassengerId': test_data.PassengerId, 'Survived':predictions})
#在训练集上预测
output.to_csv('result.csv', index=False)
该代码使用随机森林算法构建分类模型,主要步骤为:
- 指定训练标签y和特征名features
- 使用get_dummies进行onehot编码,获得训练特征X和测试特征X_test
- 初始化随机森林模型,设置100棵树,最大深度为5
- 调用fit方法在训练数据上训练模型
- 调用predict在测试集上预测,得到预测结果predictions
所以,这段代码实现了使用随机森林算法训练分类模型并在新数据上进行预测的流程。随机森林是一个非常实用的机器学习算法,可以处理分类与回归问题,获得较高的预测准确度。
在这个泰坦尼克生存预测的例子中,我们使用随机森林构建了一个初步的分类模型,并在测试集上得到了生存预测结果,这为我们进一步优化模型和特征工程提供了基础。我们还可以评估在测试集上的准确度、AUC等指标,判断模型的表现。