Понимание функции разделения MLlib из PySpark - PullRequest
0 голосов
/ 19 апреля 2019

У меня есть следующие преобразованные данные.

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|
+-------+--------------------+

1 Ответ

0 голосов
/ 20 апреля 2019

Попробуйте установить seed pyspark.sql.DataFrame.randomSplit

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

...