这是我写的这本书的第二个程序,这几天一直研究storm,没时间写,第一个推荐系统由于时间我没及时发回头会补充给大家,这个找了时间参照书上写的,希望对大家有帮助。
package mllib.tree import org.apache.log4j.{Level, Logger} import org.apache.spark.mllib.evaluation.MulticlassMetrics import org.apache.spark.mllib.linalg.Vectors 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.rdd.RDD import org.apache.spark.{SparkContext, SparkConf} /** * Created by 汪本成 on 2016/7/12. */ object trainCovtype { //开始时间 var beg = System.currentTimeMillis() //屏蔽不必要的日志显示在终端上 //Logger.getLogger("org.apache.spark").setLevel(Level.WARN) //Logger.getLogger("org.apache.eclipse.jetty.server").setLevel(Level.OFF) //创建入口对象 val conf = new SparkConf().setAppName("trainCovtype").setMaster("local") val sc= new SparkContext(conf) val HDFS_COVDATA_PATH = "hdfs://node1:9000/user/spark/sparkLearning/mllib/covtype.data" val rawData = sc.textFile(HDFS_COVDATA_PATH) //设置LabeledPoint格式 val data = rawData.map{ line => val values = line.split(",").map(_.toDouble) // init返回除最后一个值之外的所有值,最后一列是目标 val FeatureVector = Vectors.dense(values.init) //决策树要求(目标变量)label从0开始,所以要减一 val label = values.last - 1 LabeledPoint(label, FeatureVector) } //分成训练集(80%),交叉验证集(10%),测试集(10%) val Array(trainData, cvData, testData) = data.randomSplit(Array(0.8, 0.1, 0.1)) trainData.cache() cvData.cache() testData.cache() //新建决策树 val numClass = 7 //分类数量 val categoricalFeaturesInfo = Map[Int, Int]() //用map存储类别(离散)特征及每个类特征对应值 |