在使用所有可能的预测变量拟合模型时,它会抛出此错误 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'”错误?