Spark 机器学习------逻辑回归
package Spark_MLlib
import javassist.bytecode.SignatureAttribute.ArrayType import org.apache.spark.sql.SparkSession
import org.apache.spark.ml.{Pipeline, PipelineModel}
import org.apache.spark.ml.classification.LogisticRegression
import org.apache.spark.ml.feature.{HashingTF, Tokenizer}
import org.apache.spark.ml.linalg.Vector
import org.apache.spark.sql.Row /**
* Spark逻辑回归的库
* http://spark.apache.org/docs/latest/api/scala/index.html#org.apache.spark.package
*/
object 逻辑回归 {
val spark=SparkSession.builder().master("local[2]").appName("逻辑回归").getOrCreate()
import spark.implicits._
def main(args: Array[String]): Unit = {
val training = spark.createDataFrame(Seq((,"soyo spark soyo1",1.0),(,"hadoop spark",1.0),(,"zhouhang xiaohai",0.0),(,"hbase spark hive soyo",1.0))).
toDF("id","text","label") //转换器
val tokenizer=new Tokenizer().setInputCol("text").setOutputCol("words")
val hashingTF=new HashingTF().setNumFeatures().setInputCol(tokenizer.getOutputCol).setOutputCol("features")
//评估器
val lr= new LogisticRegression().setMaxIter(). //设置最大迭代次数
setRegParam(0.01) // 设置正则化参数
val pipeline= new Pipeline().setStages(Array(tokenizer,hashingTF,lr))
//训练出的模型
val model=pipeline.fit(training)
//测试数据
val test= spark.createDataFrame(Seq((,"spark i like"),(,"hadoop spark book"),(,"soyo9 soy 88"))).toDF("id","text")
test.show()
// test.createOrReplaceTempView("soyo")
// spark.sql("").show()
model.transform(test).schema.foreach(println)
model.transform(test)
.select("id","text","probability","prediction")
.collect()
.foreach { case Row(id: Int, text: String, prob: Vector, prediction: Double) =>
println(s"($id,$text)----->prob=$prob,prediction=$prediction")
}
//转换器生成的一些中间数据
model.transform(test).select("id","text","features","rawPrediction")
.collect()
.foreach{
case Row(id:Int,text:String,features:Vector,rawPrediction:Vector)=>
println(s"id=$id,text=$text,features=$features,rawPrediction=$rawPrediction")
} spark.stop()
}
}
结果:
+---+-----------------+
| id| text|
+---+-----------------+
| 4| spark i like|
| 5|hadoop spark book|
| 6| soyo9 soy 88|
+---+-----------------+
StructField(id,IntegerType,false)
StructField(text,StringType,true)
StructField(words,ArrayType(StringType,true),true)
StructField(features,org.apache.spark.ml.linalg.VectorUDT@3bfc3ba7,true)
StructField(rawPrediction,org.apache.spark.ml.linalg.VectorUDT@3bfc3ba7,true)
StructField(probability,org.apache.spark.ml.linalg.VectorUDT@3bfc3ba7,true)
StructField(prediction,DoubleType,true)
(4,spark i like)----->prob=[0.033501882964501836,0.9664981170354981],prediction=1.0 准确率
(5,hadoop spark book)----->prob=[0.011175823696937707,0.9888241763030623],prediction=1.0 准确率
(6,soyo9 soy 88)----->prob=[0.26222944363302514,0.7377705563669748],prediction=1.0 准确率(误判了)但值较低
id=4,text=spark i like,features=(1000,[105,329,330],[1.0,1.0,1.0]),rawPrediction=[-3.3620777052692805,3.3620777052692805]
id=5,text=hadoop spark book,features=(1000,[105,181,393],[1.0,1.0,1.0]),rawPrediction=[-4.482763689867715,4.482763689867715]
id=6,text=soyo9 soy 88,features=(1000,[543,602,976],[1.0,1.0,1.0]),rawPrediction=[-1.0344130174468225,1.0344130174468225]
Spark 机器学习------逻辑回归的更多相关文章
- 机器学习---逻辑回归(二)(Machine Learning Logistic Regression II)
在<机器学习---逻辑回归(一)(Machine Learning Logistic Regression I)>一文中,我们讨论了如何用逻辑回归解决二分类问题以及逻辑回归算法的本质.现在 ...
- Spark Mllib逻辑回归算法分析
原创文章,转载请注明: 转载自http://www.cnblogs.com/tovin/p/3816289.html 本文以spark 1.0.0版本MLlib算法为准进行分析 一.代码结构 逻辑回归 ...
- Spark ML逻辑回归
import org.apache.log4j.{Level, Logger} import org.apache.spark.ml.classification.LogisticRegression ...
- Spark LogisticRegression 逻辑回归之建模
导入包 import org.apache.spark.sql.SparkSession import org.apache.spark.sql.Dataset import org.apache.s ...
- Spark机器学习5·回归模型(pyspark)
分类模型的预测目标是:类别编号 回归模型的预测目标是:实数变量 回归模型种类 线性模型 最小二乘回归模型 应用L2正则化时--岭回归(ridge regression) 应用L1正则化时--LASSO ...
- 机器学习/逻辑回归(logistic regression)/--附python代码
个人分类: 机器学习 本文为吴恩达<机器学习>课程的读书笔记,并用python实现. 前一篇讲了线性回归,这一篇讲逻辑回归,有了上一篇的基础,这一篇的内容会显得比较简单. 逻辑回归(log ...
- Spark 多项式逻辑回归__多分类
package Spark_MLlib import org.apache.spark.ml.Pipeline import org.apache.spark.ml.classification.{B ...
- Spark 多项式逻辑回归__二分类
package Spark_MLlib import org.apache.spark.ml.Pipeline import org.apache.spark.ml.classification.{L ...
- 机器学习---逻辑回归(一)(Machine Learning Logistic Regression I)
逻辑回归(Logistic Regression)是一种经典的线性分类算法.逻辑回归虽然叫回归,但是其模型是用来分类的. 让我们先从最简单的二分类问题开始.给定特征向量x=([x1,x2,...,xn ...
随机推荐
- eBPF监控工具bcc系列五工具funccount
eBPF监控工具bcc系列五工具funccount funccount函数可以通过匹配来跟踪函数,tracepoints 或USDT探针.例如所有以vfs_ 开头的内核函数. ./funccount ...
- h5页面长按保存图片
由于之前几乎没有使用过canvas:今天遇到了一个很棘手的问题.canvas生成后,然后长按保存到手机. 正常的流程应该是先用canvas进行画图,然后再把canvas转成地址,最后再把转化的地址给i ...
- 【2018百度之星初赛(A)】1002 度度熊学队列
题目地址:http://acm.hdu.edu.cn/showproblem.php?pid=6375 Knowledge Point: STL - map:https://www.cnblogs.c ...
- 记VS2008安装及使用及卸载的艰辛历程!!!(2018/11/6-2018/11/14)
此文为了纪念我对VS2008“孜孜不倦的”无数次的安装及卸载,以及解决使用过程中出现的问题所花费的人力物力和财力!成功之后再作补充.
- java 十五周总结
- Jmeter BeanShell PreProcessor使用笔记
打印log log.info("content:" + content); 将字符串转化为JsonString import com.alibaba.fastjson.JSON; ...
- IDLE in Python (Ubuntu)
To lauch IDLE in the Current Woking Directory >>> usr/bin/idle3 Alt + n # next command Alt ...
- open random
open文件操作 f = open('文件路径',mode='rwab+',encoding='utf-8') # content = f.read(3) # 读出来的都是字符 # f.seek(3) ...
- linux下的进程
一.进程的基础: 1.程序:程序是一些保存在磁盘上的指令的有序集合: 2.进程:进程是程序的一次执行过程: 3.进程与程序的关系:①.程序是静态的,进程是动态的: ②.一个程序可以对应多个进程: ...
- 51nod1429 巧克力
[题解] 找一下两个面积s1,s2的2和3的因子数,把他们除掉,如果s1,s2不相等,就是-1,否则可以用s1,s2的2和3的因子数计算答案. #include<cstdio> #incl ...