pyspark mlib 中 运行 逻辑回归时出错
Error while running Logistic Regression in pyspark mlib
我有一个数据框(df_ml_nullable),像这样:
+-----+--------------------+
|label| features|
+-----+--------------------+
| 0.0|[127.0,132.0,123....|
| 0.0|[67.0,67.0,67.0,6...|
| 0.0|[-29.0,-30.0,-28....|
| 4.0|[31.0,31.0,31.0,3...|
| 0.0|[39.0,40.0,42.0,4...|
+-----+--------------------+
以下是此数据框的架构:
df_ml_nullable.printSchema()
root
|-- label: double (nullable = false)
|-- features: vector (nullable = false)
我尝试 运行 这样的逻辑回归:
from pyspark.ml.linalg import Vectors
from pyspark.ml.classification import LogisticRegression
lr = LogisticRegression(maxIter=10, regParam=0.01)
(train_d,test_d)=df_ml_nullable.randomSplit([0.7, 0.3])
model1 = lr.fit(train_d)
当我尝试 运行 时,我得到了这个错误:
IllegalArgumentException:您的要求失败:列特征必须是 struct,values:array> 类型,但实际上是 struct,values:array>。'
有人遇到过这个问题吗?
问题出在导入上。我没有从 ml 导入,而是从 mllib 导入向量。以下更正起到了作用:
#from pyspark.mllib.linalg import Vectors, VectorUDT
from pyspark.ml.linalg import Vectors,VectorUDT
@Vincent - 感谢提示。
我有一个数据框(df_ml_nullable),像这样:
+-----+--------------------+
|label| features|
+-----+--------------------+
| 0.0|[127.0,132.0,123....|
| 0.0|[67.0,67.0,67.0,6...|
| 0.0|[-29.0,-30.0,-28....|
| 4.0|[31.0,31.0,31.0,3...|
| 0.0|[39.0,40.0,42.0,4...|
+-----+--------------------+
以下是此数据框的架构: df_ml_nullable.printSchema()
root
|-- label: double (nullable = false)
|-- features: vector (nullable = false)
我尝试 运行 这样的逻辑回归:
from pyspark.ml.linalg import Vectors
from pyspark.ml.classification import LogisticRegression
lr = LogisticRegression(maxIter=10, regParam=0.01)
(train_d,test_d)=df_ml_nullable.randomSplit([0.7, 0.3])
model1 = lr.fit(train_d)
当我尝试 运行 时,我得到了这个错误: IllegalArgumentException:您的要求失败:列特征必须是 struct,values:array> 类型,但实际上是 struct,values:array>。'
有人遇到过这个问题吗?
问题出在导入上。我没有从 ml 导入,而是从 mllib 导入向量。以下更正起到了作用:
#from pyspark.mllib.linalg import Vectors, VectorUDT
from pyspark.ml.linalg import Vectors,VectorUDT
@Vincent - 感谢提示。