2017-02-04 31 views
1

ガウスNaive Bayesクラシファイアの決定サーフェスをプロットしようとしています。私はクラシファイアのトレーニングに少し問題があるようです。私は機械学習にも非常に新しいです。SciKit-learn - Gaussian Naive Bayesクラシファイアをトレーニングする

まず、ランダムな点を100個生成します。半分は座標とラベルが異なります。

for i in range(50): 
    point1.append([np.random.randint(50,80),np.random.randint(50,80)]) 
    point1L.append(1) 
for i in range(50): 
    point2.append([np.random.randint(10,40),np.random.randint(10,70)]) 
    point2L.append(0) 

私はそれを訓練します。

clf = GaussianNB() 
clf.fit(point1,point1L) 
clf.fit(point2, point2L) 

私は問題に遭遇します。ここにあるクラシファイアは、2つの点を区別することができないようです。

print(clf.predict([np.random.randint(50,80),np.random.randint(50,80)])) 
print(clf.predict([np.random.randint(10,40),np.random.randint(10,70)])) 

私はこのために得る結果は常にあるように見える:

[0] 
[0] 

私が間違って何をやっている、と私はそれをどのように修正するのですか?

また、私は、分類器自体から決定境界を直接プロットできるかどうかを知りたいと思います。すべての点で分類器の決定を比較することはできません。

+0

「fit(x、y)」から「partial_fit(x、y、[0,1])」に切り替えるだけで動作します。 – lejlot

答えて

0

fit()メソッドは一度呼び出す必要があります。 fitメソッドを2回呼び出します.1つはpoint1、もう1つはpoint2です。だから、point2のためにfit()を再度呼び出すと、見積もりがリセットされ、point2Lの列車が0になります。そのため予測は常に0です。 point1point2を最初に組み合わせて(ラベルでも同じです)新しい行列のfitメソッドを呼び出します。

+0

ああそうです。これは正常に動作します。どうもありがとう! –

関連する問題