python和机器学习颇为新颖。python逻辑回归 - patsy设计矩阵和分类数据
我想建立一个逻辑回归模型。我曾在R工作获得lambda,并使用交叉验证来找到最好的模型,现在将它移入python。
在这里,我创建了一个设计矩阵,使其变得稀疏。然后运行逻辑回归。它似乎在工作。
我的问题是,因为我已经说过我的术语item_number是一个类如何知道哪个变成了虚拟变量?我怎么知道哪个系数与每个类别名称一致?
from patsy import dmatrices
from sklearn.linear_model import LogisticRegression
from sklearn import preprocessing
def train_model (data, frm, Rlambda):
y, X = dmatrices(frm , data, return_type="matrix")
y = np.ravel(y)
scaler = sklearn.preprocessing.MaxAbsScaler(copy=False)
X_trans = scaler.fit_transform(X)
model = LogisticRegression(penalty ='l2', C=1/Rlambda)
model = model.fit(X_trans, y)
frm = 'purchase ~ price + C(item_number)'
Rlambda = 0.01
model, train_score = train_model(data1,frm,Rlambda)
感谢您的调试。好吧,他们出来的时候和他们一样。但是因为我传递的是分类数据,所以不应该有一个类别变成虚拟变量,然后消失? – tosh1611
假设'item_number'取值从1到5,那么在'C(item_number)'之后,你会得到4个假人(需要0,1)。如果你真的关心系数和虚拟名称之间的匹配,你真的需要首先标记你的数据集,你可以返回数据帧而不是矩阵,而是设置'return_type ='dataframe''。并使用x.head(),x.columns等来查找变量名称。 – Nicholas