Spark MLlib 编程
2016-04-22 11:57
483 查看
数据集的构造
val rawData = sc.textFile("...") val data = rawdata.map{ line => val row = line.split(',').map(_.toDouble) val featVec = Vectors.dense(row.init) val label = row.last LabeledPoint(label, featVec) }
训练集,交叉验证集(CV),测试集的构造
val Array(trainData, cvData, testData) = data.randomSplit(Array(.8, .1, .1)) trainData.cache() cvData.cache() testData.cache()
模型训练与模型评价(metric)
MultiClassMetricsBinaryClassificationMetrics
def getMetrics(model: DecisionTreeModel, data: RDD[LabeledPoint]) = { val predsAndLabels = data.map(sample => (model.predict(sample.features), sample.label)) new MultiClassMetrics(predsAndLabels) } val model = DecisionTree.trainClassifier(trainData, numClasses, Map[Int, Int](), "gini") val metrics = getMetrics(model, cvData)
统计样本集的类别分布
def classProb(data: RDD[LabeledPoint]) = { val countsByCategory = data.map(_.label).countByValue() val counts = countsByCategory.toArray().sortBy(_._1).map(_._2) counts.map(_.toDouble/counts.sum) }
超参的确定(在CV上进行评估)
val evaluations = for ( impurity <- Array("gini", "entropy"); depth <- Array(1, 20); bins <- Array(10, 300) ) yield { val model = DecisionTree.trainClassifier(trainData, numClasses.toInt, Map[Int, Int](), impurity, depth, bins) val predsAndLabels = cvData.map(sample => (model.predict(sample.features), sample.label)) val accuracy = new MultiClassMetrics(predsAndLabels) ((impurity, depth, bins), accuracy) } evaluations.sotyBy(_._2).reverse.foreach(println)
相关文章推荐
- ASP.NET中Literal控件的使用方法[原创]_基础应用_脚本之家
- 浅析Yii2中GridView常见操作
- 快排的方法与代码
- Lua 类型和值
- lua5.2之后返回table长度
- ViewPager +FragmentPagerAdapter 的获取getActivity()
- SpringMVC中文乱码,字符过滤器配置
- phpcms V9 内联/关联链接 字符串较长链接无法正确替换的问题完美解决
- JAVA 输出日历
- java虚拟机规范-加载、链接与初始化
- 我的SpringMvc学习之路之注解
- java虚拟机规范-运行时数据区
- 冒泡法最好情况下实现时间复杂度O(n)代码
- delphi学习_安装
- [mysql+qt] 图书管理系统
- c++ vector(向量)使用方法详解
- java虚拟机规范-运行时栈帧
- java自定义classloader引发的思考
- java 代码实现 Top N 问题
- C++第5次上机实验