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