0

scikit-learnプロジェクトのこのリンク: http://scikit-learn.org/stable/auto_examples/linear_model/plot_polynomial_interpolation.htmlでは、たとえば特定の関数を近似するために多項式補間を適用する方法が示されています。

この例は、2D ポイント用に設定されています。でも:

  • 3Dポイントに適合するように拡張するにはどうすればよいですか?

  • それとも、これは scikit-learn でも可能ですか? ドキュメントでは、まだヒントを見つけることができませんでした。

よろしくお願いいたします。

ダン

編集1

答えてくれてありがとうロビン!また、複雑さが急速に増大していることを指摘したことも貴重なヒントでした。

これまでのところ、2D 配列Xに関連する 1 つの問題に遭遇しました。model.fit(X,z)

2D 配列は次のようになります。

[[ 0.1010101   0.35353535]
 [ 0.4040404   0.65656566]
 [ 0.80808081  1.11111111]
 [ 1.21212121  1.31313131]]

関数 z は放物面の関数です。

(((x**2)/(4**2) + ((y**2)/(8**2))) * 2)

実行model.fit(X,z)すると、次のエラー メッセージが返されます。

ValueError: Found arrays with inconsistent numbers of samples: [10 20]

矛盾はどこから生じるのか?

4

1 に答える 1

1

はい、同じアプローチをより高次元のデータに使用できます。Xより多くの列を含む同じコードを使用するだけです。

# For some degree, X and y
model = make_pipeline(PolynomialFeatures(degree), Ridge())
model.fit(X, y)

背景情報を追加するには:多項式機能の前処理ステップでは、機能のすべての可能な組み合わせを作成するだけです。これは、入力が 2 次元で次数が 2 の場合でも、特徴空間が既に 6 次元であることを意味します(1, a, b, a*b, a*a, b*b)。機能が増えると、この数はさらに急速に増加します。

2 番目の質問では、fit関数はベクトルのみを受け入れ、関数は受け入れません。したがって、y = z(X[:,0],X[:,1])代わりにベクトルを作成し、これを関数 fit で使用しますmodel.fit(X,y)

于 2016-02-18T12:14:08.587 に答える