Любая помощь, которая подталкивает меня к правильному решению, очень ценится ...
Я пытаюсь провести классификацию в два этапа:
1.) Рассчитать mu, sigma ипи на тренировочном наборе. 2.) Создайте процедуру тестирования, которая займет
- mu, sigma, pi
- an array of Feature IDs
- testx and testy.
Часть 1.) работает. Возвращает - mu # shape 4,13 - sigma # shape 4,13,13 - pi # shape 4,
def fit_generative_model(x,y):
k = 3 # labels 1,2,...,k
d = (x.shape)[1] # number of features
mu = np.zeros((k+1,d))
sigma = np.zeros((k+1,d,d))
pi = np.zeros(k+1)
for label in range(1,k+1):
indices = (y == label)
mu[label] = np.mean(x[indices,:], axis=0)
sigma[label] = np.cov(x[indices,:], rowvar=0, bias=1)
pi[label] = float(sum(indices))/float(len(y))
return mu, sigma, pi
Part 2.) не работает, так как мне кажется, что я не могудля выбора правильных подмножеств mu и sigma
def test_model(mu, sigma, pi, features, tx, ty):
mu, sigma, pi = fit_generative_model(trainx,trainy)
# set the variables
k = 3 # Labels 1,2,...,k
nt = len(testy)
score = np.zeros((nt,k+1))
covar = sigma
for i in range(0,nt):
for label in range(1,k+1):
score[i,label] = np.log(pi[label]) + \
multivariate_normal.logpdf(testx[i,features], mean=mu[label,:], cov=covar[label,:,:])
predictions = np.argmax(score[:,1:4], axis=1) + 1
errors = np.sum(predictions != testy)
return errors
Он должен возвращать количество ошибок, допущенных генеративной моделью в тестовых данных при ограничении указанными функциями.