Многомерная множественная линейная регрессия с использованием Sklearn - PullRequest
0 голосов
/ 24 августа 2018

Я хочу обучить линейную модель Y = M_1*X_1 + M_2*X_2, используя sklearn с многомерными входными и выходными выборками (например, векторами).Я попробовал следующий код:

from sklearn import linear_model
from pandas import DataFrame 

x1 = [[1,2],[2,3],[3,4]]
x2 = [[1,1],[3,2],[3,5]]
y = [[1,0],[1,2],[2,3]]
model = {
    'vec1': x1,
    'vec2': x2,
    'compound_vec': y}

df = DataFrame(model, columns=['vec1','vec2','compound_vec'])
x = df[['vec1','vec2']].astype(object)
y = df['compound_vec'].astype(object)
regr = linear_model.LinearRegression()
regr.fit(x,y)

Но я получаю следующую ошибку:

regr.fit(x,y)
 ...
array = array.astype(np.float64)
ValueError: setting an array element with a sequence.

Кто-нибудь знает, что не так с кодом?и если это правильный способ тренироваться Y = M_1*X_1 + M_2*X_2?

1 Ответ

0 голосов
/ 24 августа 2018

Просто сгладьте списки x1, x2 и y, и все готово. Один из способов сделать это - использовать массивы следующим образом:

import numpy as np
x1 =np.array(x1).flatten()
x2 =np.array(x2).flatten()
y =np.array(y).flatten()

Второй способ сделать это - использовать ravel как:

x1 =np.array(x1).ravel()
x2 =np.array(x2).ravel()
y =np.array(y).ravel()

Третий способ без использования NumPy - использование понимания списка:

x1 =[j for i in x1 for j in i]
x2 =[j for i in x2 for j in i]
y =[j for i in y for j in i]

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

выход

LinearRegression(copy_X=True, fit_intercept=True, n_jobs=1, normalize=False)
...