决策树(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());
    }
    }

相关文章
|
4月前
|
机器学习/深度学习 算法
决策树及随机森林学习总结
决策树及随机森林学习总结
54 4
|
2月前
|
数据采集 机器学习/深度学习 供应链
基于学习的决策树
决策树是一种监督学习方法,广泛应用于分类和回归任务中。基于学习的决策树模型通过学习数据中的特征来构建树状结构,帮助做出决策。
22 1
|
3月前
|
机器学习/深度学习 算法
决策树学习
【9月份更文挑战第3天】
40 6
|
机器学习/深度学习 存储
随机森林是什么?
随机森林(Random Forest)是将多个决策树(Decision Tree)组合在一起形成一个强大的分类器或回归器,是一种集成学习(Ensemble Learning)方法。 随机森林的主要思想是通过随机选择样本和特征来构建多个决策树,并通过集成这些决策树的预测结果来达到更准确的分类或回归结果。具体步骤如下:
|
7月前
|
机器学习/深度学习 数据采集 并行计算
决策树
分类决策树
49 0
|
7月前
|
机器学习/深度学习 算法 数据库
决策树与随机森林算法
决策树和随机森林都是用于分类和回归的的算法。决策树的原理是通过一系列的问题进行if、else的推导。随机森林是集合学习算法,即把很多的机器学习算法综合在一起组成一个更大的模型。
111 0
|
机器学习/深度学习 人工智能 算法
连载|决策树(下)
连载|决策树(下)
|
机器学习/深度学习
随机森林(1)
随机森林(1)
|
机器学习/深度学习 算法