2014-11-15 10 views
5

Sto tentando di eseguire la selezione delle funzionalità valutando le uscite dei coefficienti di regressione e selezionando le caratteristiche con i coefficienti di magnitudine più elevati. Il problema è che non so come ottenere le rispettive funzionalità, poiché vengono restituiti solo i coefficienti dall'attributo coef._. La documentazione dice:Scikit: impara la regressione lineare come ottenere le rispettive caratteristiche del coefficiente?

Coefficienti stimati per il problema di regressione lineare. Se vengono assegnati più obiettivi durante l'adattamento (y 2D), questo è un array 2D di forma (n_targets, n_features), mentre se viene passato solo un target, questo è un array 1D di lunghezza n_features.

Sto passando al mio regression.fit (A, B), dove A è un array 2-D, con valore tfidf per ogni funzione in un documento. Formato Esempio:

  "feature1" "feature2" 
"Doc1" .44   .22 
"Doc2" .11   .6 
"Doc3" .22   .2 

B sono i miei valori di riferimento per i dati, che sono solo numeri 1-100 associati ad ogni documento:

Uso regression.coef_, ho un elenco di coefficienti, ma non le loro caratteristiche corrispondenti! Come posso ottenere le funzionalità? Immagino di dover modificare la struttura dei miei bersagli B, ma non so come.

risposta

3

Suppongo che stiate lavorando su qualche compito di selezione delle funzioni. Bene usando regression.coef_ si ottengono i coefficienti corrispondenti alle caratteristiche, ad esempio regression.coef_[0] corrisponde a "feature1" e regression.coef_[1] corrisponde a "feature2". Questo dovrebbe essere ciò che desideri.

Bene I a sua volta consiglia il modello di albero da sklearn, che potrebbe essere utilizzato anche per la selezione delle funzioni. Per essere precisi, controlla here.

+0

Questo è vero finché regression.coef_ restituisce i valori di coefficinet nello stesso ordine. Grazie. – jeffrey

+0

L'ExtraTreesClassifier è in realtà molto interessante, ma sembra che non ci sia modo di recuperare le funzionalità effettive che ha scelto dopo che il modello è stato adattato? – jeffrey

+0

@jeffrey Sì, ma seleziono sempre la funzione in base a "clf.feature_importances_" per recuperare la classificazione di importanza delle funzionalità. Beh, intuitivamente è proprio come i coefficienti del modello lineare, non è vero? – Jake0x32

1

Quello che ho trovato al lavoro era:

X = le variabili indipendenti

coefficients = pd.concat([pd.DataFrame(X.columns),pd.DataFrame(np.transpose(logistic.coef_))], axis = 1) 

Il presupposto lei ha dichiarato: che l'ordine del regression.coef_ è lo stesso che nel convoglio vale in le mie esperienze (funziona con i dati sottostanti e controlla anche con correlazioni tra X e y)

+0

Penso che tu possa semplicemente fare pd.DataFrame (zip (X.columns, logistic.coef_)) –

2
coefficients = pd.DataFrame({"Feature":X.columns,"Coefficients":np.transpose(logistic.coef_)}) 
+0

Questo non funziona per me. * Eccezione: i dati devono essere 1-dimensionali * – ytu

Problemi correlati