1つのインスタンスで2回fitさせているけど、後者の受注金額予測モデルの学習をしたら、先の受注数量の予測モデルの学習は消えるの?

2024年6月17日

2回fitを呼び出すと、前者のfitによって学習されたモデルの状態は後者のfitによって上書きされます。つまり、最後に呼び出されたfitによって学習されたモデルが残ります。そのため、上記のコードでは、最後に呼び出されたfitによって受注金額の予測モデルが学習され、受注数量の予測モデルは失われます。

この問題を解決するために、異なるモデルを使用するか、必要に応じて学習を分離する必要があります。それでは、異なるモデルを使用する方法を示します。

python
import numpy as np
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LinearRegression
from sklearn.metrics import mean_squared_error

# サンプルデータを作成
# 特徴量 (X) とターゲット (y_quantity: 受注数量, y_revenue: 受注金額) を用意する
X = np.random.rand(100, 2)  # 例として、2つの特徴量を持つ100件のデータを生成
y_quantity = np.random.randint(1, 100, size=100)  # ランダムな受注数量を生成
y_revenue = np.random.randint(100, 1000, size=100)  # ランダムな受注金額を生成

# データをトレーニングセットとテストセットに分割
X_train, X_test, y_quantity_train, y_quantity_test, y_revenue_train, y_revenue_test = train_test_split(
    X, y_quantity, y_revenue, test_size=0.2, random_state=42)

# 受注数量の予測モデルの構築と学習
model_quantity = LinearRegression()
model_quantity.fit(X_train, y_quantity_train)
# 受注数量の予測
y_quantity_pred = model_quantity.predict(X_test)

# 受注金額の予測モデルの構築と学習
model_revenue = LinearRegression()
model_revenue.fit(X_train, y_revenue_train)
# 受注金額の予測
y_revenue_pred = model_revenue.predict(X_test)

# モデルの性能評価
mse_quantity = mean_squared_error(y_quantity_test, y_quantity_pred)
mse_revenue = mean_squared_error(y_revenue_test, y_revenue_pred)

print("受注数量の予測 MSE:", mse_quantity)
print("受注金額の予測 MSE:", mse_revenue)

このようにすると、異なるモデルが受注数量と受注金額の予測に使用され、それぞれが別々の学習を行います。

未分類

Posted by ぼっち