#scikit-learn #attributeerror #ensemble-learning #gaussian-process
#scikit-учись #ошибка атрибута #ансамблевое обучение #гауссовский процесс
Вопрос:
Я пытаюсь использовать классификатор или регрессор 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) lt;ipython-input-32-af2dcdf3f94cgt; in lt;modulegt; 2 gaus = GaussianProcessRegressor(kernel = kernel) 3 bag = BaggingRegressor(n_estimators=10, base_estimator = gaus) ----gt; 4 bag.fit(df1, df2) ...... ...... --gt; 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) решает проблему, но я хочу использовать гибридное ядро в своей модели. У вас есть какие-нибудь идеи о том, как я могу справиться с этой проблемой?