はじめに
システムの都合上、scikit-learnで予測モデルを作らなければならないが、作りたい予測モデルが線形回帰モデルであり、回帰係数と切片が既に判明しているとしよう。既存の予測モデルをPythonで新たに構築したい場合などにありうるだろう。この場合わざわざ学習データを用意してfitメソッドを呼び出して学習するのもかったるいし、計算上の誤差などが出ることもある。であれば、回帰係数と切片から直接予測モデルを作ってしまえばいいではないかということで、できるかどうか調べてみた。結論として可能だったため、ここにメモっておく。
環境
python 3.6
scikit-learn 0.21.2
やり方
やり方はまさにそのままで、fitメソッドを使わずに、回帰係数と切片を直接予測モデルのオブジェクトに設定する。ソースは以下の通りだ
ScikitLearnTest2.py
from sklearn.linear_model import LinearRegression
import numpy as np
def main():
model = LinearRegression()
model.coef_ = np.array([3, 4])
model.intercept_ = 2
print(model.predict([[3, 2]]))
if __name__ == "__main__":
main()
上のソースでは説明変数が2個でそれぞれの回帰係数が3, 4であり、切片が2の予測モデルをfitメソッドを使わず作成している。
このモデルに対し、説明変数が(3,2)のデータのデータを与えると結果は、3 x 3 + 2 x 4 + 2 = 19 となるはずだが、実際にpredictの結果は、19となっており、正しく予測モデルが生成されていることが分かる。