ValueError: фигуры (993,228) и (1,228) не выровнены: 228 (тусклый 1)! = 1 (тусклый 0) - PullRequest
0 голосов
/ 02 января 2019

Я создал модель линейной регрессии OLS в Python, и когда я предсказываю для определенного значения, я получаю ошибку.

Мой код ниже:

df=pd.read_csv("smatrix.csv",index_col=0)
import statsmodels.api as sm

x=df.iloc[:,:-1]
y=df.Rating

est = sm.OLS(y.astype(float), x.astype(float))
results=est.fit()

op=list()
for i in df.columns:
    if 'bad' == i:
        op.append(1)
    else:
        op.append(0)
op=op[:-1]
X5=np.array(op).reshape(1,-1)
y1=est.predict(X5)

Ошибка, которую яЯ получаю

ValueError: shapes (993,228) and (1,228) not aligned: 228 (dim 1) != 1 (dim 0)

Форма X5 (1, 228)

Форма X (993, 228)

Форма Y (993,)

1 Ответ

0 голосов
/ 02 января 2019

est.predict() ожидает, что первый аргумент будет params ( больше здесь ), но вы передаете X [5] формы 1, 128. Сообщение об ошибке выдается, когда модель пытается умножить X с параметрами (в данном случае X [5]).

X -> (993, 128)
params -> (1, 128)

Эти две матрицы (X, параметры) не могут быть умножены, поскольку столбцы X (128) не выровнены по строкам параметров (1).

Решение

Используйте параметры, полученные с помощью метода подгонки.

y1=est.predict(results.params, X5)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...