Spark 多项式逻辑回归__多分类
package Spark_MLlib import org.apache.spark.ml.Pipeline
import org.apache.spark.ml.classification.{BinaryLogisticRegressionSummary, LogisticRegression, LogisticRegressionModel}
import org.apache.spark.ml.evaluation.MulticlassClassificationEvaluator
import org.apache.spark.ml.feature.{IndexToString, StringIndexer, VectorIndexer}
import org.apache.spark.ml.linalg.Vectors
import org.apache.spark.sql.SparkSession object 多项式逻辑回归__多分类 {
val spark=SparkSession.builder().master("local").getOrCreate()
import spark.implicits._ //支持把一个RDD隐式转换为一个DataFrame
def main(args: Array[String]): Unit = {
val df =spark.sparkContext.textFile("file:///home/soyo/桌面/spark编程测试数据/soyo.txt")
.map(_.split(",")).map(x=>data_schema(Vectors.dense(x().toDouble,x().toDouble,x().toDouble,x().toDouble),x())).toDF()
// df.show(150)
val labelIndexer=new StringIndexer().setInputCol("label").setOutputCol("indexedLabel").fit(df)
val featureIndexer=new VectorIndexer().setInputCol("features").setOutputCol("indexedFeatures").fit(df) //目的在特征向量中建类别索引
val Array(trainData,testData)=df.randomSplit(Array(0.7,0.3))
val lr=new LogisticRegression().setLabelCol("indexedLabel").setFeaturesCol("indexedFeatures").setMaxIter().setRegParam(0.3).setElasticNetParam(0.8).setFamily("multinomial")//设置elasticnet混合参数为0.8,setFamily("multinomial"):设置为多项逻辑回归,不设置setFamily为二项逻辑回归
val labelConverter=new IndexToString().setInputCol("prediction").setOutputCol("predictionLabel").setLabels(labelIndexer.labels) val lrPipeline=new Pipeline().setStages(Array(labelIndexer,featureIndexer,lr,labelConverter))
val lrPipeline_Model=lrPipeline.fit(trainData)
val lrPrediction=lrPipeline_Model.transform(testData)
lrPrediction.show()
// lrPrediction.take(100).foreach(println)
//模型评估
val evaluator=new MulticlassClassificationEvaluator().setLabelCol("indexedLabel").setPredictionCol("prediction")
val lrAccuracy=evaluator.evaluate(lrPrediction)
println("准确率为: "+lrAccuracy)
val lrError=-lrAccuracy
println("错误率为: "+lrError)
val LRmodel=lrPipeline_Model.stages().asInstanceOf[LogisticRegressionModel]
println("二项逻辑回归模型系数矩阵: "+LRmodel.coefficientMatrix)
println("二项逻辑回归模型的截距向量: "+LRmodel.interceptVector)
println("类的数量(标签可以使用的值): "+LRmodel.numClasses)
println("模型所接受的特征的数量: "+LRmodel.numFeatures)
//多项式逻辑回归不包含对模型的摘要总结
println(LRmodel.hasSummary) } }
结果:
+-----------------+-----+------------+-----------------+--------------------+--------------------+----------+---------------+
| features|label|indexedLabel| indexedFeatures| rawPrediction| probability|prediction|predictionLabel|
+-----------------+-----+------------+-----------------+--------------------+--------------------+----------+---------------+
|[4.4,3.2,1.3,0.2]|soyo1| 1.0|[4.4,3.2,1.3,0.2]|[0.06313829278191...|[0.23858281707128...| 1.0| soyo1|
|[4.6,3.4,1.4,0.3]|soyo1| 1.0|[4.6,3.4,1.4,0.3]|[0.06313829278191...|[0.23750012598226...| 1.0| soyo1|
|[4.7,3.2,1.6,0.2]|soyo1| 1.0|[4.7,3.2,1.6,0.2]|[0.06313829278191...|[0.24710416166321...| 1.0| soyo1|
|[4.8,3.4,1.6,0.2]|soyo1| 1.0|[4.8,3.4,1.6,0.2]|[0.06313829278191...|[0.23716995683018...| 1.0| soyo1|
|[4.8,3.4,1.9,0.2]|soyo1| 1.0|[4.8,3.4,1.9,0.2]|[0.06313829278191...|[0.24567798276462...| 1.0| soyo1|
|[4.9,2.4,3.3,1.0]|soyo2| 0.0|[4.9,2.4,3.3,1.0]|[0.06313829278191...|[0.38071131817453...| 0.0| soyo2|
|[5.0,3.2,1.2,0.2]|soyo1| 1.0|[5.0,3.2,1.2,0.2]|[0.06313829278191...|[0.23576075216827...| 1.0| soyo1|
|[5.0,3.5,1.3,0.3]|soyo1| 1.0|[5.0,3.5,1.3,0.3]|[0.06313829278191...|[0.22978111243935...| 1.0| soyo1|
|[5.2,4.1,1.5,0.1]|soyo1| 1.0|[5.2,4.1,1.5,0.1]|[0.06313829278191...|[0.19523110424215...| 1.0| soyo1|
|[5.4,3.9,1.3,0.4]|soyo1| 1.0|[5.4,3.9,1.3,0.4]|[0.06313829278191...|[0.21630436073381...| 1.0| soyo1|
|[5.5,2.4,3.8,1.1]|soyo2| 0.0|[5.5,2.4,3.8,1.1]|[0.06313829278191...|[0.39807479409636...| 0.0| soyo2|
|[5.5,2.5,4.0,1.3]|soyo2| 0.0|[5.5,2.5,4.0,1.3]|[0.06313829278191...|[0.40810357240132...| 0.0| soyo2|
|[5.6,2.8,4.9,2.0]|soyo3| 2.0|[5.6,2.8,4.9,2.0]|[0.06313829278191...|[0.44454733071968...| 0.0| soyo2|
|[5.7,2.9,4.2,1.3]|soyo2| 0.0|[5.7,2.9,4.2,1.3]|[0.06313829278191...|[0.39634982244233...| 0.0| soyo2|
|[5.8,2.6,4.0,1.2]|soyo2| 0.0|[5.8,2.6,4.0,1.2]|[0.06313829278191...|[0.39930520027794...| 0.0| soyo2|
|[5.8,2.7,4.1,1.0]|soyo2| 0.0|[5.8,2.7,4.1,1.0]|[0.06313829278191...|[0.38762610877473...| 0.0| soyo2|
|[5.8,2.7,5.1,1.9]|soyo3| 2.0|[5.8,2.7,5.1,1.9]|[0.06313829278191...|[0.44792417666537...| 0.0| soyo2|
|[5.9,3.0,5.1,1.8]|soyo3| 2.0|[5.9,3.0,5.1,1.8]|[0.06313829278191...|[0.43418725338764...| 0.0| soyo2|
|[6.0,2.2,4.0,1.0]|soyo2| 0.0|[6.0,2.2,4.0,1.0]|[0.06313829278191...|[0.40634099537710...| 0.0| soyo2|
|[6.0,2.7,5.1,1.6]|soyo2| 0.0|[6.0,2.7,5.1,1.6]|[0.06313829278191...|[0.43688076686419...| 0.0| soyo2|
|[6.0,3.4,4.5,1.6]|soyo2| 0.0|[6.0,3.4,4.5,1.6]|[0.06313829278191...|[0.39704954911011...| 0.0| soyo2|
|[6.2,2.2,4.5,1.5]|soyo2| 0.0|[6.2,2.2,4.5,1.5]|[0.06313829278191...|[0.43847273913421...| 0.0| soyo2|
|[6.2,2.8,4.8,1.8]|soyo3| 2.0|[6.2,2.8,4.8,1.8]|[0.06313829278191...|[0.43518321759857...| 0.0| soyo2|
|[6.3,2.7,4.9,1.8]|soyo3| 2.0|[6.3,2.7,4.9,1.8]|[0.06313829278191...|[0.44055947195014...| 0.0| soyo2|
|[6.3,2.9,5.6,1.8]|soyo3| 2.0|[6.3,2.9,5.6,1.8]|[0.06313829278191...|[0.44715759200377...| 0.0| soyo2|
|[6.3,3.4,5.6,2.4]|soyo3| 2.0|[6.3,3.4,5.6,2.4]|[0.06313829278191...|[0.45196576310313...| 0.0| soyo2|
|[6.4,2.8,5.6,2.1]|soyo3| 2.0|[6.4,2.8,5.6,2.1]|[0.06313829278191...|[0.46017875340546...| 0.0| soyo2|
|[6.4,2.8,5.6,2.2]|soyo3| 2.0|[6.4,2.8,5.6,2.2]|[0.06313829278191...|[0.46321910727428...| 0.0| soyo2|
|[6.4,3.1,5.5,1.8]|soyo3| 2.0|[6.4,3.1,5.5,1.8]|[0.06313829278191...|[0.43862320280893...| 0.0| soyo2|
|[6.4,3.2,4.5,1.5]|soyo2| 0.0|[6.4,3.2,4.5,1.5]|[0.06313829278191...|[0.40056786531830...| 0.0| soyo2|
|[6.5,3.0,5.5,1.8]|soyo3| 2.0|[6.5,3.0,5.5,1.8]|[0.06313829278191...|[0.44199581778961...| 0.0| soyo2|
|[6.6,2.9,4.6,1.3]|soyo2| 0.0|[6.6,2.9,4.6,1.3]|[0.06313829278191...|[0.40579282648595...| 0.0| soyo2|
|[6.7,2.5,5.8,1.8]|soyo3| 2.0|[6.7,2.5,5.8,1.8]|[0.06313829278191...|[0.46287803722998...| 0.0| soyo2|
|[6.7,3.0,5.2,2.3]|soyo3| 2.0|[6.7,3.0,5.2,2.3]|[0.06313829278191...|[0.45387841693477...| 0.0| soyo2|
|[6.7,3.1,4.7,1.5]|soyo2| 0.0|[6.7,3.1,4.7,1.5]|[0.06313829278191...|[0.40924150360290...| 0.0| soyo2|
|[6.7,3.3,5.7,2.5]|soyo3| 2.0|[6.7,3.3,5.7,2.5]|[0.06313829278191...|[0.45972648058424...| 0.0| soyo2|
|[6.8,3.0,5.5,2.1]|soyo3| 2.0|[6.8,3.0,5.5,2.1]|[0.06313829278191...|[0.45251276088924...| 0.0| soyo2|
|[6.8,3.2,5.9,2.3]|soyo3| 2.0|[6.8,3.2,5.9,2.3]|[0.06313829278191...|[0.45975331380088...| 0.0| soyo2|
|[6.9,3.2,5.7,2.3]|soyo3| 2.0|[6.9,3.2,5.7,2.3]|[0.06313829278191...|[0.45642868507279...| 0.0| soyo2|
|[7.2,3.0,5.8,1.6]|soyo3| 2.0|[7.2,3.0,5.8,1.6]|[0.06313829278191...|[0.44031726493318...| 0.0| soyo2|
|[7.2,3.2,6.0,1.8]|soyo3| 2.0|[7.2,3.2,6.0,1.8]|[0.06313829278191...|[0.44483171938259...| 0.0| soyo2|
|[7.6,3.0,6.6,2.1]|soyo3| 2.0|[7.6,3.0,6.6,2.1]|[0.06313829278191...|[0.47047723863543...| 0.0| soyo2|
|[7.7,3.0,6.1,2.3]|soyo3| 2.0|[7.7,3.0,6.1,2.3]|[0.06313829278191...|[0.46845272424381...| 0.0| soyo2|
|[7.7,3.8,6.7,2.2]|soyo3| 2.0|[7.7,3.8,6.7,2.2]|[0.06313829278191...|[0.45233124776236...| 0.0| soyo2|
+-----------------+-----+------------+-----------------+--------------------+--------------------+----------+---------------+
准确率为: 0.36458333333333337
错误率为: 0.6354166666666666
二项逻辑回归模型系数矩阵: 3 x 4 CSCMatrix
(1,1) 0.35559564188466614
(1,2) -0.203185158868005
(1,3) -0.43876460704959996
(2,3) 0.0283914830858408
二项逻辑回归模型的截距向量: [0.06313829278191783,0.1708622138778958,-0.23400050665981365]
类的数量(标签可以使用的值): 3
模型所接受的特征的数量: 4
false
Spark 多项式逻辑回归__多分类的更多相关文章
- Spark 多项式逻辑回归__二分类
package Spark_MLlib import org.apache.spark.ml.Pipeline import org.apache.spark.ml.classification.{L ...
- Spark 二项逻辑回归__二分类
package Spark_MLlib import org.apache.spark.ml.Pipeline import org.apache.spark.ml.classification.{B ...
- stanford coursera 机器学习编程作业 exercise 3(逻辑回归实现多分类问题)
本作业使用逻辑回归(logistic regression)和神经网络(neural networks)识别手写的阿拉伯数字(0-9) 关于逻辑回归的一个编程练习,可参考:http://www.cnb ...
- Spark Mllib逻辑回归算法分析
原创文章,转载请注明: 转载自http://www.cnblogs.com/tovin/p/3816289.html 本文以spark 1.0.0版本MLlib算法为准进行分析 一.代码结构 逻辑回归 ...
- Spark LogisticRegression 逻辑回归之建模
导入包 import org.apache.spark.sql.SparkSession import org.apache.spark.sql.Dataset import org.apache.s ...
- [Python]数据挖掘(1)、梯度下降求解逻辑回归——考核成绩分类
ps:本博客内容根据唐宇迪的的机器学习经典算法 学习视频复制总结而来 http://www.abcplus.com.cn/course/83/tasks 逻辑回归 问题描述:我们将建立一个逻辑回归模 ...
- Spark ML逻辑回归
import org.apache.log4j.{Level, Logger} import org.apache.spark.ml.classification.LogisticRegression ...
- Spark 机器学习------逻辑回归
package Spark_MLlib import javassist.bytecode.SignatureAttribute.ArrayType import org.apache.spark.s ...
- scikit-learn机器学习(二)逻辑回归进行二分类(垃圾邮件分类),二分类性能指标,画ROC曲线,计算acc,recall,presicion,f1
数据来自UCI机器学习仓库中的垃圾信息数据集 数据可从http://archive.ics.uci.edu/ml/datasets/sms+spam+collection下载 转成csv载入数据 im ...
随机推荐
- Python接口测试中通过登录接口获取实时token
1.封装login_token 2.headers:对应登录请求头部信息 3.request_param:登录的参数数据 4.json.dumps:将一个Python数据结构转换为JSON 5.dic ...
- 我们参与投资36Kr股权众筹项目“易途8”的决策过程
背景 中文接机.中文送机.中文包车. 当地玩乐 最大的竞争对手:皇包车,15年9月A轮 其它对手:唐人接等,订单量无法和 皇包车.易途8比. 看好理由 1.旅游行业和境外自由行,是 ...
- 开发调式时生成dump文件
开发调式时,对程序生成dump文件:1:需要生成的时机,加Thread.sleep(600*1000).2:打开jvisualvm找到该程序进程号.3:jmap.
- PS学习笔记(05)
PS学习笔记(09) [2]马赛克背景 找一张图片.然后新建图层,让前景色背景色恢复到默认的状态(黑.白) 在新建图层上填充黑色-->滤镜-->渲染->云彩 像素化-->马赛克 ...
- 动态创建div(鼠标放上显示二维码)
最近的微信大行其道.各个网站上都给出的微信验证码,进行手机扫描加入. 怎么创建类似与点击鼠标弹出一个浮动的div显示二维码的这种效果. 1.首先制作好这样的图片,写css样式 <style ty ...
- idea 修改Git密码和账号方法
IDEA修改git账号及密码的方法: 1.file->settings->passwords 2.重启IDEA 3.执行一次提交或更新 当执行提交或更新之后,idea会自动提示输入账号.密 ...
- Spring框架中 配置c3p0连接池
开发准备: 1.导入jar包: ioc基本jar jdbcTemplate基本jar c3p0基本jar 别忘了mysql数据库驱动jar 原始程序代码:不使用配置文件方式(IOC)生成访问数据库对象 ...
- [BZOJ3196] [Tyvj1730] 二逼平衡树(线段树 套 Splay)
传送门 至少BZOJ过了,其他的直接弃. 您需要写一种数据结构(可参考题目标题),来维护一个有序数列,其中需要提供以下操作: 1.查询k在区间内的排名 2.查询区间内排名为k的值 3.修改某一位值上的 ...
- noip模拟赛 斐波那契
分析:暴力分有90,真良心啊. a,b这么大,连图都建不出来,肯定是有一个规律.把每个点的父节点写出来:0 1 1 12 123 12345 12345678,可以发现每一个循环的长度刚好是斐波那契数 ...
- 【错误解决】 java.lang.ClassNotFoundException: org.apache.jsp.WEB_002dINF.classes.views.index_jsp
转载请注明出处:http://blog.csdn.net/qq_26525215 本文源自[大学之旅_谙忆的博客] 今天建立Spring MVC骨架的时候,突然遇到这么一个问题~~ HTTP Stat ...