У меня есть метод класса, который перестает возвращать значение, когда я пытаюсь получить доступ через унаследованный подкласс.
Понятия не имею, что заставляет его не возвращать соответствующее значение.
Вот что у меня есть:
class KNN():
def __init__(self, neighbors=5, centered=True):
self.neighbors = neighbors
self.centered = centered
def _get_distance(self, xi):
return np.sqrt(((xi - self.X_fit)**2).sum(1))
def fit(self, X, y):
if self.centered:
self.X_fit = standardize(X)
else:
self.X_fit = X
self.y_fit = y
def predict(self, X, centered=False):
m, n = X.shape[0], self.X_fit.shape[0]
self.dist_matrix = np.zeros((m, n))
X_pred = np.zeros(X.shape)
if standardize:
X_pred = standardize(X)
else:
X_pred = X
for row in range(m):
self.dist_matrix[row] = self._get_distance(X_pred[row])
self.idx_vals = np.argsort(self.dist_matrix)[:, :self.neighbors]
self.y_idx = self.y_fit[self.idx_vals]
self.preds = [self.neighbor_calculation(self.y_idx[i]) for i in range(len(self.y_idx))]
return self.preds
Если я получу доступ к классу KNN
напрямую, *Метод 1009 * работает как задумано, и возвращает массив предсказанных значений.
Однако он останавливается, когда я пытаюсь создать подкласс, который наследуется от KNN
:
class KNNClassifier(KNN):
def predict(self, X, centered=False):
self.neighbor_calculation = majority_vote
super().predict(X, standardize)
Когда я обращаюсь к методу predict
через класс KNNClassifier
, он не возвращает значение.
Однако self.preds
содержит фактические прогнозы.
Но при попытке что-то вроде KNNClassifier.predict(X)[:10]
выдается сообщение об ошибке:
'NoneType' object is not subscriptable'
Я не знаю, почему возвращаемое значение внезапно интерпретируется как None
.