决策树和随机森林实验
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验算法决策树和随机森林实验
【实验名称】
决策树和随机森林实验
【实验目的】
掌握决策树和随机森林实验模型应用过程,根据模型要求进行数据预处理,建模,评价与应用;【背景描述】
决策树与随机森林,属于监督学习,通过纯化指标的计算,确定分支方式,逐步构建成树形结构。决策树由节点(node)和有向边(directed edge)组成。节点的类型有两种:内部节点和叶子节点。其中,内部节点表示一个特征或属性的测试条件(用于分开具有不同特性的记录),叶子节点表示一个分类。
随机森林顾名思义,是用随机的方式建立一个森林,森林里面有很多的决策树组成,随机森林的每一棵决策树之间是没有关联的。在得到森林之后,当有一个新的输入样本进入的时候,就让森林中的每一棵决策树分别进行一下判断,看看这个样本应该属于哪一类(对于分类算法),然后看看哪一类被选择最多,就预测这个样本为那一类。
【知识准备】
了解决策树与随机森林模型的使用场景,数据标准。了解Python/Spark数据处理一般方法。了解spark模型调用,训练以及应用方法
【实验要求】
完成决策树和随机森林实验
【实验设备】
Windows或Linux操作系统的计算机。部署Spark,Python,本实验提供centos6.8环境。【实验说明】
采用UCI机器学习库中的wine数据集作为算法数据,训练决策树与随机森林模型,对样本进行聚类。
【实验环境】
Spark 2.3.1,Pyrhon3.X,实验在命令行pyspark中进行,或者把代码写在py脚本,由于本次为实验,以学习模型为主,所以在命令行中逐步执行代码,以便更加清晰地了解整个建模流程。【实验步骤】
第一步:启动pyspark:
命令行中键入pyspark --master local[4],本地模式启动spark与python:
第二步:导入用到的包,并读取数据:
(1).将所需导入的包键入Spark Shell中,具体命令:
from pyspark import SparkConf, SparkContext
from pyspark.mllib.evaluation import MulticlassMetrics
from pyspark.mllib.tree import DecisionTree, RandomForest
from pyspark.mllib.regression import LabeledPoint
(2).读取数据源,具体命令(第一行由于word文档篇幅受限,在Spark Shell中必须将他复制成一行,否则会报语法错误,其他命令建议一行一行复制),数据源存放目录为/opt/algorithm/decisionTreeAndRandomForest/wine.txt:
wine_rdd=sc.textFile(u"file:/opt/algorithm/decisionTreeAndRandomForest/wine.txt").map(l ambda x: str(x).split(",")).map(lambda x: [float(z) for z in x])
data = wine_rdd.map(lambda x: LabeledPoint(x[0] - 1, (x[1:])))
(trainData, testData) = data.randomSplit([8.0, 2.0])
第三步:构建模型并应用在测试集,输出测试集准确率
具体命令如下:
(1).建立决策树模型
model = DecisionTree.trainClassifier(trainData,
numClasses=3,
categoricalFeaturesInfo={},
impurity='gini',
maxDepth=5,
maxBins=32,
minInstancesPerNode=1,
minInfoGain=0.0
)
(2).利用建立好的模型做预测
predictions = model.predict(testData.map(lambda x: x.features)) predictionsAndLabels = predictions.zip(testData.map(lambda x: bel)) metrics = MulticlassMetrics(predictionsAndLabels)
(3).打印预测信息
print("DecisionTree " + str(metrics.precision()))
第四步:构建随机森林模型并应用在测试集,输出测试集准确率
(1).建立随机森林模型
model_forest = RandomForest.trainClassifier(trainData,
numClasses=3,
categoricalFeaturesInfo={},
numTrees=1000,
featureSubsetStrategy='auto',
impurity='gini',
maxDepth=5,
maxBins=32,
seed=None
)
(2).根据森林模型进行预测
predictions2 = model_forest.predict(testData.map(lambda x: x.features))
predictionsAndLabels2 = predictions2.zip(testData.map(lambda x: bel)) (3).打印预测信息
metrics2 = MulticlassMetrics(predictionsAndLabels)
print("RandomForest " + str(metrics2.precision()))
第五步:可以通过spark submit提交整个文件,进行运算,查看结果,命令如下
[root@hadoop]#/opt/spark-2.3.1/bin/spark-submit
/opt/algorithm/decisionTreeAndRandomForest/desionTreeAndRandomForest.py