Я имею дело со знаменитым вызовом Kaggle "Цены на дома".Я хочу обучить свой набор данных с помощью sklearn.linear_model LinearRegression
После прочтения следующей статьи: https://developers.google.com/machine-learning/crash-course/representation/feature-engineering
я написал функцию, преобразующую все значения String в моем фрейме данных DataFrame в списки.Например, исходные значения объектов могут выглядеть следующим образом [Ex, Gd, Ta, Po], а после преобразования они будут выглядеть следующим образом: [1,0,0,0] [0,1,0,0] [0,0,1,0] [0,0,0,1].
Когда я пытаюсь обучить мои данные, я получаю следующую ошибку:
Traceback (последний вызов последний): Файл "C: /Users/Owner/PycharmProjects/HousePrices/main.py", строка 27, в файле linereg.fit (train_df, target) Файл "C: \ Users \ Владелец \ PycharmProjects \ HousePrices \ venv \ lib \ site-packages \ sklearn \ linear_model \ base.py ", строка 458, в подгонке y_numeric = True, multi_output = True) Файл" C: \ Users \ Владелец \ PycharmProjects \ HousePrices \ venv \ lib \ site-packages \ sklearn \ utils \ "validation.py ", строка 756, в check_X_y оценщик = оценщик) Файл" C: \ Users \ Owner \ PycharmProjects \ HousePrices \ venv \ lib \ site-packages \ sklearn \ utils \ validation.py ", строка 567, в массиве check_array= array.astype (np.float64) ValueError: установка элемента массива с последовательностью.
Это происходит только тогда, когда я преобразовываю некоторые столбцы, как я объяснил.
IsЕсть ли способ обучить модель линейной регрессии с векторами в качестве значений?
Это моя функция преобразования:
def feature_to_boolean_vector(df, feature_name, new_name):
vectors_list = [] #each tuple will represent an option
feature_options = df[feature_name].unique()
feature_options_length = len(feature_options)
# creating a list the size of feature_options_length, all 0's
list_to_be_vector = [0 for i in range(feature_options_length)]
for i in range(feature_options_length):
list_to_be_vector[i] = 1 # inserting 1 representing option number i
vectors_list.append(list_to_be_vector.copy())
list_to_be_vector[i] = 0
mapping = dict(zip(feature_options, vectors_list)) # dict from values to vectors
df[new_name] = df[feature_name].map(mapping)
df.drop([feature_name], axis=1, inplace=True)
И это моя попытка поезда (после предварительной обработки):
linereg = LinearRegression()
linereg.fit(train_df, target)
Заранее спасибо.