首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >分类判决界面---位势函数法

分类判决界面---位势函数法

作者头像
不去幼儿园
发布2024-12-03 12:56:16
发布2024-12-03 12:56:16
12200
代码可运行
举报
文章被收录于专栏:强化学习专栏强化学习专栏
运行总次数:0
代码可运行

本篇文章是博主在人工智能等领域学习时,用于个人学习、研究或者欣赏使用,并基于博主对人工智能等领域的一些理解而记录的学习摘录和笔记,若有不当和侵权之处,指出后将会立即改正,还望谅解。文章分类在AI学习笔记: AI学习笔记(10)---《分类判决界面---位势函数法》

分类判决界面---位势函数法

一、算法原理

位势函数算法是利用物理概念,通过训练模式对特征空间中的累积位势函数修正,使累积位势函数对训练模式具有正确分类的性质,从而以其作为判别函数。由于位势函数是非线性的,所以由位势函数训练算法产生的判别函数是非线性的。该方法可用于非线性可分情况,也可用于线性可分情况。位势函数选取的灵活性使位势函数法有很强的分类能力。设训练模式集为{x1, x2, ..., xN}它们分属 w1 和 w2 类,定义一个位势函数K(x, xj)。初始化,令特征空间中各点处的初始累积位势函数 K0(x)=0,判错计数 m=0。令 j=1,输人训练模式 x1,使累积位势函数

其他分类判决界面方法见 分类判决界面---W-H、H-K算法

二、实验要求

已知两类训练样本:

w1:x1 = (1, 1),x2 = (2, 1)

w2:x3 = (-1, -1),x4 = (-2, -1)

采用位势函数法编程实现分类器设计

三、实验程序

main.m文件

代码语言:javascript
代码运行次数:0
运行
复制
%% 判别域代数界面方程法
clc;
close all;

%% 位势函数法
% 数据
Y = [1, 1; 2, 1; -1, -1; -2, -1];
% 标签
Label = [1 1 2 2];
% 位势函数法求判决界面
[Kx,alpha] = potential_function(Y, Label);
disp("位势函数表达式:");
disp(Kx);
disp("alpha数值:");
disp(alpha);
% 画图
figure()
x1 = Y(:, 1);
y1 = Y(:, 2);
N2 = size(Label,2);
% 绘制判决界面
x = [-3 3];
y = -x;
plot(x,y,'black')
hold on
% 绘制数据散点图
for i = 1:N2
    if Label(i) == 1
        scatter(x1(i),y1(i),"filled","o",'g');
        hold on
    end
    if Label(i) == 2
        scatter(x1(i),y1(i),"filled","o",'b');
        hold on
    end
end
axis([-3, 3, -2, 2]);
title('位势函数法的判决界面');

potential_function.m文件

代码语言:javascript
代码运行次数:0
运行
复制
function [K, alpha] = potential_function(samples, labels)
    %%%%%%%%%% Begin %%%%%%%%%%
    %% 初始化
    K0 = 0;                      %累积位势
    j = 1;                       %训练次数
    m = 0;                       %判错次数
    
    j_max = 100;                 %最大的循环次数
    
    [row, col] = size(samples);
    
    syms x1 x2 real;             %定义符号常量
    
    %% j=1的累积位势函数
    K = K0 + potential([x1 x2], samples(1, :));
    
    j = j + 1;
    K_old = K;

    while 1
        for i = 1 : row
            %% 逐次训练
            x1 = samples(i, 1);
            x2 = samples(i, 2);
            K_V = subs(K_old);      %将符号表达式中的符号变量替换为指定的值

            syms x1 x2 real;        %定义符号常量      
            K = potential([x1 x2], samples(i, :));

            % 计算赏罚因子
            if labels(i) == 1 && K_V > 0
                alpha = 0;
            elseif labels(i) == -1 && K_V < 0
                alpha = 0;
            elseif labels(i) == 1 && K_V <= 0
                alpha = 1;
            elseif labels(i) == -1 && K_V >= 0 
                alpha = -1;
            end

            % 迭代累积位势
            K_new = K_old + alpha * K;

            K_old = K_new;

            % 累加错判次数
            m = m + abs(alpha);
            
            % 循环控制
            if j < j_max
                j = j + 1;
            else
                disp('已到最大迭代次数');
                break
            end
        end
        
        %% 总检查:训练可否结束
        if m == 0
            K = K_new;
            break
        else
            m = 0;
        end
     
    end
       
    %%%%%%%%%% End %%%%%%%%%%
    
end

function [result] = potential(X,Xk)
    result = exp(-(X(1)-Xk(1)) ^2 - (X(2)-Xk(2))^2);
    %result = exp(-norm(X-Xk,2));
end

四、实验结果

文章若有不当和不正确之处,还望理解与指出。由于部分文字、图片等来源于互联网,无法核实真实出处,如涉及相关争议,请联系博主删除。如有错误、疑问和侵权,欢迎评论留言联系作者,或者私信联系作者。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2024-06-23,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 分类判决界面---位势函数法
    • 一、算法原理
    • 二、实验要求
    • 三、实验程序
    • 四、实验结果
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档