Хотя простая техника в вопросе работает, опасность состоит в том, что вы можете позже вызвать метод подгонки объекта и переписать ваши коэффициенты.
Несколько более «правильный» способ сделать это, если модель будет использоваться только для прогнозирования, будет наследоваться от класса sklearn и перегружать метод fit следующим образом:
class LinearPredictionModel(LinearRegression):
"""
This model is for prediction only. It has no fit method.
You can initialize it with fixed values for coefficients
and intercepts.
Parameters
----------
coef, intercept : arrays
See attribute descriptions below.
Attributes
----------
coef_ : array of shape (n_features, ) or (n_targets, n_features)
Coefficients of the linear model. If there are multiple targets
(y 2D), this is a 2D array of shape (n_targets, n_features),
whereas if there is only one target, this is a 1D array of
length n_features.
intercept_ : float or array of shape of (n_targets,)
Independent term in the linear model.
"""
def __init__(self, coef=None, intercept=None):
if coef is not None:
coef = np.array(coef)
if intercept is None:
intercept = np.zeros(coef.shape[0])
else:
intercept = np.array(intercept)
assert coef.shape[0] == intercept.shape[0]
else:
if intercept is not None:
raise ValueError("Provide coef only or both coef and intercept")
self.intercept_ = intercept
self.coef_ = coef
def fit(self, X, y):
"""This model does not have a fit method."""
raise NotImplementedError("model is only for prediction")
Затем создайте экземпляр модели следующим образом:
new_model = LinearPredictionModel(coef=my_coefficients, intercept=my_intercepts)
Я думаю, что единственный «правильный» способ сделать это - полностью реализовать новый класс с моим пользовательским алгоритмом в методе fit. Но для простых нужд тестирования коэффициентов в среде scikit-learn этот метод работает нормально.