Существует несколько подходов к нормализации данных обучающего / тестового набора с использованием LocalEncoder, LabelBinarizer, но они применяются к одному столбцу
Чтобы создать бинаризацию на основе двух столбцов (для маркировки вашего набора данных), создайтевременный DataFrame и сделайте, как показано ниже:
import timeit
import numpy as np
import pandas as pd
def two_col_binarizer(df, col1, col2):
start_time = timeit.default_timer()
arcol1 = df[col1].unique()
arcol2 = df[col2].unique()
arbdc = np.empty((arcol1.size*arcol2.size), dtype=object)
for i in range(arcol1.size):
for j in range(arcol2.size):
arbdc[i*arcol2.size+j] = arcol1[i]+arcol2[j]
num_rows, num_cols = df.shape
tempdf = pd.DataFrame(index=range(0, num_rows), columns = arbdc)
tempdf = tempdf.fillna(0)
for i in range(len(df.index)):
tempdf.at[i, df['device.deviceCategory'][i]+df['device.browser'][i]] = 1
print(timeit.default_timer() - start_time)
return tempdf
# for example your training data set has devicecategory and browser columns
df=df.join(two_col_binarizer(df, 'devicecategory', 'browser'))