簡體   English   中英

如何提高Scikit python中邏輯回歸的模型精度?

[英]How to increase the model accuracy of logistic regression in Scikit python?

我試圖用gre,gpa和rank等預測變量來預測admit變量。但是預測精度非常低(0.66)。數據集如下所示。 https://gist.github.com/abyalias/3de80ab7fb93dcecc565cee21bd9501a

請找到以下代碼:

 In[73]: data.head(20)
 Out[73]: 

   admit  gre   gpa  rank_2  rank_3  rank_4
0      0  380  3.61     0.0     1.0     0.0
1      1  660  3.67     0.0     1.0     0.0
2      1  800  4.00     0.0     0.0     0.0
3      1  640  3.19     0.0     0.0     1.0
4      0  520  2.93     0.0     0.0     1.0
5      1  760  3.00     1.0     0.0     0.0
6      1  560  2.98     0.0     0.0     0.0

y = data['admit']
x = data[data.columns[1:]]

from sklearn.cross_validation import  train_test_split
xtrain,xtest,ytrain,ytest  = train_test_split(x,y,random_state=2)

ytrain=np.ravel(ytrain)

#modelling 
clf = LogisticRegression(penalty='l2')
clf.fit(xtrain,ytrain)
ypred_train = clf.predict(xtrain)
ypred_test = clf.predict(xtest)

In[38]: #checking the classification accuracy
accuracy_score(ytrain,ypred_train)
Out[38]: 0.70333333333333337
In[39]: accuracy_score(ytest,ypred_test)
Out[39]: 0.66000000000000003

In[78]: #confusion metrix...
from sklearn.metrics import confusion_matrix
confusion_matrix(ytest,ypred)

Out[78]: 
array([[62,  1],
       [33,  4]])

那些是錯誤的預測。如何提高模型的准確性?

由於機器學習更多的是試驗功能和模型,因此您的問題沒有正確答案。 我給你的一些建議是:

1.特征縮放和/或規范化 - 檢查gregpa特征的比例。 它們的差異在2個數量級上。 因此,你的gre特征最終會在像Logistic回歸這樣的分類器中統治其他特征。 在將所有功能放入機器學習模型之前,您可以將所有功能標准化為相同的比例。 是scikit-learn中提供的各種功能擴展和規范化類的良好指南。

2.類不平衡 - 查找數據中的類不平衡。 由於您正在處理允許/拒絕數據,因此拒絕的數量將顯着高於許可。 SkLearn中的大多數分類器(包括LogisticRegression都有一個class_weight參數。 如果類不平衡,將其設置為balanced也可能很有效。

3.優化其他分數 - 您還可以優化其他指標,例如Log LossF1-Score 在課堂不平衡的情況下,F1-Score可能很有用。 是一個很好的指導,可以更多地談論得分。

4.超參數調整 - 網格搜索 - 您可以通過執行網格搜索來調整模型的超參數來提高准確性。 例如,在LogisticRegression情況下,參數C是超參數。 此外,您應該避免在網格搜索期間使用測試數據。 而是執行交叉驗證。 僅使用您的測試數據報告最終模型的最終數字。 請注意,GridSearch應該針對您嘗試的所有型號進行,因為只有您才能知道每種型號可以獲得的最佳效果。 Scikit-Learn為此提供了GridSearchCV類。 這篇文章也是一個很好的起點。

5.探索更多分類器 - Logistic回歸學習一個分離你的類的線性決策表面。 您的2個類可能無法線性分離。 在這種情況下,您可能需要查看其他分類器,例如支持向量機 ,它們能夠學習更復雜的決策邊界。 您還可以開始查看基於樹的分類器,例如可以從數據中學習規則的決策樹 將它們視為一系列If-Else規則,算法會自動從數據中學習。 通常,很難通過決策樹獲得正確的偏差 - 方差權衡 ,因此如果您有大量數據,我建議您查看隨機森林

6.錯誤分析 - 對於每個模型,請返回並查看失敗的情況。 您最終可能會發現某些模型在參數空間的某個部分上運行良好,而其他模型在其他部分上運行得更好。 如果是這種情況,那么諸如VotingClassifier技術之類的Ensemble技術通常會給出最好的結果。 贏得Kaggle比賽的模特很多次是合奏模特。

7.更多功能 _如果所有這些都失敗了,那么這意味着您應該開始尋找更多功能。

希望有所幫助!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM