ValueError: не удалось передать входной массив из формы (33500,1) в форму (33500) - PullRequest
0 голосов
/ 28 мая 2020

Я пытался выполнить кодирование ответа для своих функций. Найдите код ниже. 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) (если я также рассматриваю числовые особенности)

любезно дайте мне знать, как решить эту проблему.

...