如何在Apache Spark MLlib中使用Python设置逻辑回归的优化器
我现在开始在测试 Apache Spark 的 MLlib。
def mapper(line):
feats = line.strip().split(',')
label = feats[len(feats)-1]
feats = feats[:len(feats)-1]
feats.insert(0,label)
return numpy.array([float(feature) for feature in feats])
def test3():
data = sc.textFile('/home/helxsz/Dropbox/exercise/spark/data_banknote_authentication.txt')
parsed = data.map(mapper)
logistic = LogisticRegressionWithSGD()
logistic.optimizer.setNumIterations(200).setMiniBatchFraction(0.1)
model = logistic.run(parsed)
labelsAndPreds = parsed.map(lambda points: (int(points[0]), model.predict( points[1:len(points)]) ))
trainErr = labelAndPreds.filter(lambda (v,p): v != p).count() / float(parsed.count())
print 'training error = ' + str(trainErr)
但是当我使用下面的 LogisticRegressionWithSGD 时,
logistic = LogisticRegressionWithSGD()
logistic.optimizer.setNumIterations(200).setMiniBatchFraction(0.1)
出现了一个错误,提示 AttributeError: 'LogisticRegressionWithSGD' 对象没有 'optimizer' 这个属性。
这里是 LogisticRegressionWithSGD 和 GradientDescent 的 API 文档。
1 个回答
0
在Python的API中,当你调用'train'这个函数时,可以设置这些参数:
model = LogisticRegressionWithSGD.train(parsed, iterations=200, miniBatchFraction=0.1)
我找到的唯一关于这个的说明是在源代码里。