Jak zwiększyć dokładność modelu regresji logistycznej w Pythonie Scikit?

Próbuję przewidzieć zmienną admit za pomocą predyktorów takich jak gre, gpa i ranks.Ale dokładność przewidywania jest bardzo mniejsza (0,66).Zestaw danych podano poniżej. https://gist.github.com/abyalias/3de80ab7fb93dcecc565cee21bd9501a

Proszę znaleźć kody poniżej:

 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]])

Te są błędne przewidywania.Jak zwiększyć dokładność modelu?

Author: Aby Mathew, 2016-06-28

1 answers

Ponieważ uczenie maszynowe polega bardziej na eksperymentowaniu z funkcjami i modelami, nie ma prawidłowej odpowiedzi na twoje pytanie. Niektóre z moich sugestii dla ciebie to:

1. Skalowanie funkcji i / lub normalizacja - Sprawdź skale swoich funkcji gre i gpa. Różnią się one dwoma rzędami wielkości. Dlatego Twoja funkcja gre zakończy się dominowaniem innych w klasyfikatorze takim jak regresja logistyczna. Możesz znormalizować wszystkie swoje funkcje w tej samej skali przed umieszczeniem ich w modelu uczenia maszynowego.Ten jest dobrym przewodnikiem po różnych klasach skalowania funkcji i normalizacji dostępnych w scikit-learn.

2. Nierównowaga klasy - poszukaj nierównowagi klasy w swoich danych. Ponieważ pracujesz z danymi przyznaj/Odrzuć, liczba odrzuceń byłaby znacznie wyższa niż przyzna. Najwięcej ogłoszeń w miejscowości SkLearn w tym LogisticRegression mieć parametr class_weight. Ustawienie tego na balanced może również działać dobrze w przypadku braku równowagi klasowej.

3. Zoptymalizuj Inne wyniki - możesz zoptymalizować inne wskaźniki, takie jak Log Loss i F1-Score. Wynik F1 może być przydatny w przypadku nierównowagi klasowej. Ten jest dobrym przewodnikiem, który mówi więcej o punktacji.

4. Hyperparameter Tuning-Grid Search - możesz poprawić swoją dokładność, wykonując wyszukiwanie siatki, aby dostroić hiperparametry Twojego modelu. Na przykład w przypadek LogisticRegression, parametr C jest hiperparametrem. Należy również unikać korzystania z danych testowych podczas wyszukiwania siatki. Zamiast tego wykonaj walidację krzyżową. Użyj danych testowych tylko do zgłaszania ostatecznych liczb dla ostatecznego modelu. Należy pamiętać, że GridSearch powinno być wykonywane dla wszystkich modeli, które wypróbujesz, ponieważ tylko wtedy będziesz w stanie powiedzieć, co jest najlepsze, co możesz uzyskać z każdego modelu. Scikit-Nauka zapewnia GridSearchCV Klasa do tego. ten artykuł jest również dobrym początkiem punkt.

5. Poznaj więcej klasyfikatorów - regresja logistyczna uczy się liniowej powierzchni decyzyjnej, która oddziela Twoje klasy. Może być możliwe, że Twoje 2 klasy mogą nie być liniowo rozdzielne. W takim przypadku może być konieczne przyjrzenie się innym klasyfikatorom, takim Maszyny wektorowe wspomagające które są w stanie poznać bardziej złożone granice decyzyjne. Możesz również zacząć szukać klasyfikatorów opartych na drzewie, takich jak drzewa decyzyjne które mogą poznaj zasady na podstawie swoich danych. Pomyśl o nich jako o serii reguł If-Else, których algorytm automatycznie uczy się na podstawie danych. Często trudno jest uzyskać właściwy rozkład zmienności z drzewami decyzyjnymi, więc polecam spojrzeć na losowe lasy , jeśli masz znaczną ilość danych.

6. Analiza błędów - dla każdego z modeli wróć i przyjrzyj się przypadkom, w których zawodzą. Może w końcu odkryjesz, że niektóre z Twoich modele działają dobrze na jednej części przestrzeni parametrów, podczas gdy inne działają lepiej na innych częściach. Jeśli tak jest, to techniki zespołowe takie jak VotingClassifier techniki często dają najlepsze rezultaty. Modelki, które wygrywają konkursy to wielokrotnie modelki.

7. Więcej funkcji _ Jeśli to wszystko zawiedzie, oznacza to, że powinieneś zacząć szukać więcej funkcji.

Mam nadzieję, że to pomoże!
 31
Author: Abhinav Arora,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-06-28 17:59:34