python機械学習プログラミング(51ページ)

さて、51ページの前半のプログラムでわからないことが出てきました。

print('Misclassified samples: %d' % (y_test != y_pred).sum())

についてですが、前後の文脈から誤分類の個数を数えているようです。

でも、(y_test != y_pred).sum()で誤分類が数えられるのでしょうか?

【今のところの理解】
確かめてみました。

b = 10
a = 12
print(a != b)

実行結果
>>> b = 10
>>> a = 12
>>> print(a != b)
True
>>> print((a != b).sum())
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
AttributeError: 'bool' object has no attribute 'sum'

エラーが出ました。どうやら、"True"は数えられないよ!!
という事ですよねぇ。

もしかして、配列だったらうまくいくのかも??という事で、配列で確かめてみました。

>>> demo = np.arange(10).reshape(5,2)
>>> demo1  = np.arange(10).reshape(5,2)
>>> print("error : %d" % (demo == demo1).sum())
error : 10

上手くいきましたね。

どうやら、配列で正誤を確認して、その個数を数えてくれるみたいです。

なるほどぉ!!