##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()
出力はこんな感じ。
ちなみに、当然ですがn_samples=500以上であれば正規分布に近くなる。
あまり使わなそうだが、取り合えずメモ用に保存
以上