Я попытался воссоздать пример Многолинейная логистическая регрессия из руководства по PyMC3 API с прикрепленным набором данных (Production.csv) .
На этапе создания pm.Model()
я сталкиваюсь с трудностями. Размеры матрицы не работают. Я не понимаю, почему (4,3) матрица используется в примере API, и поэтому у меня возникают трудности с преобразованием примера в мою проблему.
Спасибо за ваше время и понимание!
Приветствие
Линус
Я приложил полный код, потому что я не использую все столбцы набора данных.
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns
from math import *
import theano
import theano.tensor as tt
import pandas as pd
import pymc3 as pm
from sklearn import preprocessing
from sklearn.model_selection import train_test_split
data = pd.read_csv("Production.csv")
data_hmc = data.copy()
X_hmc = data_hmc.iloc[:, [False, True, True, True, False, True, True, True, True, True, True, True, True, True, True, True,]]
y_hmc = data_hmc.iloc[:, [False, False, False, False, True, False, False, False, False, False, False, False, False, False, False, False]]
le = preprocessing.LabelEncoder()
y_hmc = y_hmc.apply(le.fit_transform)
X_train_hmc, X_test_hmc, y_train_hmc, y_test_hmc = train_test_split(X_hmc, y_hmc, test_size = 0.20)
from sklearn.preprocessing import StandardScaler
scaler = StandardScaler()
scaler.fit(X_train_hmc)
X_train_hmc = scaler.transform(X_train_hmc)
X_test_hmc = scaler.transform(X_test_hmc)
Xt = theano.shared(X_train_hmc)
yt = theano.shared(y_train_hmc)
with pm.Model() as hmc:
# Coefficients for features
β = pm.Normal('β', 0, sd=1e2, shape=(61482, 3))
# Transoform to unit interval
a = pm.Flat('a', shape=(3,))
p = tt.nnet.softmax(Xt.dot(β) + a)
observed = pm.Categorical('obs', p=p, observed=yt)