J'ai transformé l'ensemble de données d'apprentissage et de test par la méthode sklearn OneHotEncoding. Cependant, les résultats trnsformés ont une forme de type différente. Il est donc impossible de l'appliquer à d'autres algorithmes comme la régression logistique.Problème de mappage OneHotEncoding entre les données d'apprentissage et les données de test
Comment remodeler les données de test en fonction de la forme du jeu de données d'apprentissage?
Meilleur Regardings, Chris
import pandas as pd
import numpy as np
from sklearn.preprocessing import OneHotEncoder, LabelEncoder
def data_transformation(data, dummy):
le = LabelEncoder()
# Encoding the columns with multiple categorical levels
for col1 in dummy:
le.fit(data[col1])
data[col1] = le.transform(data[col1])
dummy_data = np.array(data[dummy])
enc = OneHotEncoder()
enc.fit(dummy_data)
dummy_data = enc.transform(dummy_data).toarray()
if __name__ == '__main__':
data = pd.read_csv('train.data', delimiter=',')
data_test = pd.read_csv('test.data', delimiter=',')
dummy_columns = ['Column1', 'Column2']
data = data_transformation(data, dummy_columns)
data_test = data_transformation(data_test, dummy_columns)
# result
# data shape : (200000, 71)
# data_test shape : (15000, 32)
Etes-vous sûr des indentations? Je vois que vous faites beaucoup de modifications à ce poste. –
J'ai terminé ce post .. –
Vous allez ajuster deux fois OneHotEncoder() et LabelEncoder(): un pour 'data' et un autre pour' data_test'. C'est pourquoi vous obtenez la discordance dans la forme. Ces encodeurs ne devraient être 'fit()' que sur les données de train, et seulement appelés 'transform()' pour les données de test. –