Python Spark-Logistic回归误差维数失配

Python Spark-Logistic回归误差维数失配,python,apache-spark,pyspark,logistic-regression,Python,Apache Spark,Pyspark,Logistic Regression,我刚开始使用spark,正在尝试进行逻辑回归。 我不断地发现这个错误: Caused by: java.lang.IllegalArgumentException: requirement failed: Dimensions mismatch when adding new sample. Expecting 21 but got 17. 我拥有的功能有21个,但我不确定这17个在这里意味着什么。不知道该怎么办? 我的代码在这里: from pyspark.mllib.regression

我刚开始使用spark,正在尝试进行逻辑回归。 我不断地发现这个错误:

Caused by: java.lang.IllegalArgumentException: requirement failed: 
Dimensions mismatch when adding new sample. Expecting 21 but got 17.
我拥有的功能有21个,但我不确定这17个在这里意味着什么。不知道该怎么办? 我的代码在这里:

from pyspark.mllib.regression import LabeledPoint
from numpy import array

def isfloat(string):
   try:
    float(string)
        return True
    except ValueError:
        return False

def parse_interaction(line):
    line_split = line.split(",")
    # leave_out = [1,2,3]
    clean_line_split = line_split[3:24]
    retention = 1.0
    if line_split[0] == '0.0':
       retention = 0.0
    return LabeledPoint(retention, array([map(float,i) for i in clean_line_split if isfloat(i)]))

training_data = raw_data.map(parse_interaction)

from pyspark.mllib.classification import LogisticRegressionWithLBFGS
from time import time

t0 = time()
logit_model = LogisticRegressionWithLBFGS.train(training_data)
tt = time() - t0

print "Classifier trained in {} seconds".format(round(tt,3))

看起来原始数据有问题。我猜有些值没有通过isFloat验证。您可以试着在控制台上打印这些值吗?它将帮助您识别错误行。

看起来原始数据有问题。我猜有些值没有通过isFloat验证。您可以试着在控制台上打印这些值,它将帮助您识别错误行。

错误来自于矩阵乘法,其中维度不匹配。数组未获取所有21个值。我建议您将变量设置为0,以防它们不是浮点值,因为(似乎)您希望

错误来自矩阵乘法,其中维度不匹配。数组未获取所有21个值。我建议您将变量设置为0,以防它们不是浮点数,因为(似乎)您希望这样做

,因为在创建
数组时过滤掉值
它的长度可以在0和预期大小之间的任何位置。删除任何形式的错误条目都更有意义。因为在创建
数组时过滤掉了值,所以它的长度可以在0和预期大小之间。删除任何形式的错误条目都更有意义。