1. 随机森林
1.1 原理介绍
随机森林(Random Forest)是一种遵循bagging技术的集成机器学习算法。
Bagging算法 (英语:Bootstrap aggregating,引导聚集算法),又称装袋算法,是机器学习领域的一种团体学习算法。最初由Leo Breiman于1994年提出。Bagging算法可与其他分类、回归算法结合,提高其准确率、稳定性的同时,通过降低结果的方差,避免过拟合的发生。 给定一个大小为n的训练集 D,Bagging算法从中均匀、有放回地(即使用自助抽样法)选出m个大小为 n’的子集 D_{i},作为新的训练集。在这 m个训练集上使用分类、回归等算法,则可得到 m个模型,再通过取平均值、取多数票等方法,即可得到Bagging的结果。
随机森林中的“森林”表示整个模型中包含了很多决策树,“随机”表示森林中的每棵决策树都是随机从数据集中采样来训练。更多的原理介绍见 此篇博客。
1.2 代码实现
数据集采用的是sklearn库提供的鸢尾花数据集,这个数据集用过很多次了,此处就不对该数据集作过多介绍。
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
from sklearn.ensemble import RandomForestClassifier
# 1. 加载数据集
iris = load_iris()
X = iris.data # 数据
y = iris.target # 标签
# 2. 划分数据集
X_trainer, X_test, Y_trainer, Y_test = train_test_split(X, y, test_size=0.2)
# 3. RandomForestClassifier
clf = RandomForestClassifier(n_estimators=5, max_depth=4)
clf.fit(X_trainer, Y_trainer)
score = clf.score(X_test, Y_test) # 模型得分
print("模型得分:", score)
输出结果:
模型得分: 0.9666666666666667
预测的效果还是很好的。下面对RandomForestClassifier的参数做一下说明:
n_estimators:设置决策树的数量,即想要创建几棵树;数值设置得越大预测结果越稳定,但太大就会使得速度慢了;
max_depth:设置每棵决策树的最大深度(树的层数)
2. Adaboost
2.1 原理介绍
自适应增强算法(Adaptive Boosting),这是boosting算法之一。其思想就是“前人栽树,后人乘凉”。更多的原理介绍见 此篇博客。
2.2 代码实现
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
from sklearn.ensemble import AdaBoostClassifier
# 1. 加载数据集
iris = load_iris()
X = iris.data # 数据
y = iris.target # 标签
# 2. 划分数据集
X_trainer, X_test, Y_trainer, Y_test = train_test_split(X, y, test_size=0.2)
# 3. AdaBoostClassifier
clf = AdaBoostClassifier()
clf.fit(X_trainer, Y_trainer)
score = clf.score(X_test, Y_test) # 模型得分
print("模型得分:", score)
输出结果:
模型得分: 0.9666666666666667