web-dev-qa-db-ja.com

Sklearnエラー:predict(x、y)は2つの位置引数を取りますが、3つが指定されました

私は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)
7
GD_N

reg.predict(x)を使用します。 yの値をpredictに指定する必要はありません。実際、機械学習モデルをトレーニングする目的は、yの入力パラメーターを指定してxの値を推測できるようにすることです。

また、predicthere のドキュメントでは、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つの位置引数が使用され、エラーメッセージ全体が説明されます。

14

テストセットをテストする場合、そのラベルがないと想定されます。モデルがどの程度一般化できるかをテストしているため、予測を実際のラベルと比較します。予測する場合は、X変数のみを使用します。

1
pissall

reg.predict()reg.score()の間で混乱していると思います。前者は、データを使用してトレーニングされたモデルを使用してデータを予測するために使用される方法です。特徴/独立変数Xとオブジェクト自体self(内部で処理されます)のみを入力として受け取り、対応する予測ターゲット/従属変数Y、これは後でターゲット変数の実際の値と比較して、モデルのパフォーマンスを評価できます。ただし、モデルの評価を1つのステップで実行する場合は、XYの両方を入力として受け取り、対応する評価を計算するreg.score()メソッドを使用できます。測定(R ^ 2または目前の問題に応じた精度)。詳細については、 sklearn.linear_model.LinearRegression を参照してください。

また、これらの方法は、sklearnのほとんどの教師あり学習モデルに共通しています。