spark机器学习------逻辑回归

soyosuyang soyosuyang     2022-09-24     450

关键词:

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.ml.classification.LogisticRegression
  */
object 逻辑回归 {
      val spark=SparkSession.builder().master("local[2]").appName("逻辑回归").getOrCreate()
      import spark.implicits._
  def main(args: Array[String]): Unit = {
      val training = spark.createDataFrame(Seq((0,"soyo spark soyo1",1.0),(1,"hadoop spark",1.0),(2,"zhouhang xiaohai",0.0),(3,"hbase spark hive soyo",1.0))).
        toDF("id","text","label")

      //转换器
       val tokenizer=new Tokenizer().setInputCol("text").setOutputCol("words")
       val hashingTF=new HashingTF().setNumFeatures(1000).setInputCol(tokenizer.getOutputCol).setOutputCol("features")
       //评估器
       val lr= new LogisticRegression().setMaxIter(10). //设置最大迭代次数
         setRegParam(0.01) // 设置正则化参数
       val pipeline= new Pipeline().setStages(Array(tokenizer,hashingTF,lr))
       //训练出的模型
       val model=pipeline.fit(training)
       //测试数据
       val test= spark.createDataFrame(Seq((4,"spark i like"),(5,"hadoop spark book"),(6,"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,[email protected],true)
StructField(rawPrediction,[email protected],true)
StructField(probability,[email protected],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机器学习库-07-回归算法原理

  1)机器学习模型理解统计学习,神经网络2)预测结果的衡量代价函数(costfunction)、损失函数(loss function) 3)线性回归是监督学习  查看详情

掌握spark机器学习库-07-回归分析概述

1)回归与分类算法的区别回归的预测结果是连续的,分类的预测结果是离散的。2)spark实现的回归算法有:   3)通过相关系数衡量线性关系的程度 查看详情

机器学习:逻辑回归

...*****注:本系列博客是博主学习Stanford大学AndrewNg教授的《机器学习》课程笔记。博主深感学过课程后,不进行总结非常easy遗忘,依据课程加上自己对不明确问题的补充遂有此系列博客。本系列博客包含线性回归、逻辑回归、神... 查看详情

机器学习逻辑回归介绍

...辑回归的应用场景逻辑回归(LogisticRegression)是机器学习中的一种分类模型,逻辑回归是一种分类算法,虽然名字中带有回归。由于算法的简单和高效,在实际中应用非常广泛。广告点击率是否为垃圾邮件是... 查看详情

机器学习——逻辑回归(logisticregression)

1前言  虽然该机器学习算法名字里面有“回归”,但是它其实是个分类算法。取名逻辑回归主要是因为是从线性回归转变而来的。  logistic回归,又叫对数几率回归。2logistic回归和线性回归的关系2.1线性回归模型  首先给... 查看详情

机器学习逻辑回归(logisticregression)

...了个大概,剩下的细节只能自己继续摸索。从本质上讲:机器学习就是一个模型对外界的刺激(训练样本)做出反应,趋利避害(评价标准)。 1.什么是逻辑回归?许多人对线性回归都比较熟悉,但知道逻辑回归的人可能就... 查看详情

[机器学习]--逻辑回归总结

逻辑回归是一个分类算法,它可以处理二元分类以及多元分类。虽然它名字里面有“回归”两个字,却不是一个回归算法。那为什么有“回归”这个误导性的词呢?个人认为,虽然逻辑回归是分类模型,但是它的原... 查看详情

andrewng机器学习:逻辑回归

1.逻辑回归解决什么问题?逻辑回归用于分类问题。对于二分类问题,输入多个特征,输出为是或不是(也可以写作1或0)。逻辑回归就是这样一个用于分类的模型。2.什么是逻辑回归?逻辑回归建立在线性回归的基础上。首先,... 查看详情

机器学习100天(十七):017逻辑回归梯度下降

机器学习100天,今天讲的是:逻辑回归-梯度下降!在讲解了逻辑回归的基本原理和损失函数之后,我们来推导逻辑回归模型中参数w和b的梯度表达式。我们之前介绍过,计算逻辑回归的代价函数实际上包含了下面三个过程:Z=WTX+... 查看详情

机器学习100天(十七):017逻辑回归梯度下降

机器学习100天,今天讲的是:逻辑回归-梯度下降!在讲解了逻辑回归的基本原理和损失函数之后,我们来推导逻辑回归模型中参数w和b的梯度表达式。我们之前介绍过,计算逻辑回归的代价函数实际上包含了下面三个过程:Z=WTX+... 查看详情

机器学习算法---逻辑回归及梯度下降

一、逻辑回归简介  logistic回归又称logistic回归分析,是一种广义的线性回归分析模型,常用于数据挖掘,疾病自动诊断,经济预测等领域。  logistic回归是一种广义线性回归(generalizedlinearmodel),因此与多重线性回归分析... 查看详情

机器学习笔记逻辑回归

一、逻辑回归问题二分类的问题为是否的问题,由算出的分数值,经过sign函数输出的是(+1,-1),想要输出的结果为一个几率值,则需要改变函数模型,其中,,则逻辑回归的函数为二、逻辑回归错误评价线性分类和线性回归... 查看详情

逻辑回归|机器学习|分类算法(代码片段)

目录1.逻辑回归1.1逻辑回归原理1.2sigmoid函数2.相关代码2.1LogisticsRegression类2.2求解代码2.3输出结果3.直接调库使用1.逻辑回归1.1逻辑回归原理∙\\bullet∙逻辑回归又叫对数几率回归,是一种对数几率模型,可以求解二分类问... 查看详情

掌握spark机器学习库-07-线性回归算法概述

1)简介自变量,因变量,线性关系,相关系数,一元线性关系,多元线性关系(平面,超平面)2)使用线性回归算法的前提3)应用例子沸点与气压浮力与表面积  查看详情

机器学习——线性回归分类与逻辑回归

http://antkillerfarm.github.io/序这是根据AndrewNg的《机器学习讲义》,编写的系列blog。http://www.cnblogs.com/jerrylead/archive/2012/05/08/2489725.html这是网友jerrylead翻译整理的版本,也是本文的一个重要的参考。http://www.tcse.cn/~xulijie/这是jerrylea 查看详情

机器学习100天(十六):016逻辑回归损失函数

机器学习100天,今天讲的是:逻辑回归损失函数。一、如何找到最佳分类直线讲完了逻辑回归基本原理之后,我们再来思考一个非常关键的问题:就是如何找到最佳的分类直线呢?如图中所示,如何判断这三条直线哪个更好?线... 查看详情

机器学习100天(十六):016逻辑回归损失函数

机器学习100天,今天讲的是:逻辑回归损失函数。一、如何找到最佳分类直线讲完了逻辑回归基本原理之后,我们再来思考一个非常关键的问题:就是如何找到最佳的分类直线呢?如图中所示,如何判断这三条直线哪个更好?线... 查看详情

机器学习逻辑回归算法(代码片段)

逻辑回归算法学习目标1.逻辑回归的介绍1.1逻辑回归的应用场景1.2逻辑回归的原理1.2.1输入1.2.2激活函数1.3损失以及优化1.3.1损失1.3.2优化1.4小结2.逻辑回归api介绍3.案例:癌症分类预测-良/恶性乳腺癌肿瘤预测3.1背景介绍3.... 查看详情