【机器学习与实战】分类与聚类算法:Bagging和随机森林
配套视频课程:www.bilibili.com/video/BV1iS…
一、Bagging集成原理
目标:把下面的圈和方块进行分类
实现过程:
1、采样不同数据集
2、训练分类器
3、平权投票,获取最终结果
二、随机森林构造过程
在机器学习中,随机森林是一个包含多个决策树的分类器,并且其输出的类别是由决策树输出的类别的众数而定。
随机森林 = Bagging + 决策树
随机森林的构造步骤:
- 随机选 m 条数据
- 随机选取 n 个数据特征
- 训练决策树
- 重复 1-3 步构造 T 个弱决策树
- 平权投票集成 T 个弱决策树
例如, 如果你训练了 5 个树,对某个样本进行估计,其中有 4 个树的结果是True,1 个树的结果是False,那么最终投票结果就是True
随机森林主要有两个随机化策略( M 表示样本总数,N 表示特征总数):
(1)一次随机选出一个样本,有放回的抽样,重复 M 次 (有可能出现重复的样本)
(2)随机去选出 n 个特征, n << N
三、代码实现
import pandas as pd
from sklearn.preprocessing import MinMaxScaler
from sklearn.model_selection import train_test_split
from sklearn.ensemble import RandomForestClassifier
heart = pd.read_csv('../regress/heart.csv')
x = heart.iloc[:, 0:13]
y = heart['target']
x_train, x_test, y_train, y_test = train_test_split(x, y, test_size=0.2, random_state=0)
scaler = MinMaxScaler()
x_train = scaler.fit_transform(x_train)
x_test = scaler.transform(x_test)
forest = RandomForestClassifier(n_estimators=500, random_state=3)
forest.fit(x_train, y_train)
print(forest.score(x_test, y_test))