首页 > 编程语言 >感知机算法

感知机算法

时间:2022-09-29 20:24:07浏览次数:52  
标签:plt 50 感知机 算法 cost np theta loop

感知机算法

依赖

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt

人工数据集

n = 100
X = np.random.multivariate_normal((1, 1), [[0.16, 0], [0, 0.16]], size = int(n/2))
X = np.insert(X, 50, np.random.multivariate_normal((3, 3), [[0.16, 0], [0,0.16]], size = int(n/2)),0)
X = np.insert(X, 0, 1, 1)
m = X.shape[1]
y = np.array([1]*50+[-1]*50).reshape(-1,1)
plt.scatter(X[:50, -2], X[:50, -1])
plt.scatter(X[50:, -2], X[50:, -1], c = "#ff4400")
<matplotlib.collections.PathCollection at 0x7fc34e108fd0>

image

损失函数

def compterCost(X, theta, y):
    return -sum([e if e < 0 else 0 for e in y * X @ theta])
compterCost(X, np.array([[0],[1],[1]]), y)
array([296.74151517])

梯度

def getGradient(X, theta, y): 
    return np.array([e if e@theta < 0 else np.zeros(e.shape) for e in y*X]).sum(0).reshape([-1,1])
getGradient(X, np.array([[0],[1],[1]]), y)
array([[ -50.        ],
       [-148.12026406],
       [-148.62125111]])

梯度下降法

def gradientDescent(X, theta, y, alpha, iters):
    cost = np.zeros(iters + 1)
    cost[0] = compterCost(X, theta, y)
    print(f"loop {0}'s cost is {cost[0]}")
    for i in range(iters):
        theta = theta + getGradient(X, theta, y)*alpha
        cost[i+1] = compterCost(X, theta, y)
        print(f"loop {i+1}'s cost is {cost[i+1]}")
        if(cost[i+1]==0):
            break
    plt.plot(range(iters+1), cost)
    #print(cost)
    return theta

初始换参数

theta_init = np.random.normal(0, 1, size = [m, 1])

调参

theta = theta_init
iters =  70
rate = 0.003
Theta = np.zeros([m,iters])
theta = gradientDescent(X, theta, y, rate, iters)
loop 0's cost is 146.8614585417101
loop 1's cost is 44.73090421627507
loop 2's cost is 48.70371494672389
loop 3's cost is 34.64400407600265
loop 4's cost is 40.484995297839994
loop 5's cost is 29.71544907927535
loop 6's cost is 38.247842867274045
loop 7's cost is 19.50704497597027
loop 8's cost is 16.876667028290644
loop 9's cost is 21.50354274044174
loop 10's cost is 40.567269089977934
loop 11's cost is 17.772994071927197
loop 12's cost is 15.939289855995966
loop 13's cost is 41.826814316008445
loop 14's cost is 19.032539297957697
loop 15's cost is 1.404799658922513
loop 16's cost is 4.591165427094092
loop 17's cost is 13.801246238442143
loop 18's cost is 37.97009525496931
loop 19's cost is 15.210772260291817
loop 20's cost is 0.1879831222878148
loop 21's cost is 0.04139715239780852
loop 22's cost is 0.0058499407125103
loop 23's cost is 0.0

image

边界

plt.scatter(X[:50, -2], X[:50, -1])
plt.scatter(X[50:, -2], X[50:, -1], c = "#ff4400")
#x = np.arange(5,23,0.5)
#plt.plot(x, getMy(x.reshape(-1,1)))
plt.axline([1, -(theta[1][0]*1+theta[0][0])/theta[2][0]], xy2 = [2, -(theta[1][0]*2+theta[0][0])/theta[2][0]])
#plt.plot(x, np.insert(x.reshape(-1,1), 0, 1, 1)@true_theta)
<matplotlib.lines._AxLine at 0x7fc34d497070>

image

标签:plt,50,感知机,算法,cost,np,theta,loop
From: https://www.cnblogs.com/RanX2018/p/16742914.html

相关文章

  • 27岁算法工程师,1月无情被辞:想给做算法的提个醒!
    近日,大厂程序员在知乎吐槽“能力很强的同事学历造假,被辞了”,引发热议。“本科211,硕士去了哥伦比亚大学,因为GPA过低,第一学期就被开除。国外黑了两年,造了个假学历回国,竟然还过......
  • 与图相关的一些算法
    与图相关的一些算法作者:Grey原文地址:博客园:与图相关的一些算法CSDN:与图相关的一些算法图的说明线性表中的元素是“一对一”的关系,树中的元素是“一对多”的关系,图结......
  • AcWing 算法提高课 AC自动机
    AC自动机=Trie+kmp优化:Trie图1、kmp长字符串s和模板串p都以下标1开始。(1)求next数组:kmp的next数组存的是p的自匹配,即以p[i]为结尾的后缀能够匹配的最长非平凡(不是自......
  • 变邻域搜索算法通俗讲解
    首先声明本文是在参考《数据魔术师》公众号的《干货|变邻域搜索算法(VariableNeighborhoodSearch,VNS)超详细一看就懂》这一篇文章的基础上,并结合自己的理解撰写《VNS通......
  • 多种群遗传算法的函数优化算法(附MATLAB代码)
    最近小编终于重新拿起智能优化算法的圣经《MATLAB智能算法30个案例分析(第2版)》,每次读这本书都会有新的收获,今天要与大家分享的智能算法是多种群遗传算法。PS:文中代码来源于......
  • 用matlab调用迄今为止最强悍的求解旅行商(TSP)的算法-LKH算法
    最近小编恰好遇到这样一个问题,如何用matlab调用比较牛X的TSPsolver,小编费劲千辛万苦终于在github上找到一位大神写的LKH的matlab接口(网址链接:​​https://github.com/unr-a......
  • VRPTW合集 [CW节约算法,TS(硬约束版),TS(惩罚函数版),LNS四种方法对比(附MATLAB代码)]
    01方法回顾VRPTW系列推文终于要告一段落了,最初小编写了一篇最基本的节约算法构造VRPTW初始解推文;然后在这个基础上,小编尝试用3种不同的策略在所构造的初始解的基础上,进一步......
  • 免疫算法求解配送中心选址问题(附MATLAB代码)
    本文参考《MATLAB智能算法30个案例分析》一书,文末的源代码也来自本书本次推文为大家讲解免疫算法,隐约中记得一位小伙伴后台问我能否推出这样一篇推文,小编的参考资料很简单,依......
  • 禁忌搜索算法求解带时间窗的车辆路径问题(上)
    今天小编准备讲一下用禁忌搜索算法(下文简称TS)求解带时间窗的VRP问题(下文简称VRPTW)。下面小编带大家体会TS的思想。以VRPTW为例,VRPTW的解的形式为每辆车所经过的顾客,比如说有......
  • 基于蚁群的二维路径规划算法(附MATLAB代码)
    本文参考《MATLAB智能算法30个案例分析》一书,文末的源代码也来自本书前一段时间有小伙伴问能否出一个机器人路径规划的推文,小编最近努力查资料,然后学习一些新知识,然后才动笔......