Я абсолютный новичок в программировании на Python и в настоящее время изучаю базовую статистику по нему.
я столкнулся с
"PatsyError: Error evaluating factor: NameError:"
по коду с pred = model.predict(pd.DataFrame(calo['wt'])
Ниже мой код:
# For reading data set
# importing necessary libraries
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
# reading a csv file using pandas library
calo=pd.read_csv("/Users/Sanjeev/Desktop/Excel R Assignments/Simple Linear Regression/calories_consumed.csv")
calo.columns = ['wt','cal']
np.corrcoef(calo.wt,calo.cal)
plt.plot(calo.wt,calo.cal,"bo");plt.xlabel("WEIGHT");plt.ylabel("CALORIES")
# For preparing linear regression model we need to import the statsmodels.formula.api
import statsmodels.formula.api as smf
model = smf.ols("wt~cal",data=calo).fit()
# For getting coefficients of the varibles used in equation
model.params
# P-values for the variables and R-squared value for prepared model
model.summary()
model.conf_int(0.05) # 95% confidence interval
pred = model.predict(pd.DataFrame(calo['wt']))Это вызывает ошибку:
Traceback (most recent call last):
File "<ipython-input-43-4fcbf1ee1921>", line 1, in <module>
pred = model.predict(pd.DataFrame(calo['wt']))
File "/anaconda3/lib/python3.7/site-packages/statsmodels/base/model.py", line 837, in predict
exog = dmatrix(design_info, exog, return_type = "dataframe")
File "/anaconda3/lib/python3.7/site-packages/patsy/highlevel.py", line 291, in dmatrix
NA_action, return_type)
File "/anaconda3/lib/python3.7/site-packages/patsy/highlevel.py", line 169, in _do_highlevel_design
return_type=return_type)
File "/anaconda3/lib/python3.7/site-packages/patsy/build.py", line 888, in build_design_matrices
value, is_NA = _eval_factor(factor_info, data, NA_action)
File "/anaconda3/lib/python3.7/site-packages/patsy/build.py", line 63, in _eval_factor
result = factor.eval(factor_info.state, data)
File "/anaconda3/lib/python3.7/site-packages/patsy/eval.py", line 566, in eval
data)
File "/anaconda3/lib/python3.7/site-packages/patsy/eval.py", line 551, in _eval
inner_namespace=inner_namespace)
File "/anaconda3/lib/python3.7/site-packages/patsy/compat.py", line 43, in call_and_wrap_exc
exec("raise new_exc from e")
File "<string>", line 1, in <module>
PatsyError: Error evaluating factor: NameError: name 'cal' is not defined
wt~cal
^^^Нужна ваша помощь, чтобы решить это.
Заранее спасибо. :)






Глядя на API статистических моделей здесь, похоже, что они ожидают в качестве входных параметров параметры, а не ковариаты.
Итак, что вы, вероятно, хотите, это
pred = model.predict(model.params)
вам нужно поместить переменную, на основе которой вы собираетесь решить зависимую переменную (y)
model = statsmodels.formula.api.ols('y ~x ',data=df)
model.predict(pd.DataFrame(df['x']))
У меня была эта проблема. Я делал что-то вроде этого:
for _, i in frame.iterrows()
model.predict(i)
Это не обеспечивает его необходимыми заголовками. Вы должны сделать это:
for _, i in frame.iterrows()
model.predict(pd.DataFrame([i]))
Привет @mortonjt! Я только что перепроверил код, и оказалось, что это ошибка кодирования. Его входные параметры такие же, как я упоминал выше, просто нужно немного изменить - pred = model.predict(pd.DataFrame(wcat['Waist']))