Próbuję zastosować metodę jednowymiarowej selekcji cech za pomocą modułu scikit modułu Python-learn do regresu (tj. Wartości ciągłych wartości odpowiedzi) w formacie svmlight.Wybór funkcji uczenia się naukowego dla danych regresji
Pracuję z scikit-learn version 0.11.
Próbowałem dwóch podejść - z których pierwsza się nie udała, a druga z nich zadziałała dla zbioru danych zabawek, ale sądzę, że dałoby to bezsensowne wyniki dla prawdziwego zestawu danych.
Chciałbym uzyskać poradę dotyczącą odpowiedniego podejścia opartego na jednowariantowej selekcji cech, które mógłbym zastosować, aby wybrać najlepsze N cech dla zestawu danych regresji. Chciałbym również (a) dowiedzieć się, jak włączyć funkcję f_regression lub (b) usłyszeć alternatywne sugestie.
Obydwa wspomniane powyżej sposoby:
- I wypróbowany przy sklearn.feature_selection.f_regression (X, Y).
ta nie powiodła się z następującym komunikatem o błędzie: "TypeError: copy() wykonuje dokładnie 1 argument (2)" dany
- Próbowałem za pomocą chi2 (X, Y). To "działało", ale podejrzewam, że tak jest, ponieważ dwie wartości odpowiedzi 0.1 i 1.8 w zbiorze danych dotyczących zabawek były traktowane jako etykiety klasowe? Można przypuszczać, że nie przyniosłoby to znaczącej statystyki chi-kwadrat dla prawdziwego zbioru danych, dla którego istnieje duża liczba możliwych wartości odpowiedzi, a liczba w każdej komórce [z konkretną wartością odpowiedzi i wartością dla testowanego atrybutu] byłaby Niska?
Proszę odnaleźć mój zestaw danych zabawek na końcu tej wiadomości.
Poniższy fragment kodu powinien dać wyniki, które opisałem powyżej.
from sklearn.datasets import load_svmlight_file
X_train_data, Y_train_data = load_svmlight_file(svmlight_format_train_file) #i.e. change this to the name of my toy dataset file
from sklearn.feature_selection import SelectKBest
featureSelector = SelectKBest(score_func="one of the two functions I refer to above",k=2) #sorry, I hope this message is clear
featureSelector.fit(X_train_data,Y_train_data)
print [1+zero_based_index for zero_based_index in list(featureSelector.get_support(indices=True))] #This should print the indices of the top 2 features
Z góry dziękuję.
Richard
Zawartość mojego contrived pliku svmlight - z dodatkowych pustych wierszy wstawionych dla jasności:
1,8 1: 1.000000 2: 1.000000 4: 1,000000 6: 1.000000 # mA
1,8 1: 1.000000 2: 1.000000 # mB
0,1 5: 1.000000 # MC
1,8 1: 1.000000 2: 1.000000 # mD
0,1 3: 1.000000 4: 1.000000 # me
0,1 3: 1.000000 # mF
1,8 2: 1.000000 4: 1.000000 5: 1.000000 6: 1.000000 # mG
1,8 2: 1.000000 # mH
'chi2' jest tylko do klasyfikacji. Aby działał w ustawieniu regresji, musisz odłożyć swoje wartości Y. –
Dziękuję larsmans. Myślałem, że tak było, ale spekulowałem, że chi2 może wewnętrznie regresować bin wartości y "za kulisami". Zdaję sobie sprawę, że moja obecna instalacja naukowa jest stara, więc spróbuję f_regression z najnowszą wersją, zanim ponownie zgłoszę problem. – user1735732