【Python】-- 机器学习项目 - 基于随机森林算法的泰坦尼克号幸存预测

文章目录
01 什么是随机森林
在理解了决策树之后,随机森林的理解就比较简单。
其核心思想是:
1 随机采样数据
每棵树只用原始训练集的 Bootstrap 子集(有放回地随机抽 N 条样本),避免所有树学到一模一样的噪声。
2 随机采样特征
每次节点分裂时,只从全部特征里随机挑 m 个候选特征(通常 m ≈ √p),再在这 m 个里选最优切分。这样树与树之间差异更大。
3 集体投票 / 平均
- 分类:所有树给出类别,多数表决决定最终结果。
- 回归:所有树给出数值,取平均作为最终结果。
02 基于随机森林算法的泰坦尼克号幸存预测代码
def forest():
# 加载数据
titan = pd.read_csv("/data2/Code/Sklearn_Mochine_leanring-master/数据集/train.csv")
# 构造特征值和目标值
feature = titan[["Pclass", "Age", "Fare", "Sex"]]
target = titan["Survived"]
# 特征预处理
# 查看有没有缺失值
print(pd.isnull(feature).any())
# 填充缺失值
Age = feature.pop("Age") # 取出,意思是取出来之后删除原来的
Age = Age.fillna(Age.mean())
feature.insert(0, "Age", Age)
# 字典特征抽取
dv = DictVectorizer()
feature = dv.fit_transform(feature.to_dict(orient="records"))
feature = feature.toarray()
print(feature)
print(dv.get_feature_names_out())
# 划分数据集
x_train, x_test, y_train, y_test = train_test_split(feature, target, test_size=0.25)
print("训练集:", x_train.shape, y_train.shape)
print("测试集:", x_test.shape, y_test.shape)
# 建立模型
rf = RandomForestClassifier()
# 超参数搜索
param = {"n_estimators":[10, 20, 30, 40], "max_depth":[25, 35, 45]}
gc = GridSearchCV(rf, param_grid=param, cv=5)
# 训练
gc.fit(x_train, y_train)
# 交叉验证网格搜索的结果
print("在测试集上的准确率:", gc.score(x_test, y_test))
print("在验证集上的准确率:", gc.best_score_)
print("最好的模型参数:", gc.best_params_)
print("最好的模型:", gc.best_estimator_)
03 基于随机森林算法的泰坦尼克号幸存预测代码分析
这段代码用泰坦尼克数据集演示了随机森林分类的完整流程,重点在特征工程和超参数调优:
读数据:用 Pandas 取出 Pclass、Age、Fare、Sex 四个字段作为 X,Survived 为 y。
预处理:Age 缺失值用均值填充;Sex 等类别变量经 DictVectorizer 一键独热编码。
数据切分:一次 train_test_split 把 75 % 做训练集,25 % 留作最终测试集。
建模:RandomForestClassifier (空参) 做基础模型。
调参:GridSearchCV 在 {n_estimators: [10,20,30,40], max_depth: [25,35,45]} 上做 5 折交叉验证,自动挑最佳组合。
输出:打印测试集准确率、交叉验证最佳分数、最佳超参数以及最佳模型对象,方便后续复用或继续分析。
04 基于随机森林算法的泰坦尼克号幸存预测源码
提供了Python的实现代码,使得用户可以根据自己的需求进行调整和应用。
Python代码下载地址
DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。
更多推荐



所有评论(0)