决策树(1)

简介: 决策树(1)
import java.util.HashMap;
import java.util.Map;
import scala.Tuple2;
import org.apache.spark.SparkConf;
import org.apache.spark.api.java.JavaPairRDD;
import org.apache.spark.api.java.JavaRDD;
import org.apache.spark.api.java.JavaSparkContext;
import org.apache.spark.api.java.function.Function;
import org.apache.spark.api.java.function.Function2;
import org.apache.spark.api.java.function.PairFunction;
import org.apache.spark.mllib.regression.LabeledPoint;
import org.apache.spark.mllib.tree.DecisionTree;
import org.apache.spark.mllib.tree.model.DecisionTreeModel;
import org.apache.spark.mllib.util.MLUtils;
public class DecisionTreeRegression{
    public static void main(String[] args) {
        // TODO Auto-generated method stub
      SparkConf sparkConf = new SparkConf(). setAppName ("JavaDecisionTreeClassificationExample");
      sparkConf . setMaster("local[2]");
      JavaSparkContext jsc = new JavaSparkContext (sparkConf);
      // Load and parse the data file.
      String datapath =
      "file:///home/gyq/下载/spark-2.3.2-bin-hadoop2.7/data/mllib/sample_libsvm_data.txt";
      JavaRDD<LabeledPoint> data = MLUtils. loadLibSVMFile(jsc.sc(), datapath).toJavaRDD() ;
      // Split the data into training and test sets (30% held out for testing)
      JavaRDD<LabeledPoint>[] splits = data. randomSplit(new double[]{0.7, 0.3});
      JavaRDD<LabeledPoint> trainingData = splits[0];
      JavaRDD<LabeledPoint> testData = splits[1] ;
      // Set parameters.
      // Empty categoricalFeaturesInfo indicates all features are cont inuous .
      Integer numClasses = 2; //类别数量
      Map<Integer, Integer> categoricalFeaturesInfo = new HashMap<Integer, Integer>() ;
      /*衡量分类的质量。 支持的标准有"gini" ,代表的是Gini impurity(不纯度,即无序程度)与“entropy"代表的是
      information gain(信息增益)
      */
      String impurity = "gini";
      Integer maxDepth = 5; // 最大深度
      Integer maxBins = 32; // 最大划分数
      // Train a DecisionTree model for classification.
      final DecisionTreeModel model = DecisionTree . trainClassifier(trainingData,
      numClasses , categoricalFeaturesInfo, impurity, maxDepth, maxBins);
      // Evaluate model on test instances and compute test error
      JavaPairRDD<Double,Double> predictionAndLabel =
      testData.mapToPair(new PairFunction<LabeledPoint, Double, Double>() {
      public Tuple2<Double,Double> call(LabeledPoint p) {
      return new Tuple2<Double, Double> (model. predict(p. features()),p.label());
      }
      });
      Double testErr =1.0
      * predictionAndLabel. filter(new Function<Tuple2<Double,Double>, Boolean>()
      {
      public Boolean call(Tuple2<Double,Double> pl) {
      return !pl._1(). equals(pl._2());
      }
      }). count() / testData . count();
      System. out . println("Test Error: "+ testErr);
      System. out . println("Learned classification tree model:\n" + model. toDebugString());
    }
    }

相关文章
|
25天前
|
机器学习/深度学习 算法 前端开发
决策树与随机森林算法在分类问题中的应用
本文探讨了决策树和随机森林两种监督学习算法,它们在分类任务中表现出强大的解释性和预测能力。决策树通过特征测试进行分类,构建涉及特征选择、树生成和剪枝。随机森林是集成学习方法,通过构建多棵决策树并汇总预测结果,防止过拟合。文中提供了Python代码示例,展示如何使用sklearn构建和应用这些模型,并讨论了参数调优和模型评估方法,如交叉验证和混淆矩阵。最后,强调了在实际问题中灵活选择和调整模型参数的重要性。
46 4
|
8月前
|
机器学习/深度学习 存储
随机森林是什么?
随机森林(Random Forest)是将多个决策树(Decision Tree)组合在一起形成一个强大的分类器或回归器,是一种集成学习(Ensemble Learning)方法。 随机森林的主要思想是通过随机选择样本和特征来构建多个决策树,并通过集成这些决策树的预测结果来达到更准确的分类或回归结果。具体步骤如下:
|
2月前
|
机器学习/深度学习 数据采集 并行计算
决策树
分类决策树
19 0
|
2月前
|
机器学习/深度学习 数据采集 算法
实现机器学习算法(如:决策树、随机森林等)。
实现机器学习算法(如:决策树、随机森林等)。
30 0
|
2月前
|
机器学习/深度学习 算法 数据库
决策树与随机森林算法
决策树和随机森林都是用于分类和回归的的算法。决策树的原理是通过一系列的问题进行if、else的推导。随机森林是集合学习算法,即把很多的机器学习算法综合在一起组成一个更大的模型。
|
机器学习/深度学习 人工智能 算法
连载|决策树(下)
连载|决策树(下)
|
机器学习/深度学习
随机森林(1)
随机森林(1)
|
机器学习/深度学习 算法
【算法系列】决策树
【算法系列】决策树
【算法系列】决策树
|
算法 数据挖掘
R 决策树
R 决策树
239 0
R 决策树

相关实验场景

更多