当前位置:   article > 正文

Sparkmllib scala逻辑回归

scala逻辑回归

logistic回归又称logistic回归分析,是一种广义的线性回归分析模型,常用于数据挖掘,疾病自动诊断,经济预测等领域。例如,探讨引发疾病的危险因素,并根据危险因素预测疾病发生的概率等。以胃癌病情分析为例,选择两组人群,一组是胃癌组,一组是非胃癌组,两组人群必定具有不同的体征与生活方式等。因此因变量就为是否胃癌,值为“是”或“否”,自变量就可以包括很多了,如年龄、性别、饮食习惯、幽门螺杆菌感染等。自变量既可以是连续的,也可以是分类的。然后通过logistic回归分析,可以得到自变量的权重,从而可以大致了解到底哪些因素是胃癌的危险因素。同时根据该权值可以根据危险因素预测一个人患癌症的可能性。

 

数据源准备:

  1. position;square;price;direction;type;name;
  2. 0;190;20000;0;422卫;中信城(别墅);
  3. 0;190;20000;0;422卫;中信城(别墅);
  4. 5;400;15000;0;433卫;融创上城;
  5. 0;500;15000;0;532卫;中海莱茵东郡;
  6. 5;500;15000;0;534卫;融创上城(别墅);
  7. 1;320;15000;1;111卫;长江花园;
  8. 0;143;12000;0;322卫;融创上城;
  9. 0;200;10000;0;432卫;中海莱茵东郡(别墅);
  10. 0;207;9000;0;434卫;中海莱茵东郡;
  11. 0;130;8500;0;322卫;伟峰东第;
  12. 5;150;7000;0;322卫;融创上城;
  13. 2;178;6000;0;422卫;鸿城国际花园;
  14. 5;190;6000;0;322卫;亚泰豪苑C栋;
  15. 1;150;6000;0;512卫;通安新居A区;
  16. 2;165;6000;0;322卫;万科惠斯勒小镇;
  17. 0;64;5500;0;111卫;保利中央公园;
  18. 2;105;5500;0;221卫;虹馆;
  19. 1;160;5300;0;321卫;昊源高格蓝湾;
  20. 2;170;5100;0;422卫;亚泰鼎盛国际;
  21. 0;155;5000;0;322卫;中海水岸馨都;
  22. 5;128;5000;0;421卫;长影世纪村;
  23. 0;145;4500;0;322卫;富奥临河湾;
  24. 2;92;4200;0;321卫;御翠豪庭尚府一期;
  25. 0;75;4100;0;111卫;恒大雅苑;
  26. 5;105;4000;0;211卫;南湖名家;
  27. 2;93;4000;0;321卫;御翠豪庭尚府一期;
  28. 5;121;4000;0;311卫;万达广场;
  29. 0;104;4000;0;211卫;棠棣;
  30. 1;135;4000;0;322卫;万科蓝山;
  31. 5;98;4000;0;221卫;华亿红府;
  32. 0;128;3800;0;321卫;复地哥德堡森林;
  33. 2;154;3700;0;322卫;长春明珠;
  34. 0;100;3700;0;221卫;翡翠花溪;
  35. 4;66;3700;0;111卫;长客厂南;
  36. 2;106;3600;0;221卫;虹馆;
  37. 5;132;3500;0;321卫;大禹城邦;
  38. 1;135;3500;0;321卫;昊源高格蓝湾;
  39. 0;130;3500;0;321卫;中海国际社区(AJ区);
  40. 2;70;3500;0;211卫;中信御园;
  41. 0;145;3500;0;322卫;万盛东城;
  42. 5;132;3500;0;322卫;大禹城邦;
  43. 5;100;3300;0;221卫;国信南湖公馆;
  44. 5;75;3200;0;111卫;南湖祥水湾;
  45. 0;120;3200;0;332卫;复地哥德堡森林;
  46. 2;95;3200;0;321卫;万科金域长春;
  47. 0;106;3200;0;221卫;富腾天下城;
  48. 5;118;3200;0;322卫;融创上城(别墅);
  49. 1;130;3200;0;321卫;万龙名城;
  50. 0;137;3200;0;322卫;中海国际社区(AJ区);

 

Demo:

  1. import org.apache.spark.SparkConf
  2. import org.apache.spark.ml.classification.LogisticRegression
  3. import org.apache.spark.ml.feature.VectorAssembler
  4. import org.apache.spark.sql.SparkSession
  5. /**
  6. * 逻辑回归
  7. */
  8. object logic {
  9. def main(args: Array[String]): Unit = {
  10. val conf = new SparkConf().setMaster("local[*]").setAppName("logic")
  11. val spark = SparkSession.builder().config(conf).getOrCreate()
  12. val file = spark.read.format("csv").option("sep", ";").option("header", "true").load("house.csv")
  13. import spark.implicits._
  14. val random = new util.Random()
  15. // 加载训练数据
  16. val data = file.select("square", "price").map(rows => (rows.getAs[String](0).toDouble, rows.getString(1)
  17. .toDouble, random.nextDouble())).toDF("square", "price", "random")
  18. .sort("random")
  19. val assembler = new VectorAssembler()
  20. .setInputCols(Array("square"))
  21. .setOutputCol("features")
  22. val frame = assembler.transform(data)
  23. //把数据集拆分2个部分 training (80%) and test (20%).
  24. val Array(train, test) = frame.randomSplit(Array(0.8, 0.2))
  25. //创建逻辑回归
  26. val lr = new LogisticRegression().setLabelCol("price").setFeaturesCol("features")
  27. .setRegParam(0.3)
  28. .setElasticNetParam(0.8)
  29. .setMaxIter(10)
  30. val model = lr.fit(train)
  31. model.transform(test).show(50,truncate = true)
  32. val iterations = model.summary.totalIterations
  33. println(s"iter:${iterations}")
  34. spark.stop()
  35. }
  36. }

 

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小桥流水78/article/detail/737130
推荐阅读
相关标签
  

闽ICP备14008679号