web-dev-qa-db-ja.com

Sci-kit Learnを使用したDataFrameのPandas DataFrame

Pythonが初めてで、pandasデータフレームでsklearnを使用して線形回帰を実行しようとしています。これは私がやったことです。

data = pd.read_csv('xxxx.csv')

その後、2列のDataFrameを取得し、「c1」、「c2」と呼びましょう。今、(c1、c2)のセットで線形回帰を行いたいので、

X=data['c1'].values
Y=data['c2'].values
linear_model.LinearRegression().fit(X,Y)

次のエラーが発生しました

IndexError: Tuple index out of range

ここで何が問題なのですか?また、知りたい

  1. 結果を視覚化する
  2. 結果に基づいて予測を行いますか?

私は多数のサイトを検索して閲覧しましたが、それらのどれも初心者に適切な構文を教えていないようです。おそらく、専門家にとって明らかなことは、私のような初心者にとってそれほど明白ではありません。

助けてもらえますか?ご清聴ありがとうございました。

PS:私は、多数の初心者の質問がstackoverflowでダウン投票されたことに気づきました。経験豊富なユーザーにとって明らかなことは、初心者が理解するのに数日かかる可能性があるという事実を考慮してください。このディスカッションコミュニティの活気を損なうことがないように、下矢印を押すときは慎重に行ってください。

19
Dinosaur

あなたのcsvが次のように見えると仮定しましょう:

_c1,c2
0.000000,0.968012
1.000000,2.712641
2.000000,11.958873
3.000000,10.889784
...
_

私はそのようなデータを生成しました:

_import numpy as np
from sklearn import datasets, linear_model
import matplotlib.pyplot as plt

length = 10
x = np.arange(length, dtype=float).reshape((length, 1))
y = x + (np.random.Rand(length)*10).reshape((length, 1))
_

このデータはtest.csvに保存されます(データがどこから来たかを知るために、明らかに自分のデータを使用します)。

_data = pd.read_csv('test.csv', index_col=False, header=0)
x = data.c1.values
y = data.c2.values
print x # prints: [ 0.  1.  2.  3.  4.  5.  6.  7.  8.  9.]
_

.fit()に入力するデータの形状を確認する必要があります。

ここではx.shape = (10,)ですが、_(10, 1)_である必要があります。 sklearn を参照してください。 yについても同様です。だから私たちは作り直します:

_x = x.reshape(length, 1)
y = y.reshape(length, 1)
_

次に、回帰オブジェクトを作成し、fit()を呼び出します。

_regr = linear_model.LinearRegression()
regr.fit(x, y)

# plot it as in the example at http://scikit-learn.org/
plt.scatter(x, y,  color='black')
plt.plot(x, regr.predict(x), color='blue', linewidth=3)
plt.xticks(())
plt.yticks(())
plt.show()
_

Sklearn線形回帰 を参照してください。 enter image description here

37
Scott

結果に基づいて予測を行いますか?

予測するために、

lr = linear_model.LinearRegression().fit(X,Y)
lr.predict(X)

回帰の詳細を表示する方法はありますか?

LinearRegressionにはcoef_およびintercept_属性。

lr.coef_
lr.intercept_

勾配と切片を示します。

1
serv-inc

クリックして結果を表示 1

データセットを想定

クリックしてデータセットを表示します

Blockquote

ここ] 2

ライブラリのインポート

numpyをnpとしてインポートする

matplotlib.pyplotをpltとしてインポート

import pandas as pd

データセットのインポート

データセット= pd.read_csv( '1.csv')

X =データセット[["mark1"]]

y =データセット[["mark2"]]

セットへの単純な線形回帰のあてはめ

sklearn.linear_modelからインポートLinearRegression

regressor = LinearRegression()

regressor.fit(X、y)

セット結果の予測

y_pred = regressor.predict(X)

セット結果の視覚化

plt.scatter(X、y、color = 'red')

plt.plot(X、regressor.predict(X)、color = 'blue')

plt.title( 'mark1 vs mark2')

plt.xlabel( 'mark1')

plt.ylabel( 'mark2')

plt.show()

0
Samrat Kishore

本当に見ることができるfitメソッドのドキュメントを見る必要があります here

線形回帰を視覚化する方法については、例 here を試してください。 ipython(今はjupyterと呼ばれる)をあまり使用していないのではないかと推測しているので、間違いなくそれを学習するために時間をかける必要があります。データと機械学習を探索するための素晴らしいツールです。あなたは文字通りscikit線形回帰からipythonノートブックに例を貼り付けて実行することができます

fitメソッドの特定の問題については、ドキュメントを参照すると、X値に渡すデータの形式が間違っていることがわかります。

ドキュメントによると、「X:numpy配列または形状のスパース行列[n_samples、n_features]」

これでコードを修正できます

X = [[x] for x in data['c1'].values]
0
Tommy