Я строю простую модель в pymc2 и хочу оценить данные поезда и тестовые данные.
Я пытался использовать эту часть кода
print('Accuracy on train data = {}%'.format((y.value == Y_train).mean() * 100))
но я думаю, что y.value
то же самое, что и Y_train
, поэтому не решает мою проблему.
Мой текущий код
number_of_samples = 10000
X = np.random.randn(100, 2)
Y = np.tanh(X[:, 0] + X[:, 1])
Y = 1. / (1. + np.exp(-(Y + Y)))
Y_train = Y > 0.5
w11 = pm.Normal('w11', mu=0., tau=1.)
w12 = pm.Normal('w12', mu=0., tau=1.)
w21 = pm.Normal('w21', mu=0., tau=1.)
w22 = pm.Normal('w22', mu=0., tau=1.)
w31 = pm.Normal('w31', mu=0., tau=1.)
w32 = pm.Normal('w32', mu=0., tau=1.)
x1 = X[:, 0]
x2 = X[:, 1]
x3 = pm.Lambda('x3', lambda w1=w11, w2=w12: np.tanh(w1 * x1 + w2 * x2))
x4 = pm.Lambda('x4', lambda w1=w21, w2=w22: np.tanh(w1 * x1 + w2 * x2))
@pm.deterministic
def sigmoid(x=w31 * x3 + w32 * x4):
return 1. / (1. + np.exp(-x))
y = pm.Bernoulli('y', sigmoid, observed=True, value=Y_train)
model = pm.Model([w11, w12, w21, w22, w31, w32, y])
inference = pm.MCMC(model)
inference.sample(number_of_samples)
print('Accuracy on train data = {}%'.format((y.value == Y_train).mean() * 100))
И это сеть, которую я хочу построить.
Я рассчитываю вычислить точность моей обученной модели по данным поезда и другим данным испытаний, но мне не ясно, как я могу это сделать.