Как объединить предварительно обработанные данные, которые были преобразованы двумя разными преобразователями? - PullRequest
0 голосов
/ 08 июня 2019

Так что я сейчас работаю над проектом машинного обучения на python.Данные имеют как категориальные столбцы, так и числовые столбцы.Чтобы избежать отслеживания данных и сохранить размер обучающего набора и тестового набора, мне нужно разделить шаги для двух предварительных обработок:

, прежде чем выполнять разделение по поездам / тестам, я должен выполнить одно горячее кодирование для категориальных функций.

После разделения поезда / теста я выполняю стандартный скейлер для числовых функций.

Однако, когда я пытаюсь выполнить вышеуказанный шаг, я сталкиваюсь с некоторыми проблемами.


from sklearn.model_selection import StratifiedShuffleSplit

split = StratifiedShuffleSplit(n_splits=1,
                               test_size=0.2, random_state=42)
for train_index, test_index in split.split(data, data["Revenue"]):
    train_set = data.loc[train_index]
    test_set = data.loc[test_index] 

cat_attribs = list(data.columns)[10:17]
num_attribs = list(data.columns)[0:5] + list(data.columns)[5:10]
features = cat_attribs+num_attribs
X_raw = data[features]
#one hot encoding pre-split
from sklearn.preprocessing import StandardScaler
from sklearn.pipeline import Pipeline
from sklearn.compose import ColumnTransformer
from sklearn.preprocessing import OneHotEncoder
from sklearn.preprocessing import LabelEncoder

onehot_encoder =  OneHotEncoder(sparse=False)
X_cat_1hot = onehot_encoder.fit_transform(X_raw[cat_attribs])

#standard scaling after train-test split
X_num_train = X_raw[num_attribs].loc[train_index]
sc = StandardScaler()
X_num_train1 = sc.fit_transform(X_num_train)


#error occurs, the dimensions do not conform 

X_train1 = X_cat_1hot[train_index]+X_train_num

ValueError Traceback (последний последний вызов) в ----> 1 X_train1 = X_cat_1hot [train_index] + X_train_num

ValueError: операнды не могуттранслироваться вместе с фигурами (9864,65) (9864,10)

...