一、逻辑斯蒂回归分类器
逻辑斯蒂回归(logistic regression)是统计学习中的经典分类方法,属于对数线性模型。logistic回归的因变量可以是二分类的,也可以是多分类的。
任务描述:以iris数据集(iris)为例进行分析(iris下载地址:http://dblab.xmu.edu.cn/blog/wp-content/uploads/2017/03/iris.txt)
iris以鸢尾花的特征作为数据来源,数据集包含150个数据集,分为3类,每类50个数据,每个数据包含4个属性,是在数据挖掘、数据分类中非常常用的测试集、训练集。为了便于理解,这里主要用后两个属性(花瓣的长度和宽度)来进行分类。
1、用二项逻辑斯蒂回归来解决二分类问题
首先我们先取其中的后两类数据,用二项逻辑斯蒂回归进行二分类分析
(1)导入需要的包
import org.apache.spark.sql.Row
import org.apache.spark.sql.SparkSession
import org.apache.spark.ml.linalg.{Vector,Vectors}
import org.apache.spark.ml.evaluation.MulticlassClassificationEvaluator
import org.apache.spark.ml.{Pipeline,PipelineModel}
import org.apache.spark.ml.feature.{IndexToString, StringIndexer, VectorIndexer,HashingTF, Tokenizer}
import org.apache.spark.ml.classification.LogisticRegression
import org.apache.spark.ml.classification.LogisticRegressionModel
import org.apache.spark.ml.classification.{BinaryLogisticRegressionSummary, LogisticRegression}
import org.apache.spark.sql.functions;
(2)读取数据,简要分析
import spark.implicits._
case class Iris(features: org.apache.spark.ml.linalg.Vector, label: String)
val data = spark.sparkContext.
textFile("file:///home/GHL/software/spark/data/mllib/iris.txt").
map(_.split(",")).
map(p => Iris(| Vectors.dense(p(0).toDouble,p(1).toDouble,p(2).toDouble,p(3).toDouble,p(4).toString()))).toDF()
data.show()
因为我们现在处理的是2分类问题,所以我们不需要全部的3类数据,我们要从中选出两类的数据
首先把刚刚得到的数据注册成一个表iris,注册成这个表之后,我们就可以通过sql