statmodels OLS дает ошибку типа Python в Python - PullRequest
0 голосов
/ 14 ноября 2018

Я пытаюсь приспособить набор функций к модели линейной регрессии OLS statsmodel.

Я добавляю несколько функций одновременно. С первыми двумя функциями он работает отлично. Но когда я продолжаю добавлять новые функции, это выдает мне ошибку.

Traceback (most recent call last):
  File "read_xml.py", line 337, in <module>
    model = sm.OLS(Y, X).fit()
...
  File "D:\pythonprojects\testproj\test_env\lib\site-packages\statsmodels\base\data.py", line 132, in _handle_constant
    if not np.isfinite(ptp_).all():
TypeError: ufunc 'isfinite' not supported for the input types, and the inputs could not be safely coerced to any supported types according to the casting rule ''safe''

Поэтому я изменил тип ввода, используя

X = X.astype(float)

Затем появляется другая ошибка.

Traceback (most recent call last):
  File "read_xml.py", line 339, in <module>
    print(model.summary())
...
File "D:\pythonprojects\testproj\test_env\lib\site-packages\scipy\stats\_distn_infrastructure.py", line 1824, in sf
    place(output, (1-cond0)+np.isnan(x), self.badvalue)
TypeError: ufunc 'isnan' not supported for the input types, and the inputs could not be safely coerced to any supported types according to the casting rule ''safe''

Мой код выглядит следующим образом.

new_df0 = pd.concat([df_lex[0], summary_df[0]], axis = 0, join = 'inner')
new_df1 = pd.concat([df_lex[1], summary_df[1]], axis = 0, join = 'inner')
data = pd.concat([new_df0, new_df1], axis = 1)
print(data.shape)
X = data.values[0:6,:]
Y = data.values[6,:]
Y = Y.reshape(1,88)
X = X.T
Y = Y.T
X = X.astype(float)
model = sm.OLS(Y, X).fit()
predictions = model.predict(X)
print(model.summary())

Первая ошибка, вызванная в model = sm.OLS(Y,X).fit() Вторая ошибка, вызванная в model.summary()

Но с некоторыми другими функциями ошибок нет.

new_df0 = pd.concat([df_len[0], summary_df[0]], axis = 0, join = 'inner')
new_df1 = pd.concat([df_len[1], summary_df[1]], axis = 0, join = 'inner')

data = pd.concat([new_df0, new_df1], axis = 1)
print(data.shape)
X = data.values[0:2,:]
Y = data.values[2,:]
Y = Y.reshape(1,88)
X = X.T
Y = Y.T
X = X.astype(float)
print(X.shape)
print(Y.shape)

model = sm.OLS(Y, X).fit()
predictions = model.predict(X)
print(model.summary())

Похоже, когда у меня есть только две функции, это работает. Но когда добавляются разные 6 функций, это дает ошибки. Моя главная задача - понять ошибку. Потому что я читал аналогичный вопрос, связанный с графиками в Python. Но это срабатывает во встроенных функциях, а не в моем коде. Любые предложения по отладке высоко ценится.

Ответы [ 2 ]

0 голосов
/ 18 ноября 2018
Y.astype(float)

сделал свое дело.

0 голосов
/ 15 ноября 2018

пожалуйста, используйте

model=sm.OLS(df.Y,df.X, missing='drop').fit()

Похоже, в некоторой переменной есть значение nan. По умолчанию отсутствует значение none, и причиной может быть .

...