在使用所有可能的预测变量拟合模型时,它会抛出此错误 TypeError: ufunc 'isfinite' not supported

Posted

技术标签:

【中文标题】在使用所有可能的预测变量拟合模型时,它会抛出此错误 TypeError: ufunc \'isfinite\' not supported【英文标题】:While fitting the model with all possible predictors it throws this error TypeError: ufunc 'isfinite' not supported在使用所有可能的预测变量拟合模型时,它会抛出此错误 TypeError: ufunc 'isfinite' not supported 【发布时间】:2020-07-17 11:12:30 【问题描述】:
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
dataset=pd.read_csv('50_Startups.csv')
x=dataset.iloc[:,:-1].values
y=dataset.iloc[:,4].values
from sklearn.preprocessing import LabelEncoder ,OneHotEncoder
from sklearn.compose import ColumnTransformer
labelencoder_x=LabelEncoder()
x[:,3]=labelencoder_x.fit_transform(x[:,3])

columntransformer = ColumnTransformer([("Country", OneHotEncoder(), [3])], remainder = 'passthrough')
x = columntransformer.fit_transform(x)
x=x[:,1:]
from sklearn.model_selection import train_test_split
xtrain,xtest,ytrain,ytest=train_test_split(x,y,test_size=1/3,random_state=0)
from sklearn.linear_model import LinearRegression
regressor=LinearRegression()
regressor.fit(xtrain, ytrain)
ypred=regressor.predict(xtest)

import statsmodels.api as sm
x=np.append(arr=np.ones((50,1)).astype(float),values=x,axis=1)

xopt=x[:,[0,1,2,3,4,5]] 


regressorols=sm.OLS(endog = y,exog = xopt).fit()
regressorols.summary()

输出是

*runcell(0, 'C:/Users/patil/Downloads/P14-Machine-Learning-AZ-Template-Folder/Machine 学习 A-Z 模板文件夹/第 2 部分 - 回归/第 5 节 - 多个 线性回归/untitled0.py') Traceback(最近一次调用最后一次):

文件 "C:\Users\patil\Downloads\P14-Machine-Learning-AZ-Template-Folder\Machine 学习 A-Z 模板文件夹\第 2 部分 - 回归\第 5 节 - 多个 线性回归\untitled0.py",第 36 行,在 regressorols=sm.OLS(endog = y,exog = xopt).fit()

文件 "C:\Users\patil\anaconda3\lib\site-packages\statsmodels\regression\linear_model.py", 第 859 行,在 init 中 hasconst=hasconst, **kwargs)

文件 "C:\Users\patil\anaconda3\lib\site-packages\statsmodels\regression\linear_model.py", 第 702 行,在 init 中 weights=weights, hasconst=hasconst, **kwargs)

文件 "C:\Users\patil\anaconda3\lib\site-packages\statsmodels\regression\linear_model.py", 第 190 行,在 init 中 super(RegressionModel, self).init(endog, exog, **kwargs)

文件 "C:\Users\patil\anaconda3\lib\site-packages\statsmodels\base\model.py", 第 236 行,在 init 中 super(LikelihoodModel, self).init(endog, exog, **kwargs)

文件 "C:\Users\patil\anaconda3\lib\site-packages\statsmodels\base\model.py", 第 77 行,在 init 中 **kwargs)

文件 "C:\Users\patil\anaconda3\lib\site-packages\statsmodels\base\model.py", 第 100 行,在 _handle_data 中 data = handle_data(endog, exog, missing, hasconst, **kwargs)

文件 "C:\Users\patil\anaconda3\lib\site-packages\statsmodels\base\data.py", 第 672 行,在句柄数据中 **kwargs)

文件 "C:\Users\patil\anaconda3\lib\site-packages\statsmodels\base\data.py", 第 87 行,在 init 中 self._handle_constant(hasconst)

文件 "C:\Users\patil\anaconda3\lib\site-packages\statsmodels\base\data.py", 第 132 行,在 _handle_constant 中 如果不是 np.isfinite(exog_max).all():

TypeError: ufunc 'isfinite' 不支持输入类型,并且 根据

,输入无法安全地强制转换为任何支持的类型

强制转换规则 ''safe''*

【问题讨论】:

【参考方案1】:
import statsmodels.api as sm
x=np.append(arr=np.ones((50,1)).astype(float),values=x,axis=1)
x=x.astype(float)
xopt=x[:,[0,1,2,3,4,5]] 


regressorols=sm.OLS(endog = y,exog = xopt).fit()
regressorols.summary()

工作

【讨论】:

虽然这段代码可能会解决问题,但一个好的答案还应该解释代码的什么以及它如何提供帮助。

以上是关于在使用所有可能的预测变量拟合模型时,它会抛出此错误 TypeError: ufunc 'isfinite' not supported的主要内容,如果未能解决你的问题,请参考以下文章

实体模型上的自定义吸气剂?

离子服务抛出此错误代码请帮助

为啥 pytest 在测试模型创建时会抛出“AttributeError:'NoneType'对象没有属性'_meta'”错误?

我创建了一个启用 CORS 的简单节点服务器。但是当我做 node server.js 时,它会抛出错误

Java中,对多线程访问同一变量(并发访问)的认识

JVM内存模型及垃圾回收机制