【问题标题】: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''*

【问题讨论】:

    标签: python


    【解决方案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()
    

    工作

    【讨论】:

    • 虽然这段代码可能会解决问题,但一个好的答案还应该解释代码的什么以及它如何提供帮助。
    猜你喜欢
    • 1970-01-01
    • 2019-02-13
    • 2020-09-29
    • 2022-11-17
    • 1970-01-01
    • 2020-02-16
    • 2018-01-08
    • 2019-12-25
    • 2019-11-28
    相关资源
    最近更新 更多