NTU-PLA

来源:互联网 发布:刷网游金币软件 编辑:程序博客网 时间:2024/05/16 18:12

leetcode一直刷,但是没有记录到CSDN这里,已经刷到150+60,所以上学期学了机器学习没太好掌握,所以现在也重新好好学习一下hhhhh。

PLA完全就是用来练手python的,直接代码

import matplotlib.pyplot as pltimport numpy as npdef createnote():    group = [[-4.0, 2.0], [-3.0, 1.0], [-3.0, 4.0], [-1.0, 3.0], [-1.0, 1.0], [1.0, 3.0], [1.0, 1.0], [-1.0, -2.0], [2.0, -3.0], [3.0, -3.0]]    labels = [-1, -1, -1, -1, -1, 1, 1, 1, 1, 1]    return group, labelsdef makeplt(group, nodea, nodeb):    x = [group[n][0] for n in range(10)]    y = [group[n][1] for n in range(10)]    plt.plot(nodea, nodeb)    plt.scatter(x[0:5], y[0:5], c = 'r', marker = 'x')    plt.scatter(x[5:10], y[5:10], c = 'b')    plt.xlim(-5.0, 5.0)    plt.ylim(-5.0, 5.0)    plt.show()def run(w0, group, labels):    w = np.mat(w0)    for i in range(10):        x = np.mat([1.0, group[i][0], group[i][1]])        if w * x.T * np.mat(labels[i]) < 0:            newW = w + x * labels[i]            return -1, newW    return 1, wdef PLA(group, labels):    w = [0, 1.0, 1.0]    f = -1.0    while f < 0:        f, w = run(w, group, labels)    print(w)    return wdef createpoint(w):    a = [-100.0, 100.0]    b = [(-1.0) * w[0] / w[2] - w[1] * (-100.0) / w[2], (-1.0) * w[0] / w[2] - w[1] * (100.0) / w[2]]    return a, bgroup, labels = createnote()w = PLA(group, labels)newW = np.array(w).ravel().tolist()a, b = createpoint(newW)makeplt(group, a, b)
0 0
原创粉丝点击