私はsklearnで多変量回帰分析の構築に取り組んでおり、ドキュメントを徹底的に調べました。 predict()
関数を実行すると、エラーが発生します:predict()
は2つの位置引数を取りますが、3つが指定されました
Xはデータフレーム、yは列です。データフレームを配列/行列に変換しようとしましたが、それでもエラーが発生します。
X配列とy配列を示すスニペットを追加しました。
reg.coef_
reg.predict(x,y)
x_train=train.drop('y-variable',axis =1)
y_train=train['y-variable']
x_test=test.drop('y-variable',axis =1)
y_test=test['y-variable']
x=x_test.as_matrix()
y=y_test.as_matrix()
reg = linear_model.LinearRegression()
reg.fit(x_train,y_train)
reg.predict(x,y)
reg.predict(x)
を使用します。 y
の値をpredict
に指定する必要はありません。実際、機械学習モデルをトレーニングする目的は、y
の入力パラメーターを指定してx
の値を推測できるようにすることです。
また、predict
here のドキュメントでは、predict
はパラメータとしてx
のみを想定していると説明されています。
エラーが発生する理由:
予測()は2つの位置引数を取りますが、3つが与えられました
なぜなら、reg.predic(x)
を呼び出すと、pythonはこれを暗黙的にreg.predict(self,x)
に変換するため、エラーがpredict()
は2つの位置引数を取ります。predictの呼び出し方法reg.predict(x,y)
は、reg.predict(self,x,y)
に変換されます。したがって、2つではなく3つの位置引数が使用され、エラーメッセージ全体が説明されます。
テストセットをテストする場合、そのラベルがないと想定されます。モデルがどの程度一般化できるかをテストしているため、予測を実際のラベルと比較します。予測する場合は、X変数のみを使用します。
reg.predict()
とreg.score()
の間で混乱していると思います。前者は、データを使用してトレーニングされたモデルを使用してデータを予測するために使用される方法です。特徴/独立変数X
とオブジェクト自体self
(内部で処理されます)のみを入力として受け取り、対応する予測ターゲット/従属変数Y
、これは後でターゲット変数の実際の値と比較して、モデルのパフォーマンスを評価できます。ただし、モデルの評価を1つのステップで実行する場合は、X
とY
の両方を入力として受け取り、対応する評価を計算するreg.score()
メソッドを使用できます。測定(R ^ 2または目前の問題に応じた精度)。詳細については、 sklearn.linear_model.LinearRegression を参照してください。
また、これらの方法は、sklearnのほとんどの教師あり学習モデルに共通しています。