LoginSignup
0
2

More than 3 years have passed since last update.

make_blobsで作成したone-class SVM用のテストデータ分布

Last updated at Posted at 2021-05-17

make_blobsでone-class SVM用のテストデータを作ったら、分布が思いのほか歪んでいた

 one-class SVMのデバッグ用にtarinデータを作る必要があったが、60秒毎のデータで計算したいという事で、n_samples=60で作成していた。
 one-class SVM のパラメータ調整しても、思ったほど正答率が上がらず。 random_stateは固定していたが、n_samplesを小さくしたので、思ったよりも分布がゆがんでいた。
 random_state=0~100まで確認した上で、n_samples=60でも実際の分布に近そうなrandom_stateを選んで解決した。
試験そのものは、n_samplesが少ない状況では、ちょっと微妙だったが...
random_state=0~100のサンプルコード。

from sklearn import datasets
import matplotlib.pyplot as plt
k=0
plt.figure(figsize=(20,15))
for j in range(100):
  k=j+1
  plt.subplot(10, 10, k)
  X_train,_ = datasets.make_blobs(n_features = 1, centers=1,random_state=j, cluster_std=1.667122, n_samples=60, center_box=(14,22))
  plt.hist(X_train, color='blue', Alpha = 0.5)
  plt.title('random_state='+str(j))
  plt.grid(True)
plt.tight_layout()
plt.show()

出力はこんな感じ。
ダウンロード.png
ちなみに、当然ですがn_samples=500以上であれば正規分布に近くなる。
あまり使わなそうだが、取り合えずメモ用に保存
以上

0
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
2