Я работаю через онлайн-блокнот Jupyter, и я застрял в связи с тем, почему мой код не работает:
https://nbviewer.jupyter.org/github/rasbt/pattern_classification/blob/master/dimensionality_reduction/projection/linear_discriminant_analysis.ipynb#LDA-in-5-steps
2.1 Матрица рассеяния внутри класса SW:
Код, который я имею ниже:
def S_W_matrix(X,y):
S_W = np.zeros((X.shape[1],X.shape[1]))
n_classes = len(np.unique(y))
for cl, mv in zip(range(1, n_classes), mean_vectors):
class_sc_mat = np.zeros((X.shape[1],X.shape[1]))
for row in X[y == cl]:
row, mv = row.reshape(X.shape[1],1), mv.reshape((X.shape[1],1)) # make column vectors
class_sc_mat += (row-mv).dot((row-mv).T)
S_W += class_sc_mat
return S_W
Мне кажется, что мои n_classes не верны, но я не могу на всю жизнь выяснить, почему это так, если мысоздаете матрицы для каждого уникального класса?
Любые советы / советы приветствуются!