贵阳门户网站,三合一网站有必要吗,使用免费的代码做网站,wordpress插件 电商随机森林-集成学习方法#xff08;分类#xff09;
1 集成学习方法
集成学习通过建立几个模型组合的来解决单一预测问题。它的工作原理是生成多个分类器/模型#xff0c;各自独立地学习和作出预测。这些预测最后结合成单预测#xff0c;因此优于任何一个单分类的做出预测… 随机森林-集成学习方法分类
1 集成学习方法
集成学习通过建立几个模型组合的来解决单一预测问题。它的工作原理是生成多个分类器/模型各自独立地学习和作出预测。这些预测最后结合成单预测因此优于任何一个单分类的做出预测。
2 随机森林
在机器学习中随机森林是一个包含多个决策树的分类器并且其输出的类别是由个别树输出的类别的众数而定。
在决策树中一个标准的决策树会根据每维特征对预测结果的影响程度进行排序进而决定不同的特征从上至下构建分裂节点的顺序如此以来所有在随机森林中的决策树都会受这一策略影响而构建的完全一致从而丧失的多样性。所以在随机森林分类器的构建过程中每一棵决策树都会放弃这一固定的排序算法转而随机选取特征。
3 学习算法
根据下列算法而建造每棵树
1用N来表示训练用例样本的个数M表示特征数目
2输入特征数目m用于确定决策树上一个节点的决策结果其中m应远小于M 3从N个训练用例样本中以随机有放回抽样的方式取样N次形成一个训练集即bootstrap取样并用未抽到的用例样本作预测评估其误差。
4对于每一个节点随机选择m个特征决策树上每个节点的决定都是基于这些特征确定的。根据这m个特征计算其最佳的分裂方式。
随机抽样训练集目的如果不进行随机抽样每棵树的训练集都一样那么最终训练出的树分类结果也是完全一样的
有返回抽样的目的如果不是有放回的抽样那么每棵树的训练样本都是不同的都是没有交集的也就是说每棵树训练出来都是有很大的差异的而随机森林最后分类取决于多棵树弱分类器的投票表决。
4 集成学习API
class sklearn.ensemble.RandomForestClassifier(n_estimators10, criterion’gini’, max_depthNone, bootstrapTrue, random_stateNone) 随机森林分类器
n_estimatorsintegeroptionaldefault 10 森林里的树木数量
criteriastring可选default “gini”分割特征的测量方法
max_depthinteger或None可选默认无树的最大深度
bootstrapbooleanoptionaldefault True是否在构建树时使用放回抽样
5 案例
import pandas as pd
from sklearn.model_selection import train_test_split
from sklearn.feature_extraction import DictVectorizer
from sklearn.ensemble import RandomForestClassifier
from sklearn.model_selection import GridSearchCV
# 1.加载数据
datas pd.read_csv(http://biostat.mc.vanderbilt.edu/wiki/pub/Main/DataSets/titanic.txt)# 2.处理数据找出目标值和特征值
x datas[[pclass,age,sex]]
y datas[survived]# 2.1利用pandas.DataFrame.fillna方法处理缺失数据inplaceTrue直接修改原对象
x[age].fillna(x[age].mean(),inplaceTrue)# 3 分割数据集为训练集合测试集
x_train,x_test,y_train,y_test train_test_split(x,y,test_size0.25)# 4.特征工程的抽取 特征-类别-one_hot编码
# 当特征里面是类别的信息应该要one-hot编码否则计算机不知道怎么去计算
dict DictVectorizer(sparseFalse)
# 将x_train(DataFrame类型)转换为字典关键字orientrecords 时形成[{column - value}, … , {column - value}]的结构
# 整体构成一个列表内层是将原始数据的每行提取出来形成字典
x_train dict.fit_transform(x_train.to_dict(orientrecords))
print(dict.get_feature_names())
x_test dict.transform(x_test.to_dict(orientrecords))# 5.随机森林预测使用超参数调优所以在此不添加任何参数
rfcls RandomForestClassifier()params {n_estimators:[120,200,300,500,800,1200],max_depth:[5,10,15,20,25]}
# 6网格搜索与交叉验证
gc GridSearchCV(rfcls,param_gridparams,cv10)
gc.fit(x_train,y_train)
print(查看最好的结果,gc.best_score_)
print(查看选择的参数模型,gc.best_params_)
print(查看最好的参数模型,gc.best_estimator_)
print(每个超参数每次交叉验证的结果, gc.cv_results_) 6 随机森林的优缺点
优点在当前所有算法中具有极好的准确率能够有效地运行在大数据集上能够处理具有高维特征的输入样本而且不需要降维能够评估各个特征在分类问题上的重要性对于缺省值问题也能够获得很好得结果。
随机森林没有缺点有的就是选不到合适的参数和特征值。参数选择和特征值准备共同决定最终的预测效果。