基于Spark实现随机森林代码

网友投稿 412 2023-07-28

基于Spark实现随机森林代码

基于Spark实现随机森林代码

本文实例为大家分享了基于Spark实现随机森林的具体代码,供大家参考,具体内容如下

public class RandomForestClassficationTest extends TestCase implements Serializable

{

/**

*

*/

private static final long serialVersionUID = 7802523720751354318L;

class PredictResult implements Serializable{

/**

*

*/

private static final long serialVersionUID = -168308887976477219L;

double label;

double prediction;

public PredictResult(double label,double prediction){

this.label = label;

this.prediction = prediction;

}

@Override

public String toString(){

return this.label + " : " + this.prediction ;

}

}

public void test_randomForest() throws JAXBException{

SparkConf sparkConf = new SparkConf();

sparkConf.setAppName("RandomForest");

sparkConf.setMaster("local");

SparkContext sc = new SparkContext(sparkConf);

String dataPath = RandomForestClassficationTest.class.getResourchttp://e("/").getPath() + "/sample_libsvm_data.txt";

RDD dataSet = MLUtils.loadLibSVMFile(sc, dataPath);

RDD[] rddList = dataSet.randomSplit(new double[]{0.7,0.3},1);

RDD trainingData = rddList[0];

RDD testData = rddList[1];

ClassTag labelPointClassTag = trainingData.elementClassTag();

javaRDD trainingJavaData = new JavaRDD(trainingData,labelPointClassTag);

int numClasses = 2;

Map categoricalFeatureInfos = new HashMap();

int numTrees = 3;

String featureSubsetStrategy = "auto";

String impurity = "gini";

int maxDepth = 4;

int maxBins = 32;

/**

* 1 numClasses分类个数为2

* 2 numTrees 表示的是随机森林中树的个数

* 3 featureSubsetStrategy

* 4

*/

final RandomForestModel model = RandomForest.trainClassifier(trainingJavaData,

numClasses,

categoricalFeatureInfos,

numTrees,

featureSubsetStrategy,

impurity,

maxDepth,

maxBins,

1);

JavaRDD testJavaData = new JavaRDD(testData,testData.elementClassTag());

JavaRDD predictRddResult = testJavaData.map(new Function(){

/**

*

*/

private static final long serialVersionUID = 1L;

public PredictResult call(LabeledPoint point) throws Exception {

// TODO Auto-generated method stub

double pointLabel = point.label();

double prediction = model.predict(point.features());

PredictResult result = new PredictResult(pointLabel,prediction);

return result;

}

});

List predictResultList = predictRddResult.collect();

for(PredictResult result:predictResultList){

System.out.println(result.toString());

}

System.out.println(model.toDebugString());

}

}

得到的随机森林的展示结果如下:

TreeEnsembleModel classifier with 3 trees

Tree 0:

If (feature 435 <= 0.0)

If (feature 516 <= 0.0)

Predict: 0.0

Else (feature 516 > 0.0)

Predict: 1.0

Else (feature 435 > 0.0)

Predict: 1.0

Tree 1:

If (feature 512 <= 0.0)

Predict: 1.0

Else (feature 512 > 0.0)

Predict: 0.0

Tree 2:

If (feature 377 <= 1.0)

Predict: 0.0

Else (feature 377 > 1.0)

If (feature 455 <= 0.0)

Predict: 1.0

Else (feature 455 > 0.0)

Predict: 0.0

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:Spark随机森林实现票房预测
下一篇:基于MapReduce实现决策树算法
相关文章

 发表评论

暂时没有评论,来抢沙发吧~