baobao
11/18/2017 - 4:14 PM

等値演算の機械学習

from sklearn import svm

# 等値演算学習用データ
# 0番目と1番目が比較数値
# 2番目が結果0は偽、1だと真(ラベル)
equal_data = [
    [21, 1, 0],
    [20, 22, 0],
    [3, 9, 0],
    [10, 10, 1],
    [5, 2, 0],
    [2, 2, 1],
    [99, 99, 1],
    [2, 9, 0],
    [3, 239, 0],
    [19, 19, 1],
    [5, 1, 0],
    [6, 6, 1],
    [100, 100, 1],
    [243, 47, 0]
]

# 学習させるためにデータとラベルに分ける
data = []
label = []
for row in equal_data:
    a = row[0]
    b = row[1]
    labelstr = row[2]
    data.append([a, b])
    label.append(labelstr)

# データの学習
clf = svm.SVC()
clf.fit(data, label)

# テストデータ用意
# 0番目と1番目が比較数値
# 2番目が結果0は偽、1だと真(ラベル)
test_data =[
    [40, 41, 0],
    [1, 1, 1],
    [90, 99, 0],
    [3, 10, 0],
    [20, 20, 1],
    [53, 53, 1],
    [2, 2, 1]
]

# データとラベルを分ける
data = []
label = []
for row in test_data:
    a = row[0]
    b = row[1]
    labelstr = row[2]
    data.append([a, b])
    label.append(labelstr)

# データを予測
pre = clf.predict(data)
print("予測結果:", pre)

# 正解と合っているか答え合わせ
ok = 0; total = 0

for (i, answer) in enumerate(label):
    p = pre[i]
    if p == answer: 
        ok += 1
    total += 1

print("正解率:", ok, "/", total, "=", ok/total)