Selezionare le caratteristiche per le prestazioni del modello

Riduzione della dimensionalità in Python

Jeroen Boeye

Head of Machine Learning, Faktion

Esempio di insieme di dati Ansur

campione ansur

Riduzione della dimensionalità in Python

Pre-elaborare i dati

from sklearn.model_selection import train_test_split

X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3)

from sklearn.preprocessing import StandardScaler scaler = StandardScaler() X_train_std = scaler.fit_transform(X_train)
Riduzione della dimensionalità in Python

Creare un modello di regressione logistica

from sklearn.linear_model import LogisticRegression
from sklearn.metrics import accuracy_score

lr = LogisticRegression()
lr.fit(X_train_std, y_train)

X_test_std = scaler.transform(X_test)
y_pred = lr.predict(X_test_std) print(accuracy_score(y_test, y_pred))
0.99
Riduzione della dimensionalità in Python

Esaminare i coefficienti delle caratteristiche

print(lr.coef_)
array([[-3.  ,  0.14,  7.46,  1.22,  0.87]])
print(dict(zip(X.columns, abs(lr.coef_[0]))))
{'chestdepth': 3.0, 
 'handlength': 0.14, 
 'neckcircumference': 7.46, 
 'shoulderlength': 1.22, 
 'earlength': 0.87}
Riduzione della dimensionalità in Python

Caratteristiche che contribuiscono poco al modello

X.drop('handlength', axis=1, inplace=True)

X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3) lr.fit(scaler.fit_transform(X_train), y_train) print(accuracy_score(y_test, lr.predict(scaler.transform(X_test))))
0.99
Riduzione della dimensionalità in Python

Eliminazione Ricorsiva delle Caratteristiche (RFE)

from sklearn.feature_selection import RFE

rfe = RFE(estimator=LogisticRegression(), n_features_to_select=2, verbose=1)

rfe.fit(X_train_std, y_train)
Fitting estimator with 5 features.
Fitting estimator with 4 features.
Fitting estimator with 3 features.

 

Rimuovere una caratteristica influenzerà i coefficienti delle altre caratteristiche

Riduzione della dimensionalità in Python

Esaminare i risultati di RFE

X.columns[rfe.support_]
Index(['chestdepth', 'neckcircumference'], dtype='object')
print(dict(zip(X.columns, rfe.ranking_)))
{'chestdepth': 1, 
 'handlength': 4, 
 'neckcircumference': 1, 
 'shoulderlength': 2, 
 'earlength': 3}
print(accuracy_score(y_test, rfe.predict(X_test_std)))
0.99
Riduzione della dimensionalità in Python

Esercitiamoci!

Riduzione della dimensionalità in Python

Preparing Video For Download...