クラスAに関連するデータのマトリックス(Xa.shape = 100x2)とクラスBに関連するデータのマトリックスがあります。以下のコードを使用して両方を作成し、データの等高線図を作成したいと思います。しかし、私が試したものは機能せず、青い絵を作成するだけです。このようなデータの適切な等高線図を作成するにはどうすればよいですか?
N = 1000
mean_a = [0, 0]
cov_a = [[1, 0], [0, 100]] # diagonal covariance
mean_b = [5, 0]
cov_b = [[5, 0], [0, 500]] # diagonal covariance
Xa = np.random.multivariate_normal(mean_a, cov_a, N)
Xb = np.random.multivariate_normal(mean_b, cov_b, N)
fig, ax3 = plt.subplots(nrows=1,ncols=1,figsize=(15,8))
ax3.contourf(Xa)
入力: 2次元データポイント-Xa
形状は[N、2]です。これらは2D空間のN個のポインです。
必要な出力: 2次元の等高線図。countourf
はそのための適切なツールですが、ドキュメントに注意してください。この関数は、高さマップの等高線を描画します。
欠落しているステップ:個々のデータポイントを高さマップに変換します。
問題はディストリビューションについてです。1Dで分布をプロットするには、ヒストグラムを生成します。2Dでこれを行うには、2Dヒストグラムを作成しましょう。numpy.histogram2d
私たちのためにまさにそれをします。contourf
スペースを通常のビンに分割し、各ビンに分類されるデータポイントの数を数えることにより、適切な高さマップを作成します。
さあ:
N = 1000
mean_a = [0, 0]
cov_a = [[2, 1], [1, 2]]
Xa = np.random.multivariate_normal(mean_a, cov_a, N)
fig, ax3 = plt.subplots(nrows=1,ncols=1,figsize=(15,8))
(counts, x_bins, y_bins) = np.histogram2d(Xa[:, 0], Xa[:, 1])
ax3.contourf(counts, extent=[x_bins[0], x_bins[-1], y_bins[0], y_bins[-1]])
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加