《随机森林》(二)算法初探

随机森林(Random Forest)能够用于分类和回归任务。通过两个应用案例来学习如何使用随机森林来解决分类和回归问题,以及算法的基本原理。

1. 算法使用

from sklearn.ensemble import RandomForestClassifier
from sklearn.ensemble import RandomForestRegressor
from sklearn.datasets import fetch_california_housing
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split


def test01():

    # 加载鸢尾花数据集
    data = load_iris()
    # 切分训练和验证集
    X_train, X_test, y_train, y_test = (
        train_test_split(data.data, data.target, test_size=0.2, random_state=42))
    # 随机森林构建
    estimator = RandomForestClassifier(n_jobs=-1)
    # 随机森林训练
    estimator.fit(X_train, y_train)
    # 预测和输出
    y_pred = estimator.predict(X_test[0].reshape(1, -1))
    y_prob = estimator.predict_proba(X_test[0].reshape(1, -1))
    print('y_pred:', y_pred, 'y_true:', y_test[0], 'y_prob:', y_prob)
    # 随机森林评估
    score = estimator.score(X_test, y_test)
    print('acc: %.3f' % score)


def test02():

    # 加载房价数据集
    data = fetch_california_housing(data_home='data')
    # 切分训练和验证集
    X_train, X_test, y_train, y_test = (
        train_test_split(data.data, data.target, test_size=0.2, random_state=42))
    # 随机森林构建
    estimator = RandomForestRegressor(n_jobs=-1)
    # 随机森林训练
    estimator.fit(X_train, y_train)
    # 预测和输出
    y_pred = estimator.predict(X_test[0].reshape(1, -1))
    print('y_pred:', y_pred, 'y_true:', y_test[0])
    # 随机森林评估
    score = estimator.score(X_test, y_test)
    print('r2:  %.3f' % score)


if __name__ == '__main__':
    test01()
    test02()

2. 基本原理

随机森林通过构建多个决策树并将其结果进行整合来进行预测。训练和预测过程如下图所示:

训练时,首先从训练集数据中产生多个数据子集。然后使用训练子集训练处多个决策树(分类决策树或者回归决策树)

预测时,输入待预测的样本,由每个决策树(弱学习器、基学习器)给出预测结果。对于分类问题使用多数投票、回归问题使用简单平均来得出最终预测结果。

未经允许不得转载:一亩三分地 » 《随机森林》(二)算法初探
评论 (0)

6 + 6 =