Ho un problema di classificazione di apprendimento automatico con 80% di variabili categoriali. Devo usare una codifica a caldo se voglio usare un classificatore per la classificazione? Posso passare i dati a un classificatore senza la codifica?Come posso una codifica a caldo in Python?
Sto cercando di eseguire le seguenti operazioni per la selezione delle funzioni:
ho letto il file treno:
num_rows_to_read = 10000 train_small = pd.read_csv("../../dataset/train.csv", nrows=num_rows_to_read)
posso cambiare il tipo di caratteristiche categoriche a 'categoria':
non_categorial_features = ['orig_destination_distance', 'srch_adults_cnt', 'srch_children_cnt', 'srch_rm_cnt', 'cnt'] for categorical_feature in list(train_small.columns): if categorical_feature not in non_categorial_features: train_small[categorical_feature] = train_small[categorical_feature].astype('category')
Io uso una codifica a caldo:
train_small_with_dummies = pd.get_dummies(train_small, sparse=True)
Il problema è che la parte 3'rd spesso si blocca, anche se sto usando una macchina forte.
Pertanto, senza una codifica a caldo non è possibile eseguire alcuna selezione di funzioni, per determinare l'importanza delle funzioni.
Che cosa mi consiglia?
1. Ho un set di dati che ha l'80% delle variabili categoriali. A mio avviso, devo usare una codifica a caldo se voglio usare un classificatore per questi dati, altrimenti nel caso in cui non si stia facendo una codifica a caldo il classificatore non tratterà le variabili categoriali nel modo corretto? C'è un'opzione da non codificare? 2. Se uso pd.get_dummies (train_small, sparse = True) con il saprse = True - non risolve il problema di memoria? 3. Come devo affrontare un simile problema? – avicohen
Come ho detto, ci sono due opzioni. 1) Una codifica a caldo -> converte ogni livello in funzioni categoriali in una nuova colonna. 2) Codifica fittizia -> converte ogni colonna in rappresentazioni numeriche. Modificherò la mia risposta sopra per essere più chiara. Ma puoi semplicemente eseguire la funzione che ho fornito e dovrebbe funzionare – Wboy
Qualcosa non è chiaro per me: se uso pd.get_dummies, converte ogni livello in feature categoriali in una nuova colonna. Comunque dici che i dummy sono solo livelli? A mio avviso, se non utilizzo una codifica a caldo, perdo parte del significato dei dati e l'algoritmo non li tratta correttamente? – avicohen