我正在 Python 上运行一个程序,并尝试从数组生成统计输出。
代码行:
regressor_OLS = sm.OLS(y,X_opt).fit()
给出了一个精心设计的错误。
这是代码
将 numpy 导入为 np
导入 matplotlib.pyplot 作为 plt
将熊猫导入为 pd
数据集 = pd.read_csv('50_Startups.csv')
X = dataset.iloc[:,:-1].values
y = dataset.iloc[:,4].values
打印(数据集)
从 sklearn.preprocessing 导入 OneHotEncoder
从 sklearn.compose 导入 ColumnTransformer
ct = ColumnTransformer([("Country", OneHotEncoder(), [3])], 余数 = 'passthrough')
X = ct.fit_transform(X)
X = X[:, 1:]
从 sklearn.model_selection 导入 train_test_split
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size = 0.2, random_state =0)
从 sklearn.linear_model 导入 LinearRegression
回归器 = LinearRegression()
regressor.fit(X_train, y_train)
y_pred = regressor.predict(X_test)
将 statsmodels.api 导入为 sm
X= np.append(arr = np.ones((50,1)).astype(int), values = X,axis =1)
X_opt = X[:,[0,1,2,3,4,5]]
regressor_OLS = sm.OLS(y,X_opt).fit()
regressor_OLS.summary()
```蟒蛇
将 numpy 导入为 np
输入类型不支持 ufunc 'isfinite',并且无法根据转换规则 ''safe'' 将输入安全地强制转换为任何受支持的类型
文件“C:UsersmoranaDocumentsAIUDEMYMachine Learning A-ZPart 2 - RegressionSection 5 - Multiple Linear Regressionmultiple linear regression.py”,第 46 行,在
regressor_OLS = sm.OLS(y,X_opt).fit()
文件“C:UsersmoranaAppDataLocalContinuumanaconda3libsite-packagesstatsmodelsregressionlinear_model.py”,第 838 行,在 __init__ 中
hasconst=hasconst, **kwargs)
文件“C:UsersmoranaAppDataLocalContinuumanaconda3libsite-packagesstatsmodelsregressionlinear_model.py”,第684行,在__init__
权重=权重,hasconst=hasconst,**kwargs)
文件“C:UsersmoranaAppDataLocalContinuumanaconda3libsite-packagesstatsmodelsregressionlinear_model.py”,第 196 行,在 __init__ 中
super(RegressionModel, self).__init__(endog, exog, **kwargs)
文件“C:UsersmoranaAppDataLocalContinuumanaconda3libsite-packagesstatsmodelsbasemodel.py”,第 216 行,在 __init__ 中
super(LikelihoodModel, self).__init__(endog, exog, **kwargs)
文件“C:UsersmoranaAppDataLocalContinuumanaconda3libsite-packagesstatsmodelsbasemodel.py”,第 68 行,在 __init__ 中
**夸格)
文件“C:UsersmoranaAppDataLocalContinuumanaconda3libsite-packagesstatsmodelsbasemodel.py”,第 91 行,在 _handle_data 中
数据 = 句柄数据(endog,exog,缺失,hasconst,**kwargs)
文件“C:UsersmoranaAppDataLocalContinuumanaconda3libsite-packagesstatsmodelsbasedata.py”,第 635 行,在 handle_data
**夸格)
文件“C:UsersmoranaAppDataLocalContinuumanaconda3libsite-packagesstatsmodelsbasedata.py”,第 80 行,在 __init__ 中
self._handle_constant(hasconst)
_handle_constant 中的文件“C:UsersmoranaAppDataLocalContinuumanaconda3libsite-packagesstatsmodelsbasedata.py”,第 125 行
如果不是 np.isfinite(ptp_).all():
类型错误:输入类型不支持 ufunc 'isfinite',并且无法根据转换规则 ''safe'' 将输入安全地强制转换为任何受支持的类型
间谍 4.0.0
1.17.4 3.7.3(默认,2019 年 4 月 24 日,15:29:51)[MSC v.1915 64 位 (AMD64)]
嘿!
您的 X_opt 数组具有 object 的 dtype,这可能会导致错误。 尝试将其更改为浮动。 例如你可以使用这个:
X= np.append(arr = np.ones((50,1)).astype(int), values = X,axis =1)
X_opt = X[:,[0,1,2,3,4,5]]
X_opt = np.array(X_opt, dtype=float)
玩得开心:D
感谢@filip-stolinski 的解决方案
@filip-stolinski 非常感谢您的解决方案。 它绝对有效
关闭。 如果需要,请重新打开或打开一个新问题。
谢谢@filip-stolinski
谢谢
最有用的评论
嘿!
您的 X_opt 数组具有 object 的 dtype,这可能会导致错误。 尝试将其更改为浮动。 例如你可以使用这个:
X= np.append(arr = np.ones((50,1)).astype(int), values = X,axis =1)
X_opt = X[:,[0,1,2,3,4,5]]
X_opt = np.array(X_opt, dtype=float)
玩得开心:D