使用Spark MLlib的逻辑回归(LogisticRegression)进行用户分类预测识别
2017-05-18 11:33
423 查看
import org.apache.spark.SparkContext import org.apache.spark.SparkConf import org.apache.spark.mllib.classification.{LogisticRegressionWithLBFGS, LogisticRegressionWithSGD} import org.apache.spark.mllib.regression.LabeledPoint import org.apache.spark.mllib.linalg.Vectors import org.apache.spark.mllib.evaluation.BinaryClassificationMetrics import org.apache.spark.mllib.optimization._ /** * Created by simon on 2017/5/8. */ object genderClassificationWithLogisticRegression { def main(args: Array[String]): Unit = { val conf = new SparkConf() conf.setAppName("genderClassification").setMaster("local[2]") val sc = new SparkContext(conf) // 1.读取数据 val trainData = sc.textFile("file:\\E:\\test.csv") // 2.解析数据,构建数据集 val parsedTrainData = trainData.map { line => val parts= line.split("\\|") val label = toInt(parts(1)) //第二列是标签 val features = Vectors.dense(parts.slice(6,parts.length-1).map(_.toDouble)) //第7到最后一列是属性,需要转换为Doube类型 LabeledPoint(label, features) //构建LabelPoint格式,第一列是标签列,后面是属性向量 }.cache() // 3.将数据集随机分为两份,一份是训练集,一份是测试集 val splits = parsedTrainData.randomSplit(Array(0.7, 0.3), seed = 11L) val training = splits(0) val testing = splits(1) // 4.新建逻辑回归模型,并设置训练参数 // val model = new LogisticRegressionWithLBFGS().setNumClasses(2) // model.optimizer.setNumIterations(500).setUpdater(new SimpleUpdater()) //可以选择LogisticRegressionWithLBFGS,也可以选择LogisticRegressionWithSGD,LogisticRegressionWithLBFGS是优化方法 val model = new LogisticRegressionWithSGD() //建立模型 model.optimizer.setNumIterations(500).setUpdater(new SimpleUpdater()).setStepSize(0.001).setMiniBatchFraction(0.02) //模型参数 val trained = model.run(training) //使用训练集训练模型 // 5.测试样本进行预测 val prediction = trained.predict(testing.map(_.features)) //使用测试数据属性进行预测 val predictionAndLabels = prediction.zip(testing.map(_.label)) //获取预测标签 // 6.测量预测效果 val metrics = new BinaryClassificationMetrics(predictionAndLabels) // 7.看看AUROC结果 val auROC = metrics.areaUnderROC println("Area under ROC = " + auROC) } // 将标签转换为0和1 def toInt(s: String): Int = { if (s == "m") 1 else 0 } }
相关文章推荐
- 逻辑回归(Logistic Regression, LR)又称为逻辑回归分析,是分类和预测算法中的一种。通过历史数据的表现对未来结果发生的概率进行预测。例如,我们可以将购买的概率设置为因变量,将用户的
- 使用R进行逻辑回归 分类
- tensorflow 学习专栏(四):使用tensorflow在mnist数据集上使用逻辑回归logistic Regression进行分类
- 使用逻辑回归进行MNIST分类(Classifying MNIST using Logistic Regressing)
- 【大数据部落】R语言逻辑回归logistic regression对用户收入进行预测
- 机器学习逻辑回归:使用C++语言手工编写程序对a1a数据集进行Logistic分类
- spark 逻辑回归进行基于文本的分类预测
- Tensorflow案例分析(1)—— 使用逻辑回归进行泰坦尼克号预测
- spark mllib 分类预测之逻辑回归
- 使用MATLAB加载训练好的caffe模型进行识别分类
- R语言使用逻辑回归分类算法
- python爬虫爬取指定用户微博图片及内容,并进行微博分类及使用习惯分析,生成可视化图表
- 数据挖掘-oneR算法-Iris数据集分析-使用oneR算法进行分类预测(五)
- 使用逻辑回归对MNIST数字分类
- 数据挖掘-K-近邻分类器-Iris数据集分析-使用K-近邻分类器进行分类预测(四)
- 使用R完成逻辑斯蒂回归分类
- 使用Weka进行数据挖掘(Weka教程七)Weka分类/预测模型构建与评价
- 使用scikit-learn实现逻辑回归对牵牛花类别的预测
- 使用Logistic回归对MNIST手写字符进行分类识别
- 在Kaggle手写数字数据集上使用Spark MLlib的RandomForest进行手写数字识别