在这里插入图片描述

文章目录

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代码下载地址
在这里插入图片描述

Logo

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐