Skip to main content
 首页 » 编程设计

python之PySpark mllib 逻辑回归错误 "List object has no attribute first"

2025年05月04日28linjiqin

我正在尝试对逻辑回归模型进行简单的训练。我的训练数据、模型和错误信息如下所示。为什么我得到这个“列表”对象没有属性“第一个”错误?

train_data = numdata.collect() 
train_data[:3] 
 
[LabeledPoint(1.0, [2.0,36.0,0.0,100.0,100.0,38.0,0.0,100.0,95.0,100.0,100.0]),  
LabeledPoint(1.0, [0.0,77.0,16.0,100.0,99.0,86.0,1.0,99.0,100.0,99.0,95.0]), 
LabeledPoint(1.0, [0.0,22.0,0.0,100.0,95.0,21.0,1.0,95.0,100.0,100.0,100.0])] 
 
lrm = LogisticRegressionWithSGD.train(train_data)  

--------------------------------------------------------------------------- AttributeError Traceback (most recent call last) in () ----> 1 lrm = LogisticRegressionWithSGD.train(train_data)

C:\spark-2.0.1-bin-hadoop2.7\python\pyspark\mllib\classification.pyc in train(cls, data, iterations, step, miniBatchFraction, initialWeights, regParam, regType, intercept, validateData, convergenceTol) 319 bool(intercept), bool(validateData), float(convergenceTol)) 320 --> 321 return _regression_train_wrapper(train, LogisticRegressionModel, data, initialWeights) 322 323

C:\spark-2.0.1-bin-hadoop2.7\python\pyspark\mllib\regression.pyc in _regression_train_wrapper(train_func, modelClass, data, initial_weights) 206 def _regression_train_wrapper(train_func, modelClass, data, initial_weights): 207 from pyspark.mllib.classification import LogisticRegressionModel --> 208 first = data.first() 209 if not isinstance(first, LabeledPoint): 210 raise TypeError("data should be an RDD of LabeledPoint, but got %s" % type(first))

AttributeError: 'list' object has no attribute 'first'

请您参考如下方法:

raise TypeError("data should be an RDD of LabeledPoint

您有一个 Python list,因为这是 collect() 返回的内容。你需要一个 RDD,所以

lrm = LogisticRegressionWithSGD.train(numdata)  

或者,我假设您已将 numdata 拆分为 70/30%

(trainingData, testData) = numdata.randomSplit([0.7, 0.3]) 

所以使用那个trainingData RDD