#python机器学习#随机森林(算法介绍+iris实例代码)

python机器学习-随机森林

 
随机森林算法原理
 随机森林分类器最早由Leo Breiman和Adele Cutler提出,指的是利用多棵树对样本进行训练并预测的一种分类器。采用的原理是“集思广益”,当一颗决策树的预测效果不稳定时,采用多颗决策树构成“森林”的思想来提高模型的决策能力。
 
随机森林的建模步骤(X-MIND)

#python机器学习#随机森林(算法介绍+iris实例代码)_第1张图片
从分叉树的角度(图片取自百度百科)

#python机器学习#随机森林(算法介绍+iris实例代码)_第2张图片

 

机器学习随机森林接口介绍

from sklearn.ensemble import RandomForestClassifier
estimator= RandomForestClassifier()
##参数

 
网格搜索和交叉验证

  • 交叉验证法:
     将原始数据集进行多次划分,得到n个验证集和n个测试集合,分别对n个不同划分的数据集合进行训练和建模,得到n个预测结果,n个结果的平均值作为最终的分类结果。
     
  • 网格搜索法介绍
      网格搜索算法是一种通过遍历给定的参数组合来优化模型表现的方法,自动遍历我们给定的超参数,从而得到范围内的最优模型。

 

#网格搜索法和交叉验证接口
sklearn.model_selection.GridSearchCV(estimator,param_grid=None,cv=None)
##参数说明
estimator:估计器对象  #KNN,决策树等
param_grid:估计器的参数

cv:指定交叉验证的折数
##输出结果
best_params_
best_score_
best_estimator_
cv_results_

 
实例化代码和解释

##监督03-随机森林
##超参数
##适合场景:适合处理高纬度数据

from sklearn.ensemble import RandomForestClassifier
from sklearn.model_selection import GridSearchCV

estimator=RandomForestClassifier()
##确定网格交叉验证的参数
param_dict={"n_estimators":[120,200,300],
          "max_depth":[5,7,9,10]}

estimator=GridSearchCV(estimator,param_grid=param_dict,cv=3)
estimator.fit(x_train,y_train)

##预测
y_predict=estimator.predict(x_test)

##模型评估
score=estimator.score(x_test,y_test)
print("随机森林算法准确率:\n",score)

##打印最佳参数
print("最佳参数:\n",estimator.best_params_)
##最佳结果
print("最佳结果:\n",estimator.best_score_)
##最佳预估器
print("最佳预估器:\n",estimator.best_estimator_)
##交叉验证结果
print("最佳预估器:\n",estimator.cv_results_)

#python机器学习#随机森林(算法介绍+iris实例代码)_第3张图片
 根据网格搜索结果,在给定的范围中,当决策树的数量为120,数的深度为15时,决策效果最佳,精确率为0.95,但是这个效果还没有采用简单的knn算法的准确度高,是因为本身iris数据集数据量较少,随机森林更适合数据量大的数据集合,对缺失值不敏感,在应用时应根据数据集的表现选择合适的机器学习算法。

你可能感兴趣的:(机器学习,机器学习,python,算法)