2016-11-11 25 views
1

を取得した後、私は、次のデータフレームは、サンプルは次のように探している:私は取得パンダデータフレーム - プロットの線形回帰直線回帰値

ADBE['Date'] = ADBE['Date'].values.astype(float) 
model = pd.ols(y = ADBE['Close'], x = ADBE['Date']) 

enter image description here

私は経由回帰を得ました以下の結果が得られました。

Regression results

私は、次のような結果をプロットしてみた:

import matplotlib.pyplot as plt 
plt.plot(model, ADBE['Close']) 

は、私は、エラーメッセージが表示されます。

を「xとyは同じ最初の次元を持っている必要があります」私は、回帰結果であることを取得単純に配列/データフレーム(ADBE ['Close'])と対比される数値(1次元)であり、回帰を2次元にするためにstackoverflowからいくつかのメソッドを試しました。運がない。誰もこれまで回帰でこれをしていますか?

編集:私はまた、次のことを試してみた:

ols2 = np.polyfit(ADBE['Date'], ADBE['Close'], 1) 

poly_ols2 = np.poly1d(ols2) 

は、私はエラーを取得する:

データをOL​​S2ラインのために...不正確

を入力していません。だから私は行くのいずれかの方法は、私はエラーを取得しています(回帰をプロットする、または単に最初の場所で関数polyfitを経由して回帰を取得)

答えて

0

I get the error message:

"x and y must have same first dimension"

modelはパンダのモデルオブジェクトであるからです。

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()