我试图从pymc3api指南中重新创建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)
如果您查看
iris
数据集,(4,3)
是(预测值的数量,标签的数量)。请注意,这些预测值是连续的。从加载数据的方式来看,似乎您正在尝试预测FanOn
,并且(天真地)有14个预测值,因此β
的形状将是(14,2)
。但是,大多数预测因子不是连续的,有些看起来是绝对的(例如CupState
)。二进制的很好,但是分类需要扩展为虚拟变量。基本上,一旦得到一个包含所有二进制或连续项的X
矩阵,列数就是β
的行数。你知道吗另外,有几个预测因子永远不会改变,所以把它们去掉。你知道吗
相关问题 更多 >
编程相关推荐