Меня интересует создание подкласса NearestNeighbors
sklearn, чтобы возвращать метки наблюдений, а не индикаторы из обучающего набора. Вот мой подкласс оценщика NNBR
.
from sklearn.neighbors import NearestNeighbors
import numpy as np
class NNBR(NearestNeighbors):
def __init__(self,**kwargs):
super().__init__(**kwargs)
def fit(self, X, y):
super().fit(X)
if isinstance(y,np.ndarray):
self.y = y
else:
self.y = np.array(y)
return self
def predict(self, X):
results = self.kneighbors(X)
dist, ids = [j.ravel() for j in results]
return self.y[ids]
Я могу создать экземпляр и использовать оценщик, как я намереваюсь, но когда я вызываю get_params()
, мне возвращается пустой словарь
X = np.random.normal(size = (25,3))
y = [f'x_{j}' for j in range(25)]
myclf = NNBR(n_neighbors = 3).fit(X,y)
clf = NearestNeighbors(n_neighbors=3).fit(X)
myclf.get_params() # {}
clf.get_params() # Returns dictionary of params
Почему мой подкласс возвращает пустой словарь, когда я использую метод get_params
? Как я могу изменить свой код, чтобы myclf.get_params()
возвращал то же, что clf.get_params()
?