【发布时间】:2023-03-23 16:23:02
【问题描述】:
我一直在尝试匹配输出,但没有得到我从 df 获得的列名,这些列名是我放入 statmodels 的。
import pandas
import statsmodels.api as statmodel
df = pandas.read_csv('fastfood.csv')
df = df[['total_fat', 'sat_fat', 'cholesterol', 'sodium','calories']]
X = df[['total_fat', 'sat_fat', 'cholesterol', 'sodium']].values
Y = df[['calories']].values
X = statmodel.add_constant(X)
model = statmodel.OLS(Y, X).fit()
print(model.mse_total.round(2))
print(model.rsquared.round(2))
print(model.params.round(2))
print(model.pvalues.round(2))
我得到的输出:
79770.18
0.9
[71.73 9.1 0.6 0.21 0.16]
[0. 0. 0.64 0.07 0. ]
我需要的输出:
79770.18
0.9
-{0,}71.73
total_fat 9.10
sat_fat . ..0.60
cholesterol 0.21
sodium... ...0.16
dtype: float64
{0,}0.00
total_fat 0.00
sat_fat. ..0.64
cholesterol...0.07
sodium .. ..0.00
dtype: float64
【问题讨论】:
-
试试
model.params.round(2).dtype.names输出是什么? -
@kinshukdua 对于
model.params.round(2).dtype.names,我得到无 -
如果从 X 和 Y 的定义中删除“.values”会发生什么?
-
@Simone 感谢它现在工作。你是最棒的
-
@AsadKareem 它对我有用,请参阅我的答案。我不知道为什么它不适合你,也许你使用的是旧版本的 statsmodels(我的是 0.12.2)。
标签: python pandas statmodels