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
ここで何が問題なのですか?また、知りたい
私は多数のサイトを検索して閲覧しましたが、それらのどれも初心者に適切な構文を教えていないようです。おそらく、専門家にとって明らかなことは、私のような初心者にとってそれほど明白ではありません。
助けてもらえますか?ご清聴ありがとうございました。
PS:私は、多数の初心者の質問がstackoverflowでダウン投票されたことに気づきました。経験豊富なユーザーにとって明らかなことは、初心者が理解するのに数日かかる可能性があるという事実を考慮してください。このディスカッションコミュニティの活気を損なうことがないように、下矢印を押すときは慎重に行ってください。
あなたの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線形回帰 例 を参照してください。
結果に基づいて予測を行いますか?
予測するために、
lr = linear_model.LinearRegression().fit(X,Y)
lr.predict(X)
回帰の詳細を表示する方法はありますか?
LinearRegressionにはcoef_
およびintercept_
属性。
lr.coef_
lr.intercept_
勾配と切片を示します。
クリックして結果を表示 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()
本当に見ることができるfit
メソッドのドキュメントを見る必要があります here
線形回帰を視覚化する方法については、例 here を試してください。 ipython(今はjupyterと呼ばれる)をあまり使用していないのではないかと推測しているので、間違いなくそれを学習するために時間をかける必要があります。データと機械学習を探索するための素晴らしいツールです。あなたは文字通りscikit線形回帰からipythonノートブックに例を貼り付けて実行することができます
fit
メソッドの特定の問題については、ドキュメントを参照すると、X
値に渡すデータの形式が間違っていることがわかります。
ドキュメントによると、「X:numpy配列または形状のスパース行列[n_samples、n_features]」
これでコードを修正できます
X = [[x] for x in data['c1'].values]