随机森林
一、概述
1.1 原理
随机森林就是通过集成学习的思想将多棵树集成的一种算法,它的基本单元是决策树
随机森林是bagging+DecisionTreeClassifier ,所谓随机森林的弱学习器都是决策树;随机森林在bagging的样本随机采样基础上,又加上了特征的随机选择,其基本思想没有脱离bagging的范畴。
1.2 对比
- GridSearchCV可以获得最优解
- VotingClassifier可以获得最优模型
- BaggingClassifier可以获得最客观的分数(行的随机性),最客观分数不是最高分数
- RandomForestClassifier = BaggingClassifier + DecisionTreeClassifier
- RandomForestClassifier不仅可以随机选择行(行的随机性),还可以随机选择列(列的随机性)
二、代码
import matplotlib.pyplot as plt from sklearn import datasets from sklearn.model_selection import train_test_split from sklearn.ensemble import RandomForestClassifier from sklearn.tree import DecisionTreeClassifier ''' 制作样本数据,产生的结果为一个简单的样本数据集,用于可视化聚类算法和分类算法 1. n_samples : 整数型, 可选,默认为100 总的产生的样本点的数量 2. shuffle : 布尔型,可选填 (默认为True) 是否对样本进行重新洗牌 3. noise : 浮点型 or None型 (默认为None) 加到数据里面的高斯噪声的标准差 ''' X, y = datasets.make_moons(n_samples=1000, shuffle=True, noise=0.3, random_state=2) plt.scatter(X[y == 0, 0], X[y == 0, 1]) plt.scatter(X[y == 1, 0], X[y == 1, 1]) # plt.show() # 划分数据 X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.25, random_state=2) rfc_clf = RandomForestClassifier(max_depth=3, min_samples_leaf=2, random_state=2, n_estimators=400, max_samples=500) rfc_clf.fit(X_train, y_train) print('bagging的训练集分数:{a:.2%}, 测试集分数:{b:.2%}'. format(a=rfc_clf.score(X_train, y_train), b=rfc_clf.score(X_test, y_test)))