gpt4 book ai didi

pyspark - pyspark.mllib 中 LabeledPoint 的类型转换错误,用于在 pyspark.ml 中使用线性回归模型

转载 作者:行者123 更新时间:2023-12-04 14:55:32 26 4
gpt4 key购买 nike

我有以下使用 pyspark.ml 包进行线性回归的代码。但是,当模型适合时,我在最后一行收到此错误消息:

IllegalArgumentException: u'requirement failed: Column features must be of type org.apache.spark.ml.linalg.VectorUDT@3bfc3ba7 but was actually org.apache.spark.mllib.linalg.VectorUDT@f71b0bce.



有谁知道缺少什么? pyspark.ml 中是否有替代品?对于 LabeledPointpyspark.mllib ?
from pyspark import SparkContext
from pyspark.ml.regression import LinearRegression
from pyspark.mllib.regression import LabeledPoint
import numpy as np
from pandas import *


data = sc.textFile("/FileStore/tables/w7baik1x1487076820914/randomTableSmall.csv")

def parsePoint(line):
values = [float(x) for x in line.split(',')]
return LabeledPoint(values[1], [values[0]])


points_df = data.map(parsePoint).toDF()

lr = LinearRegression()

model = lr.fit(points_df, {lr.regParam:0.0})

最佳答案

问题是较新版本的 spark 在 ml 的 linalg 模块中有一个 Vector 类,您不需要从 mllib.linalg 中获取它。此外,较新的版本不接受 ml 中的 spark.mllib.linalg.VectorUDT。这是适合您的代码:

from pyspark import SparkContext
from pyspark.ml.regression import LinearRegression
from pyspark.ml.linalg import Vectors
import numpy as np


data = sc.textFile("/FileStore/tables/w7baik1x1487076820914/randomTableSmall.csv")

def parsePoint(line):
values = [float(x) for x in line.split(',')]
return (values[1], Vectors.dense([values[0]]))


points_df = data.map(parsePoint).toDF(['label','features'])

lr = LinearRegression()

model = lr.fit(points_df)

关于pyspark - pyspark.mllib 中 LabeledPoint 的类型转换错误,用于在 pyspark.ml 中使用线性回归模型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42231495/

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