1

我有一個數據集X其形狀是(1741,61)。使用logistic迴歸和cross_validation,每次拆分(cv = 5)的時候我都在62-65%左右。Scikit_learn的PolynomialFeatures邏輯迴歸導致分數較低

我認爲如果我把數據做成二次的,那麼準確度應該會增加。然而,我得到了相反的效果(我將cross_validation的每個分割都設置爲40,按百分比)因此,我假設在嘗試使數據保持二次方時我做錯了什麼?

這裏是我使用的使我懷疑的代碼,

from sklearn import preprocessing 
X_scaled = preprocessing.scale(X) 

from sklearn.preprocessing import PolynomialFeatures 
poly = PolynomialFeatures(3) 
poly_x =poly.fit_transform(X_scaled) 
classifier = LogisticRegression(penalty ='l2', max_iter = 200) 

from sklearn.cross_validation import cross_val_score 
cross_val_score(classifier, poly_x, y, cv=5) 

array([ 0.46418338, 0.4269341 , 0.49425287, 0.58908046, 0.60518732]) 

,我做錯了什麼。

我試圖將原始數據轉換爲二次曲線,然後使用preprocessing.scale來縮放數據,但導致錯誤。

UserWarning: Numerical issues were encountered when centering the data and might not be solved. Dataset may contain too large values. You may need to prescale your features. warnings.warn("Numerical issues were encountered "

所以我沒有理會走這條路。

另一件令人困擾的事情是二次運算的速度。使用多項式特徵時,cross_val_score需要花費幾個小時才能輸出分數。有什麼辦法可以加快速度嗎?我有一個英特爾i5-6500 CPU和16個RAM,Windows 7操作系統。

謝謝。

回答

1

您是否嘗試過使用MinMaxScaler而不是ScalerScaler將輸出高於和低於0的值,因此您將遇到這樣一種情況,即縮放值爲-0.1的值和值爲0.1的值將具有相同的平方值,儘管實際上並不相似。直覺上,這似乎會降低多項式擬合的得分。這就是說我沒有測試過,這只是我的直覺。此外,要注意多項式擬合。我建議閱讀this answer to "Why use regularization in polynomial regression instead of lowering the degree?"。這是一個很好的解釋,可能會向你介紹一些新技術。作爲旁邊@MatthewDrury是一位優秀的老師,我建議閱讀他的所有答案和博客文章。

+0

您提出了一個有趣的觀點。我會測試它,並閱讀你鏈接的博客。謝謝。 – Moondra

+0

首次嘗試使用MinMaxScaler和Poly擬合似乎可以提高準確性。我會再測試幾次,但這需要一些時間。 – Moondra

+0

看來我用MinMaxScaler獲得了更高的準確性,但我突然間以普通的縮放比例獲得了更高的準確性。 – Moondra

1

有一個聲明「準確性應該增加」與多項式功能。如果多項式特徵使模型更接近原始數據生成過程,則情況確實如此。多項式特徵(特別是使每個特徵相互作用並且多項式)可以將模型從數據生成過程進一步移動;因此更差的結果可能是適當的。

通過在scikit中使用3度多項式,X矩陣從(1741,61)變爲(1741,41664),這是比列多得多的列。

41k +列需要更長時間才能解決。您應該查看功能選擇方法。 Grr說,調查降低多項式。嘗試L1,分組套索,RFE,貝葉斯方法。嘗試中小企業(可能能夠識別可能是多項式的特定功能的主題專家)。繪製數據以查看哪些特徵可能相互作用或在多項式中最好。

我還沒有看過它一段時間,但我記得關於層次結構良好的模型(可以刪除x1但保留x1 * x2交互)的討論。如果您的模型在不合格的分層模型下表現得最好,那麼這可能是值得研究的。

+0

是的,我還沒有進入功能選擇(我最終會看到)。我只是試圖衡量多項式特徵的好處,因爲我觀看的大多數講座似乎顯示出較少的偏差和更多的差異。很多東西來測試你的帖子和Grr的帖子。謝謝。 – Moondra

+0

我似乎無法弄清楚爲什麼功能從(1741,61)到50000左右。 (61)*(3)+(61選擇2) - 每個特徵與另一個特徵相乘一次。 – Moondra