我有以下DataFrame,示例如下:
我通过以下方式得到了回归:
ADBE['Date'] = ADBE['Date'].values.astype(float)
model = pd.ols(y = ADBE['Close'], x = ADBE['Date'])
我得到以下结果:
我已尝试将结果绘制如下:
import matplotlib.pyplot as plt
plt.plot(model, ADBE['Close'])
我收到错误消息:
“x和y必须具有相同的第一维”
我得知回归结果只是一个数字(1维)与数组/数据框(ADBE ['Close']形成对比,并尝试使用stackoverflow中的几种方法进行二维回归。没有运气。有没有人在回归之前做过这个?
编辑:我也尝试了以下内容:
ols2 = np.polyfit(ADBE['Date'], ADBE['Close'], 1)
poly_ols2 = np.poly1d(ols2)
我得到错误:
数据类型不精确
...适用于OLS2系列。所以无论我走哪条路(绘制回归,或者首先通过polyfit进行回归)我都会收到错误
答案 0 :(得分:0)
我收到错误消息:
" x和y必须具有相同的第一维"
这是因为model
是一个pandas模型对象:
type(model)
pandas.stats.ols.OLS
matplotlib
并不知道如何处理此对象的方式。如果您想根据模型的拟合值(例如)绘制数据,则应使用:model.y_fitted.values
。以下是一个工作示例
from sklearn import datasets # toy dataset for this example
import matplotlib.pyplot as plt
%matplotlib inline # using jupyter notebook
iris = datasets.load_iris()
iris = pd.DataFrame(iris.data, columns=iris.feature_names)
# note that pd.ols is deprecated and you should use
# statsmodel or scikit learn for regression
model = pd.ols(y = iris['sepal length (cm)'], x = iris['sepal width (cm)'])
plt.scatter(y = model.y_fitted.values, x = iris['sepal length (cm)'])
plt.xlabel("sepal length (cm)")
plt.ylabel("OLS fitted values")
plt.show()