【问题标题】:Understanding the split function of MLlib from PySpark从 PySpark 理解 MLlib 的 split 功能
【发布时间】:2019-09-10 01:33:59
【问题描述】:

我有以下转换后的数据。

dataframe: rev

+--------+------------------+
|features|             label|
+--------+------------------+
|  [24.0]| 6.382551510879452|
|  [29.0]| 6.233604067150788|
|  [35.0]|15.604956217859785|
+--------+------------------+

当我像下面这样把它分成两组时,我得到了一些意想不到的东西。一开始很抱歉,我是 PySpark 的新手。

(trainingData, testData) = rev.randomSplit([0.7, 0.3])

现在当我检查时,我发现:

trainingData.show(3)

+--------+--------------------+
|features|               label|
+--------+--------------------+
|  [22.0]|0.007807592294154144|
|  [22.0]|0.016228017481755445|
|  [22.0]|0.029326273621380787|
+--------+--------------------+

不幸的是,当我运行模型并检查测试集的预测时,我得到以下信息:

+------------------+--------------------+--------+
|        prediction|               label|features|
+------------------+--------------------+--------+
|11.316183853894138|0.023462300065135114|  [22.0]|
|11.316183853894138| 0.02558467547137103|  [22.0]|
|11.316183853894138| 0.03734394063419729|  [22.0]|
|11.316183853894138| 0.07660100900324195|  [22.0]|
|11.316183853894138| 0.08032742812331381|  [22.0]|
+------------------+--------------------+--------+

Prediction and Label are in horrible relationship. 

提前致谢。

信息更新:

整个数据集:

rev.describe().show()

+-------+--------------------+
|summary|               label|
+-------+--------------------+
|  count|            28755967|
|   mean|  11.326884020257475|
| stddev|  6.0085535870540125|
|    min|5.158072668697356E-4|
|    max|   621.5236222433649|
+-------+--------------------+

还有火车组:

+-------+--------------------+
|summary|               label|
+-------+--------------------+
|  count|            20132404|
|   mean|  11.327304652511287|
| stddev|   6.006384709888342|
|    min|5.158072668697356E-4|
|    max|   294.9624797344751|
+-------+--------------------+

【问题讨论】:

  • 看起来你的特征是不变的,所以预测等于截距(偏差)。对特征进行汇总统计并查看您的系数

标签: pyspark linear-regression apache-spark-mllib


【解决方案1】:

尝试设置种子pyspark.sql.DataFrame.randomSplit

(trainingData, testData)  = rev.randomSplit([7.0, 3.0], 100)

【讨论】:

  • 它实际上创建了相同的怪异训练和测试样本。没有运气。 :(
  • 我已经更新了关于这个问题的信息。可以请你给点建议吗?谢谢。
  • 您有什么问题或疑虑?
猜你喜欢
  • 2014-12-11
  • 2017-08-31
  • 2011-03-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-12-26
  • 2019-04-11
  • 1970-01-01
相关资源
最近更新 更多