随机森林

一、概述

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)))

 

posted @ 2022-12-18 21:17  qsl_你猜  阅读(92)  评论(0编辑  收藏  举报