【问题标题】:statsmodels raises TypeError: ufunc 'isfinite' not supported for the input types in Optimising Inputstatsmodels 引发 TypeError:优化输入中的输入类型不支持 ufunc 'isfinite'
【发布时间】:2020-07-28 06:32:52
【问题描述】:

我在运行我的代码时需要帮助,它显示错误:-“输入类型不支持 ufunc 'isfinite',并且根据强制转换规则无法安全地将输入强制转换为任何支持的类型''安全''"

我找到了几个解决方案(statsmodels raises TypeError: ufunc 'isfinite' not supported for the input types 将数据类型更改为 float 或 int 仍然无法正常工作。谁能告诉我我在下面的代码中做错了什么:

import statsmodels.api as sm

X = np.append(arr = np.ones((50,1)).astype(int),values=X,axis=1)

X.astype('float64')

X_opt = X[:,[0,1,2,3,4,5]]

regressor_ols = sm.OLS(endog=y,exog=X_opt).fit()

import statsmodels.regression.linear_model as lm

X = np.append(arr = np.ones((50,1)).astype(int),values=X,axis=1)

X.astype('float64')

X_opt = X[:,[0,1,2,3,4,5]]

regressor_ols = lm.OLS(endog=y,exog=X_opt).fit()


regressor_ols = lm.OLS(endog=y,exog=X_opt).fit()
Traceback (most recent call last):
  File "<input>", line 1, in <module>
  File "C:\Users\hp\PycharmProjects\DataScientist\venv\lib\site-packages\statsmodels\regression\linear_model.py", line 858, in __init__
    super(OLS, self).__init__(endog, exog, missing=missing,
  File "C:\Users\hp\PycharmProjects\DataScientist\venv\lib\site-packages\statsmodels\regression\linear_model.py", line 701, in __init__
    super(WLS, self).__init__(endog, exog, missing=missing,
  File "C:\Users\hp\PycharmProjects\DataScientist\venv\lib\site-packages\statsmodels\regression\linear_model.py", line 190, in __init__
    super(RegressionModel, self).__init__(endog, exog, **kwargs)
  File "C:\Users\hp\PycharmProjects\DataScientist\venv\lib\site-packages\statsmodels\base\model.py", line 236, in __init__
    super(LikelihoodModel, self).__init__(endog, exog, **kwargs)
  File "C:\Users\hp\PycharmProjects\DataScientist\venv\lib\site-packages\statsmodels\base\model.py", line 76, in __init__
    self.data = self._handle_data(endog, exog, missing, hasconst,
  File "C:\Users\hp\PycharmProjects\DataScientist\venv\lib\site-packages\statsmodels\base\model.py", line 100, in _handle_data
    data = handle_data(endog, exog, missing, hasconst, **kwargs)
  File "C:\Users\hp\PycharmProjects\DataScientist\venv\lib\site-packages\statsmodels\base\data.py", line 671, in handle_data
    return klass(endog, exog=exog, missing=missing, hasconst=hasconst,
  File "C:\Users\hp\PycharmProjects\DataScientist\venv\lib\site-packages\statsmodels\base\data.py", line 87, in __init__
    self._handle_constant(hasconst)
  File "C:\Users\hp\PycharmProjects\DataScientist\venv\lib\site-packages\statsmodels\base\data.py", line 132, in _handle_constant
    if not np.isfinite(exog_max).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''

【问题讨论】:

  • 下一次,请花点时间看看如何正确格式化您的代码(这次为您完成)。

标签: python python-3.x numpy machine-learning data-science


【解决方案1】:

这个:

X = np.append(arr = np.ones((50,1)).astype(int),values=X,axis=1)

创建一个 dtype int 的数组,但您的分类器需要浮点值。看起来你想用那个来纠正这个问题:

X.astype('float64')

但这什么也没做,因为你从来没有分配给它(正确的应该是X = X.astype('float64'))。

我建议您从数组创建中删除 astype(int)

X = np.append(arr=np.ones((50,1)), values=X, axis=1)

【讨论】:

  • 非常感谢。抱歉,我是学习数据科学技能的新手。
  • 如果我的回答解决了你的问题,请考虑采纳。
猜你喜欢
  • 2020-02-16
  • 2020-09-29
  • 2019-11-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-01-08
  • 1970-01-01
  • 2022-12-17
相关资源
最近更新 更多