SparkML LogisticRegression与Sklearn's:不同的系数和截距

时间:2019-02-04 18:04:46

标签: scikit-learn pyspark

我可能缺少一些初始化参数或类似的东西。

我在pyspark中创建了一个LR,然后在Scikit中创建了一个。然后,我使用相同的数据进行了训练。当我得到结果模型时,我比较了它们的参数。 Coefficients非常不同。 intercepts中的pyspark原来是一个数字,仍然与sklearn的数字大不相同。

关于标签的预测相同,但是概率值不同

  • pyspark == 2.3.2
  • scikit-learn == 0.20.2

pyspark LR创建:

data = self.spark.read.format("libsvm").load(input_path)
lr = LogisticRegression(maxIter=10, tol=0.0001)
model = lr.fit(data)
predicted = model.transform(data)

sklearn创建:

sk_model = linear_model.LogisticRegression()
sk_model.fit(np_x, np_y)
sk_expected = [sk_model.predict(np_x), sk_model.predict_proba(np_x)]

从spark到numpy的数据转换:

self.spark.udf.register("sparseToArray", lambda x: x.toArray().tolist(),
                       ArrayType(elementType=FloatType(), containsNull=False))
    np_y = data.select("label").toPandas().label.values.astype(numpy.float32)
    np_x = data.selectExpr("sparseToArray(features) as features").toPandas().features.apply(pandas.Series).values.astype(numpy.float32)

0 个答案:

没有答案