К сожалению, невозможно просто установить коэффициенты модели LR pyspark.Модель pyspark LR на самом деле является оберткой вокруг модели java ml (см. Класс JavaEstimator
).
Таким образом, когда модель LR подходит, она передает параметры из paramMap
в новый оценщик Java, который подходит для данных.Все методы / атрибуты LogisticRegressionModel
являются просто вызовами модели Java с использованием метода _call_java
.
Поскольку коэффициенты не являются параметрами (вы можете увидеть полный список, используя explainParams
в экземпляре LR), вы не можете передать их созданной модели Java LR, и нет метода установки.
Например, для модели логистической регрессии lrm
, вы можете видеть, что единственными установщиками являютсядля параметров, которые вы можете установить при создании экземпляра экземпляра LR pyspark: lowerBoundsOnCoefficients
и upperBoundsOnCoefficients
.
print([c for c in lmr._java_obj.__dir__() if "coefficient" in c.lower()])
# >>> ['coefficientMatrix', 'lowerBoundsOnCoefficients',
# 'org$apache$spark$ml$classification$LogisticRegressionParams$_setter_$lowerBoundsOnCoefficients_$eq',
# 'getLowerBoundsOnCoefficients',
# 'org$apache$spark$ml$classification$LogisticRegressionParams$_setter_$upperBoundsOnCoefficients_$eq',
# 'getUpperBoundsOnCoefficients', 'upperBoundsOnCoefficients', 'coefficients',
# 'org$apache$spark$ml$classification$LogisticRegressionModel$$_coefficients']
Попытка установить атрибут «coefficients» приводит к следующему:
print(lmr.coefficients)
# >>> DenseVector([18.9303, -18.9303])
lmr.coefficients = [10, -10]
# >>> AttributeError: can't set attribute
Таким образом, вам придется свернуть свой собственный преобразователь pyspark, если вы хотите иметь возможность предоставлять коэффициенты.Вероятно, было бы проще просто рассчитать результаты, используя стандартную логистическую функцию согласно комментарию @ pault.