我尝试使用随附的Multilabel logistic regression从PyMC3 API指南中重新创建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)
答案 0 :(得分:0)
如果您查看iris
数据集,则(4,3)
为(预测变量数,标签数)。请注意,这些预测变量是连续的。从加载数据的方式来看,您似乎正在尝试预测FanOn
并(实际上)有14个预测变量,因此β
的形状为(14,2)
。但是,您的大多数预测变量都不是连续的,有些看起来是分类的(例如CupState
)。二进制的很好,但是分类需要扩展为虚拟变量。基本上,一旦获得包含所有二进制或连续条目的X
矩阵,列数就是β
的行数。
此外,几个预测变量永远不会改变,因此请删除这些预测变量。