如何在Apache Spark MLlib中使用Python设置逻辑回归的优化器

0 投票
1 回答
1096 浏览
提问于 2025-04-18 04:12

我现在开始在测试 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' 这个属性。

这里是 LogisticRegressionWithSGDGradientDescent 的 API 文档。

1 个回答

0

在Python的API中,当你调用'train'这个函数时,可以设置这些参数:

model = LogisticRegressionWithSGD.train(parsed, iterations=200, miniBatchFraction=0.1)

我找到的唯一关于这个的说明是在源代码里。

撰写回答