【发布时间】:2019-07-08 13:41:54
【问题描述】:
我尝试从 PyMC3 API 指南中重新创建 Multilabel logistic regression 示例,并附上 data set (Production.csv)。
在创建pm.Model() 的步骤中,我遇到了困难。矩阵维度无法解决。我不明白为什么在 API 示例中使用 (4,3) 矩阵,因此我很难将示例转换为我的问题。
感谢您的时间和理解!
干杯 莱纳斯
我附上了我的完整代码,因为我没有使用数据集的所有列。
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)
【问题讨论】:
标签: python theano montecarlo pymc3 pymc