机器学习经典算法:感知机PLA
创始人
2025-05-31 23:08:03
0

机器学习常见模型(面试必备)

第一篇:感知机模型


文章目录

  • 机器学习常见模型(面试必备)
  • 一、感知机概述
    • 1.1 感知机必备知识
    • 1.2 原始感知机
    • 1.3 对偶感知机
  • 二、Python编程实现感知机
  • 三、参考资料
  • 总结


一、感知机概述

1.1 感知机必备知识

  • 针对:二分类问题
  • 实质:分离超平面,是一个判别模型
  • 策略:基于误分类的损失函数
  • 方法:利用梯度下降对损失函数进行极小化
  • 特点:简单易实现
  • 分类:原始形式,对偶形式

1.2 原始感知机

  • 输入:训练数据集 T={(x1,y1),(x2,y2),...,(xN,yN)}T=\{(x_1, y_1), (x_2, y_2), ... , (x_N, y_N)\}T={(x1​,y1​),(x2​,y2​),...,(xN​,yN​)},其中Xi∈RnX_i\in R^nXi​∈Rn, yi∈y={−1,+1}y_i \in y=\{-1, +1\}yi​∈y={−1,+1},i=1,2,...,Ni=1, 2, ... , Ni=1,2,...,N,学习率 η(0<η≤1)\eta(0<\eta \leq 1)η(0<η≤1)。

  • 输出:www,bbb;模型 f(x)=sign(w⋅x+b)f(x)=sign(w \cdot x+b)f(x)=sign(w⋅x+b)
       1、选取初始值 w0w_0w0​,b0b_0b0​;
       2、在训练集中选取数据(xi,yi)(x_i, y_i)(xi​,yi​);
       3、如果 yi(w⋅x+b)≤0y_i(w \cdot x+b) \leq 0yi​(w⋅x+b)≤0,则 w=w+ηyixiw=w+\eta y_i x_iw=w+ηyi​xi​;$b=b+\eta y_i $;
       4、转至 2 ,直到训练集中没有误分类点。

1.3 对偶感知机

  • 假设样本点 (xi,yi)(x_i, y_i)(xi​,yi​) 在整个更新过程中被误分类 nin_ini​ 次,那么权重更新公式更改为: w=∑i=1Nniηyixiw=\sum\limits_{i = 1 }^N n_i \eta y_i x_iw=i=1∑N​ni​ηyi​xi​;b=∑i=1Nniηyib=\sum\limits_{i = 1 }^N n_i \eta y_ib=i=1∑N​ni​ηyi​。那么模型函数为: f(x)=sign(∑i=1Nniηyixi⋅x+∑i=1Nniηyi)f(x)=sign(\sum\limits_{i = 1 }^N n_i \eta y_i x_i \cdot x+ \sum\limits_{i = 1 }^N n_i \eta y_i )f(x)=sign(i=1∑N​ni​ηyi​xi​⋅x+i=1∑N​ni​ηyi​)

  • 按照新的权重更新方式,直到训练集中没有误分类点。

二、Python编程实现感知机

  • 准备数据集
  • 模型训练
  • 效果测试
  • 可视化展示
import numpy as np
import random
import matplotlib.pyplot as plt# sign function
def sign(v):if v > 0:return 1else:return -1# train function to get weight and bias
def training():train_data1 = [[1, 3, 1], [2, 5, 1], [3, 8, 1], [2, 6, 1]]  # positive sampletrain_data2 = [[3, 1, -1], [4, 1, -1], [6, 2, -1], [7, 3, -1]]  # negative sampletrain_data = train_data1 + train_data2;weight = [0, 0]bias = 0learning_rate = 0.1train_num = int(input("train num:"))for i in range(train_num):train = random.choice(train_data)x1, x2, y = train;y_predict = sign(weight[0] * x1 + weight[1] * x2 + bias)print("train data:x:(%d, %d) y:%d ==>y_predict:%d" % (x1, x2, y, y_predict))if y * y_predict <= 0:weight[0] = weight[0] + learning_rate * y * x1weight[1] = weight[1] + learning_rate * y * x2bias = bias + learning_rate * yprint("update weight and bias:")print(weight[0], weight[1], bias)print("stop training :")print(weight[0], weight[1], bias)# plot the train data and the hyper curveplt.plot(np.array(train_data1)[:, 0], np.array(train_data1)[:, 1], 'ro')plt.plot(np.array(train_data2)[:, 0], np.array(train_data2)[:, 1], 'bo')x_1 = []x_2 = []for i in range(-10, 10):x_1.append(i)x_2.append((-weight[0] * i - bias) / weight[1])plt.plot(x_1, x_2)plt.show()return weight, bias# test function to predict
def test():weight, bias = training()while True:test_data = []data = input("enter q to quit,enter test data (x1, x2):")if data == 'q':breaktest_data += [int(n) for n in data.split(',')]predict = sign(weight[0] * test_data[0] + weight[1] * test_data[1] + bias)print("predict==>%d" % predict)if __name__ == "__main__":test()

三、参考资料

案例参考

总结

   感知机算法到这里就结束了,望大家多多指点。

相关内容

热门资讯

“超越日本,中国首次跃居首位” 据《日本经济新闻》网站6月4日报道,中国在氢相关专利竞争力方面超越日本,首次跃居首位。中国企业主要在...
菏泽一高考考生午休躺在路边休息... 6月7日,全国高考。山东菏泽,有网友拍到暖心一幕,中午高考午休时间,一名考生躺在路边休息,旁边的家人...
海关律师、走私辩护律师邵丹:查... 近日,海口海关所属海口美兰机场海关联合海口海关风控分局,发现海口飞往遵义的3名旅客购物时间趋近、购物...
海关律师、走私辩护律师邵丹:查... 近日,哈尔滨海关所属哈尔滨太平机场海关关员在对进境航班实施监管时,发现1名选择“无申报通道”入境的旅...
中国女排3比0击败法国女排,斩... 北京时间6月7日晚,中国女排再度亮相世界女排联赛中国北京站,与法国女排展开对抗。 最终,中国女排以3...
《政务数据共享条例》来了,哪些... 《政务数据共享条例》近日正式出台,目的是推进政务数据安全有序高效共享利用,提升政府数字化治理能力和政...
对华新招?美国被曝暂停向中国出... 【文/观察者网 齐倩】在中美贸易紧张关系持续之际,路透社6月6日援引消息称,特朗普政府近日暂停了美国...
欧洲央行执委Schnabel:... 欧洲央行执委Isabel Schnabel称,对美联储与欧洲央行政策将长期分化的预期是错误的。“我预...
十款大模型写高考作文|Deep... 6月7日,2025年全国高考拉开大幕。过去两年,搜狐科技&搜狐教育多次联合推出大模型参加高考系列策划...
事发淄博一村庄!陌生男子形迹可... 一个看似寻常的午后, 一名陌生男子的身影 打破了村庄的宁静。 近日,沂源县南麻街道某村村民张先生(化...