【问题标题】:Logistic Regression in Spark for predictive analysisSpark 中用于预测分析的逻辑回归
【发布时间】:2015-09-23 04:14:05
【问题描述】:

我是 Spark、大数据和 Scala 的初学者,我正在尝试使用示例数据集在 Spark 中构建预测模型。我想使用 pySpark,但目前用于 pyspark 的 mllib 有限制,因为它不能保存和加载。我有几个问题:

  1. 我的数据是 csv 格式,如下所示:

    Buy,Income,Is Female,Is Married,Has College,Is Professional,Is Retired,Unemployed,Residence Length,Dual Income,Minors,Own,House,White,English,Prev Child Mag,Prev Parent Mag
    0,24000,1,0,1,1,0,0,26,0,0,0,1,0,0,0,0
    1,75000,1,1,1,1,0,0,15,1,0,1,1,1,1,1,0
    

基本上,这些数据有助于根据所有给定参数预测用户是否购买这本杂志。

如何将这些数据转换为 Spark 易于解释的格式? (我在这里查看了关于将 csv 转换为 RDD 的其他相关答案并尝试过,但它让我比以前更加困惑)

  1. 如果我只是对这些数据运行 mllib 文档中给出的逻辑回归程序,其中一部分数据用于训练,另一部分用于测试,我如何将其转换为我有新用户的可演示格式程序会引导我了解所有参数,最后会给我一个“是”或“否”来判断这个新人是否会购买这本杂志。

    import org.apache.spark.mllib.regression.LabeledPoint
    import org.apache.spark.mllib.regression.LinearRegressionModel
    import org.apache.spark.mllib.regression.LinearRegressionWithSGD
    import org.apache.spark.mllib.linalg.Vectors
    
    // Load and parse the data
    val data = sc.textFile("data/mllib/ridge-data/lpsa.data")
    val parsedData = data.map { line =>
      val parts = line.split(',')
      LabeledPoint(parts(0).toDouble, Vectors.dense(parts(1).split(' ').map(_.toDouble)))
    }.cache()
    
    // Building the model
    val numIterations = 100
    val model = LinearRegressionWithSGD.train(parsedData, numIterations)
    
    // Evaluate model on training examples and compute training error
    val valuesAndPreds = parsedData.map { point =>
      val prediction = model.predict(point.features)
      (point.label, prediction)
    }
    val MSE = valuesAndPreds.map{case(v, p) => math.pow((v - p), 2)}.mean()
    println("training Mean Squared Error = " + MSE)
    
    // Save and load model
    model.save(sc, "myModelPath")
    val sameModel = LinearRegressionModel.load(sc, "myModelPath")
    

如果我使用这个程序作为我的起点,基本上我该从哪里开始?

【问题讨论】:

  • @maasg 你能帮忙回答这个问题吗?我已经阅读了很多你的回复来引发相关问题,他们帮助了很多。谢谢!
  • 这并不容易,但您必须通过将所有分类变量转换为新列来增加数据的维度

标签: scala csv apache-spark analytics regression


【解决方案1】:

拥有该模型,您可以预测输入数据是否满足模型 (1) 或不满足 (0)。 这样做:

    val yourInputData = //putYouDataHere
    val res = model.predict(Vectors.dense(yourInputData))
    println(res)

您传递给 predict 方法的向量应该具有与用于构建模型的数据相同的维数:“data/mllib/ridge-data/lpsa.data”

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-09-28
    • 2016-03-24
    • 2021-09-28
    • 2019-03-05
    • 2019-06-07
    • 1970-01-01
    • 1970-01-01
    • 2023-04-02
    相关资源
    最近更新 更多