sklearnを用いて、xor演算を機会学習する、というコードなのですが
わからないことがあるので質問させていただきます。
「XORの演算結果 --- (※1)、学習させるためにデータとラベルに分ける --- (※2)、データの学習 --- (※3)」で行なっていることは、データとその答えを与えて、学習させているという段階だと思うのですが、そうであればたった4つの例だけで学習ができたということでしょうか?
また、予測結果が出ていますが、何を予測したのでしょうか?
xor_dataが学習させるために使ったデータだとすると、新たにp、qの値を与えなきゃ予測も何もできないと思うのですが。。。
おそらく自分の解釈が間違えていると思うので、解説していただけると嬉しいです
from sklearn import svm # XORの演算結果 --- (※1) xor_data = [ #P, Q, result [0, 0, 0], [0, 1, 1], [1, 0, 1], [1, 1, 0] ] # 学習させるためにデータとラベルに分ける --- (※2) data = [] label = [] for row in xor_data: p = row[0] q = row[1] r = row[2] data.append([p, q]) label.append(r) # データの学習 --- (※3) clf = svm.SVC() clf.fit(data, label) # データを予測 --- (※4) pre = clf.predict(data) print("予測結果:", pre) # 正解と合っているか結果を確認 --- (※5) ok = 0; total = 0 for idx, answer in enumerate(label): p = pre[idx] if p == answer: ok += 1 total += 1 print("正解率:", ok, "/", total, "=", ok/total)
出力結果
予測結果: [0 1 1 0] 正解率: 4 / 4 = 1.0
回答1件
あなたの回答
tips
プレビュー