回归分析是数据挖掘中的一种重要方法,是对具有因果关系的影响因素(自变量)和预测对象(因变量)所进行的数理统计分析处理,旨在确定两种或两种以上变量间相互依赖的定量关系,主要用于预测、分类和因素分析。回归分析的基本原理是找到反映输入变量和输出变量间关系的回归方程,利用回归方程完成预测、分类和因素分析的任务。
逻辑回归(Logistic Regression)是回归分析的一种,主要用来做分类,适用于二分类问题,可以推广到多分类问题。
import org.apache.spark.mllib.classification.{LogisticRegressionWithLBFGS, LogisticRegressionWithSGD}
import org.apache.spark.mllib.linalg.Vectors
import org.apache.spark.mllib.regression.LabeledPoint
import org.apache.spark.{SparkConf, SparkContext}
/**
* Created by changyaobin.
*/
object LogicRegressTest {
def main(args: Array[String]): Unit = {
val conf = new SparkConf().setMaster("local[2]").setAppName("LogisticRegression") //设置环境变变量
val sc = new SparkContext(conf)
val data=sc.textFile("f://physicalCheck.csv").map(lines=>{
val fields=lines.split(",")
val lable=fields(fields.length-1).toDouble
val features=fields.slice(1,fields.length-1).map(x=>x.toDouble)
LabeledPoint(lable,Vectors.dense(features))
})
val lable=data.map(_.label)
val model = new LogisticRegressionWithLBFGS()
.setNumClasses(9)
.run(data)
val predictionAndLabels =data.map { case LabeledPoint(label, features) =>
val prediction = model.predict(features)
(prediction)
}
predictionAndLabels.foreach(x=> println(x))
val acc=lable.zip(predictionAndLabels).filter(x=>{
x._1.equals(x._2)
}).count()/lable.count().toDouble
println("LR预测患者在医院花费的准确率是")
println(acc)
}
}