SparkML LogisticRegression и Sklearn's: разные коэффициенты и перехваты - PullRequest
0 голосов
/ 04 февраля 2019

Возможно, мне не хватает некоторых параметров инициализации или чего-то в этом роде.

Я создал LR в pyspark, а затем один, используя Scikit.Я тренировался тогда, используя те же данные.Когда я получил полученные модели, я сравнил их параметры.Coefficients были очень разные.intercepts в pyspark оказалось одним числом, и оно все еще сильно отличается от значения sklearn.

Прогнозы одинаковы с точки зрения меток, однако значения вероятности отличаются

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

pispark 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)]

Преобразование данных из искры в 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)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...