随机森林 : 多颗 决策树的集成学习方法。
集成学习方法:
建立多个模型来解决一个问题。模型之间独立学习和独立预测。
最后的预测结果按照大多数合并为一个最终预测结果,这个最终的预测结果好于单个模型的预测。
随机森林=随机,多次的创建决策树
创建决策树的过程如下:
有N个样本,M个特征
每次从样本集合里随机选1个样本,重复N次。 抽样有放回。(会出现重复抽取到样本)
随机在M个特征里面,选出m个特征(m<<M)
(树之间的样本集合,特征都是不同的)
核心思想:随机有放回的抽样!!bootstrap
如果你训练了150个树, 其中有104个树的结果是True, 46颗树的结果是False, 那么最终结果会是True.
api :
from sklearn.ensemble import RandomForestClassifier
RandomForestClassifier(n_estimators=122,criterion=“gini”,max_depth=22,max_features=“auto”,bootstrapestimators=True)
决策树个数,基尼系数,最大树深度,最大选择特征的数量,是否有放回
案例 :网格调优,预测泰坦尼克号生存。
from sklearn.model_selection import GridSearchCV
from sklearn.feature_extraction import DictVectorizer
import pandas as pd
from sklearn.ensemble import RandomForestClassifier
def randomforest():
data = pd.read_csv('../taitanlike.txt')
# print(data.info())
data['age'] = data['age'].fillna(data['age'].mean())
x = data[['pclass','age','sex']]
y = data['survived']
print(x)
# 特征工程
x = x.to_dict(orient='records')
dv = DictVectorizer(sparse=False)
x = dv.fit_transform(x)
x_train, x_test, y_train, y_test = train_test_split(x, y, train_size=0.8)
# 训练模型
rfc = RandomForestClassifier()
para ={'n_estimators':[88,99,100,111,122,120],'max_depth':[8,9,10,13,14]}
gscv = GridSearchCV(rfc,param_grid=para,cv=2)
gscv.fit(x_train,y_train)
predict = gscv.predict(x_test)
score = gscv.score(x_test,y_test)
print(predict)
print(score)
print(gscv.best_params_)
randomforest()
0 1 0 0 1 0 1 0 0 0 0 1 0 0 0 0 0 1 0 1 0 1 0 0 1 0 0 0 0 1 0 0 0 0 0 0 1
1 1 1 0]
0.8288973384030418
{'max_depth': 8, 'n_estimators': 120}
最佳 8层, 120个决策树

随机森林是一种集成学习方法,通过建立多棵决策树并结合多数投票决定最终预测。每棵树在训练时对样本和特征进行随机抽样,以增加模型多样性。当多数决策树预测结果一致时,形成最终预测。在泰坦尼克号生存预测案例中,最佳参数配置为8层深度和120棵决策树。
6008

被折叠的 条评论
为什么被折叠?



