Я пытался выполнить кодирование ответа для своих функций. Найдите код ниже. step-1) Я нашел таблицу ответов (тип dict) для каждой уникальной функции с ключом в качестве функции / категории в этом категориальном столбце.
ПРИМЕР:
response_dict=response_table('teacher_prefix',xtrain,ytrain)
{'mrs': [0.153559717667982, 0.846440282332018],
'ms': [0.16716392464410537, 0.8328360753558947],
'mr': [0.1625806451612903, 0.8374193548387097],
'teacher': [0.20208023774145617, 0.7979197622585439],
'dr': [0.3333333333333333, 0.6666666666666666]}
step- 2) теперь в моем xtrain [feature] я попытался заменить значения для каждой категории их значениями вероятности, используя приведенный выше словарь.
пожалуйста, найдите код ниже
def encoding_train_test(feature,xtrain,ytrain):
lst1=[]
lst2=[]
final_list=[]
df=pd.DataFrame()
df[feature]=xtrain[feature].values
response_dict=response_table(feature,xtrain,ytrain)
for i in df[feature]:
if i in response_dict.keys():
lst1.append(response_dict[i][0])
lst2.append(response_dict[i][1])
else:
lst1.append(0.5)
lst2.append(0.5)
#df['class_0']=lst1
#df['class_1']=lst2
for i,j in zip(lst1,lst2):
final_list.append([i,j])
return final_list
OUTPUT:
[[0.153559717667982, 0.846440282332018],
[0.153559717667982, 0.846440282332018],
[0.153559717667982, 0.846440282332018],
[0.16716392464410537, 0.8328360753558947],
[0.153559717667982, 0.846440282332018],
[0.153559717667982, 0.846440282332018],
[0.16716392464410537, 0.8328360753558947],...
его список списков
, но когда я пытаюсь использовать функцию hstack, она выдает мне ошибки ниже
ValueError: блоки должны быть двухмерными (если я рассматриваю только категориальные особенности)
ValueError: не удалось передать входной массив из формы (33500,1) в форму (33500) (если я также рассматриваю числовые особенности)
любезно дайте мне знать, как решить эту проблему.