NTU-PLA

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

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

import matplotlib.pyplot as plt
import numpy as np

def 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, labels

def 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, w


def PLA(group, labels):
    w = [0, 1.0, 1.0]
    f = -1.0
    while f < 0:
        f, w = run(w, group, labels)
    print(w)
    return w

def 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, b

group, labels = createnote()
w = PLA(group, labels)
newW = np.array(w).ravel().tolist()
a, b = createpoint(newW)
makeplt(group, a, b)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值