アンサンブル バギング分類器/リグレッサーで GaussianProcess 分類器またはリグレッサーを使用しようとしています。ガウス カーネルは、アンサンブル ワークフローの外部では正常に動作しますが、アンサンブル モデルに実装される限り (ここではバギング)、そのカーネルに関するエラーを生成し、「CompoundKernel」オブジェクトに属性「k1」がないことを宣言します。次のより単純なコードを使用してエラーを再生成しました。
import numpy as np
import pandas as pd
from sklearn.gaussian_process import GaussianProcessRegressor
from sklearn.gaussian_process.kernels import CompoundKernel, WhiteKernel, RBF
from sklearn.ensemble import BaggingRegressor
X1 = np.random.exponential(range(0,10), size = 10)
X2 = np.random.poisson(range(0,10), size = 10)
y = np.random.normal(size = 10)
df = pd.DataFrame()
df["X1"] = X1
df["X2"] = X2
df["y"] = y
df1 = df.iloc[:,0:2]
df2 = df.iloc[:,2]
kernel = CompoundKernel([WhiteKernel(noise_level=2), RBF(length_scale=3)])
gaus = GaussianProcessRegressor(kernel = kernel)
bag = BaggingRegressor(n_estimators=10, base_estimator = gaus)
bag.fit(df1, df2) # executing this line generates the error
エラーは次のとおりです。
AttributeError Traceback (most recent call last)
<ipython-input-32-af2dcdf3f94c> in <module>
2 gaus = GaussianProcessRegressor(kernel = kernel)
3 bag = BaggingRegressor(n_estimators=10, base_estimator = gaus)
----> 4 bag.fit(df1, df2)
......
......
--> 542 k_dims = self.k1.n_dims
543 for i, kernel in enumerate(self.kernels):
544 kernel.theta = theta[i * k_dims:(i + 1) * k_dims]
AttributeError: 'CompoundKernel' object has no attribute 'k1'
複合カーネルを単一のカーネル (RBF など) に変更すると問題は解決しますが、モデルでハイブリッド カーネルを使用したいと考えています。この問題をどのように処理できるかについて何か考えがありますか?