赞
踩
logistic回归又称logistic回归分析,是一种广义的线性回归分析模型,常用于数据挖掘,疾病自动诊断,经济预测等领域。例如,探讨引发疾病的危险因素,并根据危险因素预测疾病发生的概率等。以胃癌病情分析为例,选择两组人群,一组是胃癌组,一组是非胃癌组,两组人群必定具有不同的体征与生活方式等。因此因变量就为是否胃癌,值为“是”或“否”,自变量就可以包括很多了,如年龄、性别、饮食习惯、幽门螺杆菌感染等。自变量既可以是连续的,也可以是分类的。然后通过logistic回归分析,可以得到自变量的权重,从而可以大致了解到底哪些因素是胃癌的危险因素。同时根据该权值可以根据危险因素预测一个人患癌症的可能性。
数据源准备:
- position;square;price;direction;type;name;
- 0;190;20000;0;4室2厅2卫;中信城(别墅);
- 0;190;20000;0;4室2厅2卫;中信城(别墅);
- 5;400;15000;0;4室3厅3卫;融创上城;
- 0;500;15000;0;5室3厅2卫;中海莱茵东郡;
- 5;500;15000;0;5室3厅4卫;融创上城(别墅);
- 1;320;15000;1;1室1厅1卫;长江花园;
- 0;143;12000;0;3室2厅2卫;融创上城;
- 0;200;10000;0;4室3厅2卫;中海莱茵东郡(别墅);
- 0;207;9000;0;4室3厅4卫;中海莱茵东郡;
- 0;130;8500;0;3室2厅2卫;伟峰东第;
- 5;150;7000;0;3室2厅2卫;融创上城;
- 2;178;6000;0;4室2厅2卫;鸿城国际花园;
- 5;190;6000;0;3室2厅2卫;亚泰豪苑C栋;
- 1;150;6000;0;5室1厅2卫;通安新居A区;
- 2;165;6000;0;3室2厅2卫;万科惠斯勒小镇;
- 0;64;5500;0;1室1厅1卫;保利中央公园;
- 2;105;5500;0;2室2厅1卫;虹馆;
- 1;160;5300;0;3室2厅1卫;昊源高格蓝湾;
- 2;170;5100;0;4室2厅2卫;亚泰鼎盛国际;
- 0;155;5000;0;3室2厅2卫;中海水岸馨都;
- 5;128;5000;0;4室2厅1卫;长影世纪村;
- 0;145;4500;0;3室2厅2卫;富奥临河湾;
- 2;92;4200;0;3室2厅1卫;御翠豪庭尚府一期;
- 0;75;4100;0;1室1厅1卫;恒大雅苑;
- 5;105;4000;0;2室1厅1卫;南湖名家;
- 2;93;4000;0;3室2厅1卫;御翠豪庭尚府一期;
- 5;121;4000;0;3室1厅1卫;万达广场;
- 0;104;4000;0;2室1厅1卫;棠棣;
- 1;135;4000;0;3室2厅2卫;万科蓝山;
- 5;98;4000;0;2室2厅1卫;华亿红府;
- 0;128;3800;0;3室2厅1卫;复地哥德堡森林;
- 2;154;3700;0;3室2厅2卫;长春明珠;
- 0;100;3700;0;2室2厅1卫;翡翠花溪;
- 4;66;3700;0;1室1厅1卫;长客厂南;
- 2;106;3600;0;2室2厅1卫;虹馆;
- 5;132;3500;0;3室2厅1卫;大禹城邦;
- 1;135;3500;0;3室2厅1卫;昊源高格蓝湾;
- 0;130;3500;0;3室2厅1卫;中海国际社区(AJ区);
- 2;70;3500;0;2室1厅1卫;中信御园;
- 0;145;3500;0;3室2厅2卫;万盛东城;
- 5;132;3500;0;3室2厅2卫;大禹城邦;
- 5;100;3300;0;2室2厅1卫;国信南湖公馆;
- 5;75;3200;0;1室1厅1卫;南湖祥水湾;
- 0;120;3200;0;3室3厅2卫;复地哥德堡森林;
- 2;95;3200;0;3室2厅1卫;万科金域长春;
- 0;106;3200;0;2室2厅1卫;富腾天下城;
- 5;118;3200;0;3室2厅2卫;融创上城(别墅);
- 1;130;3200;0;3室2厅1卫;万龙名城;
- 0;137;3200;0;3室2厅2卫;中海国际社区(AJ区);

Demo:
- import org.apache.spark.SparkConf
- import org.apache.spark.ml.classification.LogisticRegression
- import org.apache.spark.ml.feature.VectorAssembler
- import org.apache.spark.sql.SparkSession
-
- /**
- * 逻辑回归
- */
- object logic {
-
- def main(args: Array[String]): Unit = {
- val conf = new SparkConf().setMaster("local[*]").setAppName("logic")
- val spark = SparkSession.builder().config(conf).getOrCreate()
-
- val file = spark.read.format("csv").option("sep", ";").option("header", "true").load("house.csv")
-
- import spark.implicits._
- val random = new util.Random()
-
- // 加载训练数据
- val data = file.select("square", "price").map(rows => (rows.getAs[String](0).toDouble, rows.getString(1)
- .toDouble, random.nextDouble())).toDF("square", "price", "random")
- .sort("random")
-
- val assembler = new VectorAssembler()
- .setInputCols(Array("square"))
- .setOutputCol("features")
-
- val frame = assembler.transform(data)
-
- //把数据集拆分2个部分 training (80%) and test (20%).
- val Array(train, test) = frame.randomSplit(Array(0.8, 0.2))
-
- //创建逻辑回归
- val lr = new LogisticRegression().setLabelCol("price").setFeaturesCol("features")
- .setRegParam(0.3)
- .setElasticNetParam(0.8)
- .setMaxIter(10)
-
- val model = lr.fit(train)
- model.transform(test).show(50,truncate = true)
- val iterations = model.summary.totalIterations
- println(s"iter:${iterations}")
-
- spark.stop()
- }
- }

Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。