PyMC3如何设置beta分布的矩阵形状

2024-06-13 12:06:30 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图从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)

Tags: csvfromtestimportfalsetrue示例data
1条回答
网友
1楼 · 发布于 2024-06-13 12:06:30

如果您查看iris数据集,(4,3)是(预测值的数量,标签的数量)。请注意,这些预测值是连续的。从加载数据的方式来看,似乎您正在尝试预测FanOn,并且(天真地)有14个预测值,因此β的形状将是(14,2)。但是,大多数预测因子不是连续的,有些看起来是绝对的(例如CupState)。二进制的很好,但是分类需要扩展为虚拟变量。基本上,一旦得到一个包含所有二进制或连续项的X矩阵,列数就是β的行数。你知道吗

另外,有几个预测因子永远不会改变,所以把它们去掉。你知道吗

相关问题 更多 >