我正在尝试做一个基本的线性回归示例,我有一个示例数据集,包含萼片长度、萼片宽度、花瓣长度、花瓣宽度。然而,在我的论坛中,如果我尝试任何比 "sepal_length ~ petal_length"
喜欢 "sepal_length ~ petal_length + sepal_width + petal_width"
我得到了错误 NameError: name 'sepal_width' is not defined
这发生在我使用 +
运算符从数据集中添加第三列。如果我单独添加这些列,它们就可以工作。我做错了什么?
代码如下:
irises = pd.read_csv("data/iris.csv")
model1 = sm.OLS.from_formula("sepal_length ~ petal_length", data=irises).fit()
print(model1.summary())
xs = pd.DataFrame({'petal_length': np.linspace(irises.petal_length.min(), irises.petal_length.max(), 100)})
ys = model1.predict(xs)
sns.scatterplot(x='petal_length', y='sepal_length', data=irises)
plt.plot(xs, ys, color='black', linewidth=4)
plt.show()
例如
这项工作: model1 = sm.OLS.from_formula("sepal_length ~ petal_length", data=irises).fit()
这不起作用: model1 = sm.OLS.from_formula("sepal_length ~ petal_length + sepal_width", data=irises).fit()
我得到的错误是没有定义分隔带宽度。对于我添加的任何项,我都会得到相同的错误。
但这确实有效: model1 = sm.OLS.from_formula("sepal_length ~ sepal_width", data=irises).fit()
这也是: model1 = sm.OLS.from_formula("sepal_length ~ petal_length + np.power(petal_length, 2)", data=irises).fit()
暂无答案!
目前还没有任何答案,快来回答吧!