data=monthly_sum.copy() # data=data[data[“実在庫”]!=0] data.drop([“自社品番”],axis=1,inplace=True) # 年月列を年と月に分割して数値に変換する data[‘年’] = data[‘年月’].dt.year data[‘月’] = data[‘年月’].dt.month # データから年月列を削除する data.drop(‘年月’, axis=1, inplace=True) # 特徴量と目的変数の選択 # X = data[[‘年’, ‘月’, ‘金額’, ‘原価’, ‘実在庫’, ‘リードタイム’, ‘在庫補充頻度’, ‘在庫回転数’]] # X = data[[‘年’, ‘月’, ‘原価’, ‘実在庫’, ‘リードタイム’, ‘在庫補充頻度’]] #金額は、売上なので、売上が分かれば数量も分かってしまうので除外。目的変数に使える。 在庫回転数も計算式に金額が入っているので除外。 # X = data[[‘年’, ‘月’, ‘原価’, ‘実在庫’, ‘在庫補充頻度’]] #リードタイム除外 # X = data[[‘年’, ‘月’, ‘在庫補充頻度’]] #リードタイム除外 X = data[[‘年’, ‘月’, ‘金額’, ‘実在庫’, ‘リードタイム’, ‘在庫補充頻度’, ‘在庫回転数’]] y = data[‘数量’] # 予測したい数量 # データの分割 X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42) # モデルの構築とトレーニング model = RandomForestRegressor(n_estimators=100, random_state=42) model.fit(X_train, y_train) # テストデータを使用して予測 y_pred = model.predict(X_test) # モデルの評価 mse = mean_squared_error(y_test, y_pred) print(“Mean Squared Error:”, mse) # 来月のデータで予測 # 予測に使用するデータの準備(必要に応じて調整してください) next_month_data = pd.DataFrame({‘年’: [2024], ‘月’: [5], ‘金額’:[],’実在庫’: [100], ‘リードタイム’:[5], ‘在庫補充頻度’: [3]}) 金額・実在庫・在庫保管頻度、これらは直近半年の平均値をわりあてたい

直近半年の平均値を計算して、それらの値を来月のデータに代入することができます。以下は、それを実現するPythonコードの例です。

python
# 直近半年のデータを抽出 recent_six_months_data = data[(data['年'] == 2023) & (data['月'].isin([11, 12, 1, 2, 3, 4]))] # 平均値を計算 mean_values = recent_six_months_data.mean() # 平均値を代入 next_month_data = pd.DataFrame({ '年': [2024], '月': [5], '金額': [mean_values['金額']], '実在庫': [mean_values['実在庫']], 'リードタイム': [5], '在庫補充頻度': [3] })

このコードでは、直近半年のデータを抽出してその平均値を計算し、それらの平均値を来月のデータに代入しています。これにより、直近半年の平均値が来月のデータに反映されます。

未分類

Posted by ぼっち