2014-10-02 52 views
1

這是一個理論上的問題。我知道SO不喜歡不易複製的代碼,但請耐心等待!讓熊貓玩scikit-learn

我有一個我想運行Lasso迴歸的熊貓DataFrame。要做到這一點,最好的方法,我知道的是獲得功能集成到一個numpy的數組:

features = df[list(cols)].values 
    features = np.nan_to_num(features) 

然後我做了SK-學習魔法:

lasso_model = LassoCV(cv = 15, copy_X = True, normalize = True, max_iter=10000) 
    lasso_fit = lasso_model.fit(features, label) 
    lasso_path = lasso_model.score(features, label) 
    print lasso_model.coef_ 

現在我的問題是如何有效地使熊貓和numpy一起工作。此打印顯示如下:

array([ 1.69066749e-05, -1.56013346e-05, 0.00000000e+00, 
     -6.77086687e-06, 0.00000000e+00, 3.95920932e-08, 
     0.00000000e+00, 6.54752484e-06, -0.00000000e+00, 
     -1.18676617e-05, -7.36411973e-08, 4.72966581e-05, 
     2.91028626e-06, 1.60674178e-05, 8.83195041e-06, 
     -8.74769447e-02, 1.39914995e-04, -1.86801467e-05, 
     3.68593473e-01, 4.16009393e-01, 9.27391598e-07, 
     -0.00000000e+00, 0.00000000e+00, -4.07446333e-03, 
     2.33648787e-01, 0.00000000e+00, 2.22660872e-02, 
     0.00000000e+00, 3.04366897e-02, -0.00000000e+00, 
     0.00000000e+00, -0.00000000e+00, -0.00000000e+00, 
     1.85141334e-01, 9.50727274e-02, -4.94268994e-03, 
     2.22993839e-01, 0.00000000e+00, 1.23715861e-02, 
     0.00000000e+00, 5.42142052e-02, -1.27412757e-02, 
     2.98389804e-02, 1.35957828e-02, -0.00000000e+00, 
     3.64953613e-02, -0.00000000e+00, 1.03289810e-01,]) 

這對我沒有好處。我如何以有效的方式得到什麼樣的係數?

我發現了一些黑客的方法來做一些它,但我認爲有一個更好的方法,我可以做到這一點。

例如,我知道我可以通過做最大:

In [256]: coef.argmax() 
Out[256]: 19 

In [257]: cols[19] 
Out[257]: 'Price' 

我想,我想知道的主要事情是如何獲得列名的字典係數對。

謝謝你們!

回答

4

你可以讓這colscoef小號映射這樣的詞典:

dict(zip(cols, coef)) 

這是一個common pure Python idiom

+0

它會不會是'coef [0]',因爲它是'(n_classes,n_features)'數組的數組? – 2015-12-10 12:57:31