gpt4 book ai didi

python - 无法训练 pySpark SVM,标记点问题

转载 作者:太空宇宙 更新时间:2023-11-04 05:20:54 25 4
gpt4 key购买 nike

我正在尝试将 spark Dataframe 转换为标记点。Dataframe 被命名为 DF,看起来像:

+-----+-----+-----+-----+-----+-----+-----+-----+-----+------+-----+
|step1|step2|step3|step4|step5|step6|step7|step8|step9|step10|class|
+-----+-----+-----+-----+-----+-----+-----+-----+-----+------+-----+
| 14| 14| 0| 14| 14| 4| 11| 10| 0| 7| 1|
| 11| 10| 14| 0| 14| 18| 18| 14| 7| 7| 1|
| 14| 14| 14| 14| 14| 14| 7| 0| 7| 0| 1|
| 14| 14| 14| 14| 7| 7| 14| 14| 0| 11| 1|
| 14| 14| 14| 14| 14| 14| 14| 7| 14| 7| 1|
| 14| 14| 14| 14| 14| 14| 14| 0| 7| 7| 1|
| 14| 14| 14| 14| 14| 14| 14| 7| 14| 7| 1|
| 17| 14| 0| 7| 0| 0| 14| 7| 0| 7| 1|
| 14| 14| 14| 7| 7| 14| 7| 14| 14| 7| 1|
| 14| 14| 14| 14| 14| 14| 14| 7| 7| 7| 1|
| 7| 14| 14| 14| 14| 0| 14| 7| 0| 14| 1|
| 14| 14| 14| 14| 14| 0| 14| 7| 7| 7| 1|

根据文档,我正在尝试做的是:

(training, test) = DF.randomSplit([0.8,0.2])
print training
def parsePoint(line):
values = [float(x) for x in line.split(' ')]
return LabeledPoint(values[0], values[:1])

trainLabeled = training.rdd.map(parsePoint)
model = SVMWithSGD.train(trainLabeled, iterations=100)

但是我得到了错误:

Py4JJavaError: An error occurred while calling z:org.apache.spark.api.python.PythonRDD.runJob.

星火版本 2.0.1

最佳答案

如果没有看到您的数据,我无法确定,但 SVMWithSGD 的一个常见问题来自标签。

您需要使用 LabeledPoint(就像您所做的那样)并确保第一个参数为 0.0 或 1.0。错误可能来自 x[-1] 是另一个值(不是 0 也不是 1)。

你能检查一下吗?

希望对你有帮助


编辑(获取数据后):

下摆。让我们回到基础知识:SVM(大致)“学习如何将数据分成两类”(这不是很正式,但让我们暂时考虑一下)。也就是说,您的数据集必须是:X 形状为 n x D 的矩阵(n 行数,D 特征数),以及包含数据标签的 y 矩阵 n x 1。标签是二进制的,通常表示为 {0, 1}(或 {-1, 1},这对于数学更方便)。这是相当“数学”的方法。通常你有一个 data 矩阵,你通过“提取”一列作为标签在 Xy 之间分割。 (此列中的所有值必须是 0、1)。

长话短说:SVM 会将您的数据分类为两个类。

标签(=类,其值为0或1)可以看作是用于拆分数据的两个类别。所以你必须有一个只有 0 或 1 的列。

例如如果我构建我的电影数据集,我可以设置一个列“我喜欢它吗?” label=1 如果我喜欢这部电影,label=0 如果我不喜欢,然后训练我的 SVM 来预测我应该喜欢哪部电影

我没有在您的数据中看到哪一列是标签。如果你有超过 2 个类,SVM 不适合你,你将不得不看看多元分类(这超出了这里的范围,告诉我它是否是你想要的)。

我猜你的目标对你来说并不是很清楚。例如,人们不会使用 ID 列训练分类,这几乎没有意义。如果我错了,请解释您对数据的期望。 (您还可以解释列指的是什么)。

pltrdy

关于python - 无法训练 pySpark SVM,标记点问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40365082/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com