Python - Scipy: multivariate_normal - выбрать правильные подмножества ввода - PullRequest
0 голосов
/ 16 октября 2019

Любая помощь, которая подталкивает меня к правильному решению, очень ценится ...

Я пытаюсь провести классификацию в два этапа:

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

Он должен возвращать количество ошибок, допущенных генеративной моделью в тестовых данных при ограничении указанными функциями.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...