多层感知器 - 寻找“分离”曲线

2024-01-29

使用单层感知器,很容易找到“分隔线”(我不知道专业术语)的方程,即根据感知器的权重在训练后将两种类型的点分开的线。在多层感知器中,如何以类似的方式找到分隔两种类型点的曲线(不是直线)方程?

thanks.


这只是尝试获得分离边界或曲线的近似值。

Dataset

下面我绘制了示例数据集的两种类型之间的分离曲线。该数据集借用自 coursera - Andrew Ng 的机器学习课程。另外,下面的代码片段借用了以下想法Ex6Andrew 的 ML 课程。

边界图

要绘制分离曲线,

  • 首先根据训练数据训练神经网络;
  • 使用您想要的粒度生成二维数据网格,Matlab,这类似于:


    x1plot = linspace(min(X(:,1)), max(X(:,1)), 100)';
    x2plot = linspace(min(X(:,2)), max(X(:,2)), 100)';
    [X1, X2] = meshgrid(x1plot, x2plot);  
  • 对于网格中的每个数据点,使用神经网络计算预测标签;
  • 绘制网格结果标签的时装图


    vals = zeros(size(X1));
    for i = 1:size(X1, 2)
       this_X = [X1(:, i), X2(:, i)];
       % mlpPredict() is the function to use your trained neural network model
       %    to get a predicted label. 
       vals(:, i) = mlpPredict(model, this_X);
    end

    % Plot the boundary
    hold on
    [C, Lev] = contour(X1, X2, vals, [0 0], 'Color', 'b');
    hold off;  

如果您的目标只是获得边界曲线的精确数学表示,则此方法将不起作用。此方法只能为您提供在网格中设置的粒度范围内的曲线近似值。

如果您确实想要边界的精确描述,SVM 可能是一个不错的选择,因为整组支持向量都可以作为边界描述。

使用轮廓点近似边界

我看了一下octave的文档关于contour。基本上,contour使用轮廓矩阵C计算由contourc来自相同的论点。这是签名contourc:

[C, LEV] = contourc (X, Y, Z, VN)

该函数计算矩阵的轮廓线Z。参数X, Y and VN是可选的。

 The return value LEV is a vector of the contour levels.  The
 return value C is a 2 by N matrix containing the contour lines in
 the following format

      C = [lev1, x1, x2, ..., levn, x1, x2, ...
           len1, y1, y2, ..., lenn, y1, y2, ...]

 in which contour line N has a level (height) of LEVN and length of
 LENN.

因此,如果您确实想获得曲线的分析描述,矩阵C应包含足够的相关信息。在我的示例图中,解析后C,我得到了 30 个级别。第一层前6个点的坐标如下:

x: 2.3677e-01   2.3764e-01   2.4640e-01   2.4640e-01   2.4640e-01   2.4640e-01 ...
y: 4.0263e-01   4.0855e-01   4.0909e-01   4.1447e-01   4.2039e-01   4.2631e-01 ...

请注意,它们正是轮廓上从 (0.23677, 0.40263) 开始的点。使用这些轮廓点,可以直接使用多个线段来近似曲线(因为每个线段可以由两个端点确定)。

希望能帮助到你。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

多层感知器 - 寻找“分离”曲线 的相关文章

随机推荐

  • 使用 Java 终止进程

    我想知道如何 杀死 已经启动的进程 我知道 Process API 但我不确定 是否可以使用它来 杀死 已经运行的进程 例如 firefox exe 等 如果可以使用 Process API 您能指出我吗 正确的方向 如果没有 还有哪些其他
  • 通过查询字符串将对象列表传递给 MVC 控制器

    我遇到了一种情况 需要将对象列表传递给 MVC 控制器 但我不确定如何在查询字符串中格式化它 我想要这样做的原因是因为这不是一个 Web 应用程序 它是一个通过查询字符串接受数据并将其路由到执行工作的控制器的 Web 服务 因此 给定一个名
  • SQL Server - 复杂的动态数据透视列

    我有两个表 Controls 和 ControlChilds 父表结构 Create table Controls ProjectID Varchar 20 NOT NULL ControlID INT NOT NULL ControlCo
  • 如何将 __init__ 参数传递给使用 qmlRegisterType 注册的类?

    是否可以使用 qmlRegisterType 函数将 init 参数传递给注册到 QML 的 python 类 如果是这样 当在 QML 中实例化类时它们会被传递吗 我已使用 qmlRegisterType 注册了该类 但没有找到将另一个类
  • FormArray的使用和动态添加控件行

    我在尝试使用 Angular 2 和 Forms 做某事时遇到了麻烦 假设我有一个邀请列表 其中有两个字段 分别用于姓名和电子邮件 以及一个用于添加更多行的按钮 姓名 电子邮件 姓名 电子邮件 添加行 我有点知道您可以使用 FormArra
  • 如何获取

    我有一个FlowPanel 其高度是固定的 实际上是其父级高度的百分比 该高度是固定的 在此面板中 我添加了几个div元素 使用 CSS 我将其高度设置为其父级的 100 我想要做的是使用 javascript 将其宽度设置为等于其高度 我
  • 使用最新的 Android L 支持 v4 进行 Android 活动转换

    我正在为我的应用程序实现材料设计 我发现可以在此处进行活动之间的转换 http android developers blogspot com es 2014 10 implementing material design in your
  • Jquery 错误:需要对象

    这是我在 aspx 页面中的代码
  • android - 如何使文本视图滚动?

    实际上 我在文本视图中显示了一些数据 但它的一半数据超出了屏幕 所以我需要帮助来使文本视图滚动或任何其他可以向下滚动屏幕的东西 任何帮助 将不胜感激 将 TextView 放入 XML 中的 ScrollView 中 如下所示
  • Maven + Cucumber-jvm - 如何根据环境运行不同的功能子集

    我正在努力实现这一目标 我想配置一个 Maven 项目 以便它根据所选配置文件运行不同的 Cucumber 功能子集 dev pro 例如 我有几个功能文件来测试网络导航 使用标签来指定环境 PRO pro Feature Nav Pro
  • 如何使用 gdb“观察”C++ 动态数组?

    考虑以下示例 int size 10 kk new int size for int i 0 i lt size i kk i i delete kk 如何为整个阵列添加监视 我可以一一添加手表 kk 0 kk 1 但既然我知道数组的长度
  • kubectl exec 到多容器 pod 的容器中

    我在登录多容器 Pod 的一个容器时遇到问题 我从以下位置获取容器 IDkubectl describe pod
  • Symfony2:使用具有相同名称的自定义字段类型覆盖内置字段类型

    As per 本文 http symfony com doc current cookbook form create custom field type html在 Symfony 文档上 我创建了一个自定义字段类型 将其设置为servi
  • 视图框架在 viewWillAppear: 和 viewDidAppear: 之间变化

    我在我的应用程序中发现了一个奇怪的行为 其中连接IBOutlet在我的视图控制器中的调用之间有其连接的视图框架viewWillAppear and viewDidAppear 这是我的相关代码UIViewController子类 void
  • 如何使用PHP连接sql server

    我想使用PHP连接到sql server数据库 我安装了 xampp 1 7 0 php 5 2 和 SQLSRV20 我已将扩展添加到php ini我收到此错误 Warning mssql connect function mssql c
  • 如何在 vim 中使用 ctags 自动完成

    我尝试在vim中开发android项目 但是发现在ctags中查找一种方法有点无聊 有没有办法使用ctags在vim中显示自动完成列表 thanks 这是我的 ctags 版本如下 Exuberant Ctags 5 8 Copyright
  • 如何在 WireMock 中成功代理 HTTPS 端点?

    我正在编写一个内部使用 WireMock 的 HTTP 记录播放代理 并且在记录 HTTPS 目标时遇到问题 HTTP 站点工作正常 以下是我为未加密站点设置 WireMock 代理的方法 java jar var proximate wi
  • 了解每个线程的 cuda 堆内存限制

    这个问题是关于cuda中堆大小限制的 访问了有关该主题的一些问题 包括这个 内核中的新运算符 奇怪的行为 https stackoverflow com questions 13072624 new operator in kernel s
  • 将 Spring Security JspTagLib 添加到 Freemarker 模板 - 控制器单元测试的问题

    我已将 Springs jsp 安全标记库添加到 freemarker 模板中 因为我使用 freemarker 而不是 jsps 来查看我的 Web 应用程序 对于任何寻找如何设置它的人 我发现添加 spring 库以使用 JSP Tag
  • 多层感知器 - 寻找“分离”曲线

    使用单层感知器 很容易找到 分隔线 我不知道专业术语 的方程 即根据感知器的权重在训练后将两种类型的点分开的线 在多层感知器中 如何以类似的方式找到分隔两种类型点的曲线 不是直线 方程 thanks 这只是尝试获得分离边界或曲线的近似值 D