决策树和随机森林实验

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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

相关文档
最新文档