目录
1 概念
随机森林:随机森林是包含多个决策树的分类器,并且其输出类别是由个别树输出的类别的众数而定
决策树见案例:https://blog.csdn.net/qq_36327687/article/details/84944850
2 优点
01 适合离散型和连续型的属性数据
02 对海量数据,尽量避免了过度拟合的问题
03 对高纬度的数据,不会出现特征选择困难的问题
04 实现简单,训练速度快,适合进行分布式计算
3 理论方法
# 随机森林生成方法:
rfcModel=RandomforestClassifier(
n_estimators=10,
max_leaf_nodes=None
)
n_estimators 森林中树的个数,默认值为10
max_leaf_nodes 统一设置树中最大的叶子节点数
# 随机森林训练以及预测方法
rfcModel.fit(featureData,targetData)
featureData 特征数据
targetData 目标数据
rfcModel.predict(featureData)
featureData 特征数据
4、代码完整案例
import pandas;
data = pandas.read_csv('D:\\DATA\\pycase\\number2\\5.3\\data.csv')
# 虚拟变量的转换
dummyColumns = ["Gender", "ParentEncouragement"]
for column in dummyColumns:
data[column]=data[column].astype('category')
dummiesData = pandas.get_dummies(
data,
columns=dummyColumns,
prefix=dummyColumns,
prefix_sep="=",
drop_first=True
)
dummiesData.columns
# 挑选出重要特征
fData = dummiesData[[
'ParentIncome', 'IQ', 'Gender=Male',
'ParentEncouragement=Not Encouraged'
]]
# 挑选结果属性
tData = dummiesData["CollegePlans"]
from sklearn.tree import DecisionTreeClassifier
from sklearn.ensemble import RandomForestClassifier
from sklearn.model_selection import cross_val_score
# 决策树的评分
dtModel = DecisionTreeClassifier()
dtScores = cross_val_score(
dtModel,
fData, tData, cv=10
)
dtScores.mean()
# 随机森林哥的评分,在没有参数调优的情况下,随机森林好,参数:叶子结点
rfcModel = RandomForestClassifier()
rfcScores = cross_val_score(
rfcModel,
fData, tData, cv=10
)
rfcScores.mean()
# 决策树,加入叶子节点进行调油
dtModel = DecisionTreeClassifier(max_leaf_nodes=8)
dtScores = cross_val_score(
dtModel,
fData, tData, cv=10
)
dtScores.mean()
# 随机森林,加入叶子节点进行调油,结果和决策树差不多,所以没有最好,适合
rfcModel = RandomForestClassifier(max_leaf_nodes=8)
rfcScores = cross_val_score(
rfcModel,
fData, tData, cv=10
)
rfcScores.mean()