随机森林(1)

简介: 随机森林(1)
import java.util.HashMap;
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.PairFunction;
import org.apache.spark.mllib.regression.LabeledPoint;
import org.apache.spark.mllib.tree.RandomForest;
import org.apache.spark.mllib.tree.model.RandomForestModel;
import org.apache.spark.mllib.util.MLUtils;
import scala.Tuple2;
public class decisiontree1 {
  public static void main(String[] args) {
  SparkConf sparkConf = new SparkConf () . setAppName (" JavaRandomForestExample"); 
  sparkConf . setMaster("local");
  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] ;
  // Train a RandomForest model.
  // Empty categoricalFeaturesInfo indicates all features are continuous .
  Integer numClasses = 2;
  HashMap<Integer, Integer> categoricalFeaturesInfo = new HashMap<Integer, Integer>();
  Integer numTrees =3; // Use more in practice.
  String featureSubsetStrategy = "auto"; // Let the algorithm choose.
  String impurity = "gini";
  Integer maxDepth = 5;
  Integer maxBins = 32;
  Integer seed = 12345;
  final RandomForestModel model = RandomForest . trainClassifier(trainingData, numClasses,
      categoricalFeaturesInfo, numTrees, featureSubsetStrategy, impurity, maxDepth, maxBins,
      seed);
      // Evaluate model on test instances and compute test error
      JavaPairRDD<Double,Double> predictionAndLabel =
      testData. mapToPair(new PairFunction<LabeledPoint,Double, Double>() {
      @Override
      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 forest model:\n" + model. toDebugString());
  }
}

相关文章
|
19天前
|
机器学习/深度学习 存储
集成学习方法——随机森林
之前我们介绍过决策树,随机森林(Random Forest)是将多个决策树(Decision Tree)组合在一起形成一个强大的分类器或回归器,是一种集成学习(Ensemble Learning)方法。 随机森林的主要思想是通过随机选择样本和特征来构建多个决策树,并通过集成这些决策树的预测结果来达到更准确的分类或回归结果。具体步骤如下: 随机选择部分训练样本集; 随机选择部分特征子集; 构建决策树,对每个节点进行特征选择和分裂; 再进行重复,构建多个决策树; 对每个决策树,根据投票或平均值等方法,获得最后的分类或回归结果。
|
19天前
|
机器学习/深度学习 数据采集 并行计算
决策树
分类决策树
17 0
|
7月前
|
机器学习/深度学习 存储
随机森林是什么?
随机森林(Random Forest)是将多个决策树(Decision Tree)组合在一起形成一个强大的分类器或回归器,是一种集成学习(Ensemble Learning)方法。 随机森林的主要思想是通过随机选择样本和特征来构建多个决策树,并通过集成这些决策树的预测结果来达到更准确的分类或回归结果。具体步骤如下:
|
19天前
|
机器学习/深度学习 数据采集 算法
实现机器学习算法(如:决策树、随机森林等)。
实现机器学习算法(如:决策树、随机森林等)。
25 0
|
19天前
|
机器学习/深度学习 算法 数据库
决策树与随机森林算法
决策树和随机森林都是用于分类和回归的的算法。决策树的原理是通过一系列的问题进行if、else的推导。随机森林是集合学习算法,即把很多的机器学习算法综合在一起组成一个更大的模型。
|
机器学习/深度学习 人工智能 算法
连载|决策树(下)
连载|决策树(下)
|
机器学习/深度学习 算法 前端开发
集成学习方法之随机森林
集成学习通过建立几个模型组合的来解决单一预测问题。它的工作原理是生成多个分类器模型,各自独立地学习和作出预测。这些预测最后结合成组合预测,因此优于任何一个单分类的做出预测。
106 0
集成学习方法之随机森林
|
机器学习/深度学习 算法
集成学习之GBDT
GBDT、Treelink、 GBRT(Gradient Boost Regression Tree)、Tree Net、MART(Multiple Additive Regression Tree)算法都是以决策树为基分类器的集成算法,通常由多棵决策树构成,通常是上百棵树且每棵树规模都较小(即树的深度都比较浅)。进行模型预测的时候,对于输入的一个样本实例X,遍历每一棵决策树,每棵树都会对预测值进行调整修正,最后得到预测的结果。假设$F_0$是设置的初值,$T_i$是一颗一颗的决策树。预测结果如下所示:
185 0
集成学习之GBDT