SPARK:PYTHON - 无法使用Logistic回归拟合数据

时间:2016-12-13 14:08:16

标签: python apache-spark logistic-regression

我有一个Python代码工作正常,但是当我尝试在SPARK中使用相同的代码时,它会为FIT方法提供以下错误:

TypeError: float() argument must be a string or a number

示例数据:

    col1  col2  col3  col4  col5  col6
0     35    78    11    78    81     0
1     30    44    13    17    51     0
2     36    73    74    74    62     0
3     60    86    11    97    24     1

Python代码(工作):

# load data
data = read_csv('train.csv', names=['col1', 'col2', 'col3', 'col4', 'col5', 'col6'])
array = data.values
X = array[:,0:5]
Y = array[:,5]

SPARK代码:

raw_data = train
raw_data_header = raw_data.take(1)[0]

data = raw_data.filter(lambda line: line!=raw_data_header)\
    .map(lambda line: line.split(",")).map(lambda tokens: (int(tokens[0]),int(tokens[1]),int(tokens[2]),int(tokens[3]),int(tokens[4]))).cache()

result = raw_data.filter(lambda line: line!=raw_data_header)\
    .map(lambda line: line.split(",")).map(lambda tokens: (int(tokens[5]))).cache()

data1 = data.map( lambda elem: list(elem))
result1 = result.map( lambda elem: list(elem))
X = data1
Y = result

当我试图适应模型时,错误出现在最后一行:

model = LogisticRegression()
rfe = RFE(model, 5)
fit = rfe.fit(X, Y)

P.S .: 我不得不将数据和结果转换为data1和result1,因为在Spark中RDD不可迭代,我们需要数据作为列表列表(而不是元组列表)

任何其他达到相同目的的方法也是可以接受的。

0 个答案:

没有答案