# Python sklearn 随机森林（一）

### 1. 集成学习

• 装袋法的核心思想是构建多个相互独立的分类器，然后对多个分类器的表现进行平行或多数表决原则来决定集成评估器的结果。典型的代表是Randon Forest.

### 2. sklearn 模块中的集成算法模块 ensemble

• ensemble.RandomForestClassifier
• ensemble.RandomForestRegressor

### 3. RandomForestClassifier

• 比较DecisionTreeClassifier和RandomForest
• n_estimators的学习曲线
from sklearn.tree import DecisionTreeClassifier
from sklearn.datasets import load_wine
from sklearn.ensemble import RandomForestClassifier
from sklearn.model_selection import cross_val_score
import matplotlib.pyplot as plt

rfc = RandomForestClassifier(n_estimators=25)
rfc_s = cross_val_score(rfc, wine.data, wine.target, cv=10)

clf = DecisionTreeClassifier()
clf_s = cross_val_score(clf, wine.data, wine.target, cv=10)

plt.plot(range(1, 11), rfc_s, label="Random Forest")
plt.plot(range(1, 11), clf_s, label="Decision Tree")
plt.legend()
plt.show()

# n_estimators学习曲线
result = []
for i in range(200):
rfc = RandomForestClassifier(n_estimators=i+1, n_jobs=-1)
# 十折交叉验证，每次求均值
rfc_s = cross_val_score(rfc,wine.data, wine.target, cv=10).mean()
result.append(rfc_s)

# 输出最高精的值，以及最高精度时树颗数
print(max(result), result.index(max(result))+1)

plt.plot(range(1, 201), result, label="Random Forest")
plt.legend()   # 显示图例
plt.show()


### 4. 为什么RandomForest比DecisionTree好

import numpy as np
from scipy.special import comb
error_rate = np.array([comb(15, i)*(0.15**i)*((1-0.15)**(15-i)) for i in range(8, 16)]).sum()
print(error_rate)

04-15 2万+

07-15 723

04-12 1万+

09-17 9451

12-11 320

01-06 5万+

09-12 2583

06-12 840

01-17 7722

01-12 1821

08-12 339

05-14 93

05-22 414

06-30 43

10-14 557

09-20 537

05-17 338

04-03 601

05-11 9417

05-03 761

04-14 58万+

03-13 14万+

03-01 13万+

03-04 13万+

03-08 4万+

03-08 7万+

04-25 6万+

03-10 13万+

03-12 11万+

03-13 11万+

03-14 1万+

03-18 9407

03-19 3万+

03-19 8万+

03-19 3万+

03-22 4万+

03-24 3万+

03-25 3万+

05-08 5万+

03-25 9万+

03-27 1万+

03-29 21万+

03-29 10万+

03-30 16万+

05-28 5770

05-28 1万+

04-02 4069

04-02 4万+

04-06 7万+

04-09 8万+

04-09 2万+

05-17 8111

04-11 3万+

04-15 6万+

04-18 4万+

04-20 4万+

04-24 3万+

04-29 6844

04-30 9803

04-30 9370

05-01 5639

05-03 9969

05-16 5万+

05-06 1万+

05-08 4万+

05-10 3115

05-14 6179

05-14 1820

05-16 3427

05-16 1万+

05-20 836

05-18 8148

05-27 1106

05-18 3372

05-19 1万+

05-21 6768

05-21 6791

#### 老码农吐血建议：2020年，低于1w的程序员要注意了...

©️2019 CSDN 皮肤主题: 数字20 设计师: CSDN官方博客