So erhöhen Sie die Genauigkeit der Modelle der logistischen regression in Scikit python?
Ich versuche, vorherzusagen, die zugeben, variable Prädiktoren wie gre,gpa und Reihen.Aber die Vorhersage-Genauigkeit ist sehr weniger(0.66).Das dataset wird unten gegeben.
https://gist.github.com/abyalias/3de80ab7fb93dcecc565cee21bd9501a
Bitte einen der folgenden codes:
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]])
Diejenigen, die falsche Vorhersage.So erhöhen Sie die Genauigkeit der Modelle?
Sie können beginnen, durch tuning der C-parameter der logistischen regression. Sie könnten auch versuchen, verschiedene Klassifikationsverfahren wie SVMs und Bäume.
Sie sollten nicht versuchen, die Optimierung der Genauigkeit auf Ihr Prüfgerät. Sollten Sie optimieren auf dem Trainings-set und test verwenden, als ein Objekt, Bewertung der Methode. Bearbeiten können Sie Ihre Antwort zu zeigen, die Genauigkeit Punktzahl basierend auf dem Trainings-set?
Hi,Genauigkeit, basierend auf training set Hinzugefügt wird.
versucht, mit dem setzen von C=0.01,100.wenn 100,die Genauigkeit auf dem Trainings-set erhöht zu 72.66% und die Genauigkeit auf test set 68.99%.Aber immer noch kein bemerkenswerter Unterschied
Zwei Punkte: (i) der Bewertung ein Modell auf der trainingsmenge angegeben durch ncfirth oben, ist eine schlechte Praxis im Allgemeinen, da ein Modell passt die Trainings-Daten und eine Punktzahl würde nicht sagen, nichts über seine Verallgemeinerung Fähigkeit. Sie sollten sich für die cross-Validierung. (ii) ich Stimme mit den Punkten von Abhinav unten. Ich würde vorschlagen, um zu versuchen, die Normalisierung Ihrer gre und gpa, da Ihre Werte Dominieren Sie Ihre feature-Vektoren. Versuchen Sie zum Beispiel: scikit-learn.org/stable/modules/generated/...
Sie sollten nicht versuchen, die Optimierung der Genauigkeit auf Ihr Prüfgerät. Sollten Sie optimieren auf dem Trainings-set und test verwenden, als ein Objekt, Bewertung der Methode. Bearbeiten können Sie Ihre Antwort zu zeigen, die Genauigkeit Punktzahl basierend auf dem Trainings-set?
Hi,Genauigkeit, basierend auf training set Hinzugefügt wird.
versucht, mit dem setzen von C=0.01,100.wenn 100,die Genauigkeit auf dem Trainings-set erhöht zu 72.66% und die Genauigkeit auf test set 68.99%.Aber immer noch kein bemerkenswerter Unterschied
Zwei Punkte: (i) der Bewertung ein Modell auf der trainingsmenge angegeben durch ncfirth oben, ist eine schlechte Praxis im Allgemeinen, da ein Modell passt die Trainings-Daten und eine Punktzahl würde nicht sagen, nichts über seine Verallgemeinerung Fähigkeit. Sie sollten sich für die cross-Validierung. (ii) ich Stimme mit den Punkten von Abhinav unten. Ich würde vorschlagen, um zu versuchen, die Normalisierung Ihrer gre und gpa, da Ihre Werte Dominieren Sie Ihre feature-Vektoren. Versuchen Sie zum Beispiel: scikit-learn.org/stable/modules/generated/...
InformationsquelleAutor Aby Mathew | 2016-06-28
Du musst angemeldet sein, um einen Kommentar abzugeben.
Seit maschinelles lernen ist mehr über das Experimentieren mit den Funktionen und die Modelle, es gibt keine richtige Antwort auf Ihre Frage. Einige meiner Vorschläge an Euch:
1. Feature Scaling und/oder Normalisierung - Überprüfen Sie die Waage von Ihrem gre und gpa Funktionen. Sie unterscheiden sich über 2 Größenordnungen. Daher, Ihre gre Funktion wird am Ende Dominieren die anderen Klassifizierer, wie die Logistische Regression. Sie können normalisieren alle Funktionen auf der gleichen Waage, bevor Sie Sie in einem machine-learning-Modell.Diese ist eine gute Anleitung, die verschiedene Funktion Skalierung und Normalisierung Klassen in scikit-learn.
2. Klasse Ungleichgewicht - Look für Klasse Ungleichgewicht in Ihren Daten. Seit Sie die Arbeit mit zugeben/Daten abzulehnen, dann ist die Anzahl der Ausschussteile wäre deutlich höher, als es zugibt. Die meisten Klassifikatoren in SkLearn einschließlich
LogisticRegression
haben eineclass_weight
parameter. Einstellung, die zubalanced
könnte auch gut funktionieren, im Falle einer Klasse Ungleichgewicht.3. Optimieren Sie anderen erzielt - Sie optimieren können, die auf anderen Metriken auch wie Melden Sie den Verlust und F1-Score. Die F1-Score könnte nützlich sein, im Falle der Klasse Ungleichgewicht. Diese ist eine gute Anleitung, dass die Gespräche mehr über scoring.
4. Hyperparameter Tuning - Grid-Suche - Sie können verbessern Sie Ihre Genauigkeit, indem Sie eine Grid-Search-Optimierung der hyperparameters des Modells. Für den Fall, dass in der
LogisticRegression
die parameterC
ist ein hyperparameter. Auch sollten Sie es vermeiden, mit der test-Daten bei der Netz-Suche. Stattdessen führen Sie cross-Validierung. Verwenden Sie Ihre test-Daten nur an den Bericht die endgültigen zahlen für Ihre endgültige Modell. Bitte beachten Sie, dass GridSearch getan werden sollte, für alle Modelle, dass Sie versuchen, denn nur dann werden Sie in der Lage zu sagen, welche ist die beste, die Sie bekommen können von jedem Modell. Scikit-Learn bietet dieGridSearchCV
Klasse. Diese Artikel ist auch ein guter Ausgangspunkt.5. Entdecken Sie mehr Klassifikatoren - Logistische Regression lernt eine lineare Beschluss Oberfläche, die trennt Ihre Klassen. Es könnte möglich sein, dass Ihr 2 Klassen nicht Linear voneinander trennbar sind. In einem solchen Fall müssen Sie möglicherweise den Blick auf andere Klassifikatoren solche Support Vector Machines die in der Lage sind zu lernen, mehr komplexe Entscheidung Grenzen. Sie können auch beginnen, Baum-Basierte Klassifikatoren wie Decision Trees, die lernen können, Regeln in Ihren Daten zu. Denke, von Ihnen als eine Serie von If-Else-Regeln, die der Algorithmus lernt automatisch aus den Daten. Oft ist es schwierig, die richtige Bias-Varianz-Kompromiss mit Entscheidungsbäumen, so würde ich dir empfehlen zu schauen, Random Forests wenn Sie eine beträchtliche Menge von Daten.
6. Fehleranalyse - Für jedes Ihrer Modelle, gehen Sie zurück und betrachten Sie die Fälle, in denen Sie nicht nachgekommen sind. Sie könnten am Ende finden Sie, dass einige Ihrer Modelle funktionieren gut auf einem Teil der parameter Raum, während andere arbeiten besser auf die anderen Teile. Wenn dies der Fall ist, dann Ensemble-Techniken wie
VotingClassifier
Techniken geben oft die besten Ergebnisse. Modelle, gewinnen Kaggle-Wettbewerbe sind viele Male ensemble-Modelle.7. Weitere Features _ Wenn all dies fehlschlägt, dann bedeutet das, dass Sie sollten beginnen, auf der Suche nach mehr Funktionen.
Hoffe, das hilft!
You can optimize on other metrics also such as Log Loss and F1-Score.
Wie tun wir das? Ich freue mich über jede Hilfe!In Bezug auf 4. Hyperparameters tuning, bayesian optimization bekommt spannende Menschen in diesen Tagen. Es bietet die richtige balance zwischen Modell Leistung gegen die Zahl der hyperparameters Kombinationen getestet.
InformationsquelleAutor Abhinav Arora