更好的(非线性)分箱

2023-11-29

我问的最后一个问题涉及如何通过 x 坐标对数据进行装箱。解决方案简单而优雅,我很遗憾我没有看到它。这个问题可能更难(或者我可能只是盲目的)。

我从大约 140000 个数据点开始,将它们分成 70 个沿 x 轴均匀分布的组,然后获取每组的平均位置 (x_avg, y_avg) 并绘制它们;一条漂亮的曲线出现了。不幸的是有两个问题。首先,边缘的人口比图中心少得多;其次,某些领域的变化比其他领域更大,因此需要更好的解决方案。

因此,我有两个具体问题和一般性邀请提出建议:

matlab 是否有内置方法将矩阵拆分为固定数量的较小矩阵或固定大小的较小矩阵?

是否有算法(或 matlab 函数,但我发现不太可能)来确定更精细地划分感兴趣区域所需的边界?

更一般地说,是否有更好的方法将数万个数据点浓缩成一个整齐的趋势?


听起来您想使用大小根据 x 值的密度而变化的箱。我认为您仍然可以使用 HISTC 函数,就像在上一篇文章的答案中一样,但您只需给它一组不同的边即可。

我不知道这是否正是您想要的,但这里有一个建议:不要将 x 轴拆分为 70 个等距的组,而是将排序的 x 数据拆分为 70 个相等的组并确定边缘值。我认为这段代码应该有效:

% Start by assuming x and y are vectors of data:

nBins = 70;
nValues = length(x);
[xsort,index] = sort(x);  % Sort x in ascending order
ysort = y(index);         % Sort y the same way as x
binEdges = [xsort(1:ceil(nValues/nBins):nValues) xsort(nValues)+1];

% Bin the data and get the averages as in previous post (using ysort instead of y):

[h,whichBin] = histc(xsort,binEdges);

for i = 1:nBins
    flagBinMembers = (whichBin == i);
    binMembers = ysort(flagBinMembers);
    binMean(i) = mean(binMembers);
end

这应该会为您提供大小随数据密度而变化的箱。


更新:另一个版本...

这是我在发表一些评论后提出的另一个想法。使用此代码,您可以为 x 中相邻数据点之间的差异设置阈值 (maxDelta)。任何与其较大邻居相差大于或等于 maxDelta 的 x 值都被迫位于自己的 bin 中(全部由其单独的)。您仍然为 nBins 选择一个值,但当分散点降级到它们自己的 bin 时,最终的 bin 数量将大于该值。

% Start by assuming x and y are vectors of data:

maxDelta = 10; % Or whatever suits your data set!
nBins = 70;
nValues = length(x);
[xsort,index] = sort(x);  % Sort x in ascending order
ysort = y(index);         % Sort y the same way as x

% Create bin edges:

edgeIndex = false(1,nValues);
edgeIndex(1:ceil(nValues/nBins):nValues) = true;
edgeIndex = edgeIndex | ([0 diff(xsort)] >= maxDelta);
nBins = sum(edgeIndex);
binEdges = [xsort(edgeIndex) xsort(nValues)+1];

% Bin the data and get the y averages:

[h,whichBin] = histc(xsort,binEdges);

for i = 1:nBins
    flagBinMembers = (whichBin == i);
    binMembers = ysort(flagBinMembers);
    binMean(i) = mean(binMembers);
end

我在几个小样本数据集上对此进行了测试,它似乎达到了预期的效果。希望它也适用于您的数据集,无论它包含什么! =)

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

更好的(非线性)分箱 的相关文章

  • 通过多次合并相同的行向量来构建矩阵

    有没有一个matlab函数可以让我执行以下操作 x 1 2 2 3 然后基于x我想建立矩阵m 1 2 2 3 1 2 2 3 1 2 2 3 1 2 2 3 您正在寻找REPMAT http www mathworks com help t
  • MATLAB 除法...29/128 应该返回 0 吗?

    我真的不认为这是一个精度问题 答案应该是0 226左右 这是确切的代码 val I i j bucketSize pos val bucketSize I只是我从中获取值的矩阵 以下是 MATLAB 的输出 val 29 bucketSiz
  • 如何选择面积最大的对象?

    我用过bwconvhull检测图像的某个部分 正如您在图像中看到的那样 有许多具有特定质心的对象 我想做的是检测面积最大的物体 左起第一个大物体 并忽略其他物体 我应该遵循哪种方法 我将非常感谢您的帮助 以下是代码 由于我仍在努力 所以写得
  • 矩阵乘法 - 视图/投影、世界/投影等

    在 HLSL 中有很多矩阵乘法 虽然我了解如何以及在何处使用它们 但我不确定它们是如何导出的或它们的实际目标是什么 所以我想知道是否有在线资源可以解释这一点 我特别好奇将世界矩阵乘以视图矩阵以及世界 视图矩阵乘以投影矩阵背后的目的是什么 您
  • 在网格中查找具有相同值的相邻单元格。想法如何改进这个功能?

    我是 Python 新手 学习了 1 个多月 我尝试创建 Tic Tac Toe 然而 一旦我完成了它 我决定扩展棋盘 从 3x3 到 9x9 具体取决于客户的输入 并通过在棋盘上的任意位置连接 4 个行 列或对角线来获胜 因此 我需要一个
  • 保存符号方程以供以后使用?

    From here http www mathworks com help releases R2011a toolbox symbolic brvfu8o 1 html brvfxem 1 我正在尝试求解这样的符号方程组 syms x y
  • scipy 将一个稀疏矩阵的所有行附加到另一个稀疏矩阵

    我有一个 numpy 矩阵 想在其中附加另一个矩阵 这两个矩阵的形状为 m1 shape 2777 5902 m2 shape 695 5902 我想将 m2 附加到 m1 以便新矩阵的形状为 m new shape 3472 5902 当
  • 轴标注问题

    通过运行我编写的以下 matlab 函数 可以互换图中的 x 轴和 y 轴 谁能告诉我问题出在哪里或者帮我解决它吗 预先感谢您的任何帮助 function axislabeling n x 1 1 n y 1 1 n z zeros n n
  • 如何从 matlab 调用 Qtproject?

    我在 matlab 中有一个函数可以写入一个 file txt 我在 qt 项目中使用它 So 当我使用 unix 获取要运行的 qt 编译可执行文件时 我有一个 Matlab 文件 但出现错误 代码 unix home matt Desk
  • Mathworks 生成 Matlab HTML 文档的方法是什么?

    我正在开发共享的 Matlab 代码 我们希望在本地网络中将生成的文档作为可搜索的 HTML 文档共享 我知道以下生成文档的方法 编写一个类似于 C 文件的转换器 这是在中完成的将 Doxygen 与 Matlab 结合使用 http ww
  • 在 Pari-GP 中嵌套特定递归

    每个人 我最初在 Stackexchange 上发布了类似的问题 它已移至此处 可以在链接中找到 在 Matlab 中声明函数递归序列 https stackoverflow com questions 67146061 declaring
  • 查找一个二维矩阵是否是另一个二维矩阵的子集

    最近我参加了一个黑客马拉松 我了解到一个问题 试图在 2d 矩阵中找到网格形式的模式 模式可以是 U H 和 T 并由 3 3 矩阵表示 假设我想展示 H 和 U 1 0 1 1 0 1 1 1 1 gt H 1 0 1 gt U 1 0
  • 如何在Matlab中将图像从笛卡尔坐标更改为极坐标?

    我正在尝试将图像的像素从 x y 坐标转换为极坐标 但我遇到了问题 因为我想自己编写该函数 这是我到目前为止所做的代码 function newImage PolarCartRot read and show the image image
  • MATLAB 中的逻辑数组与数值数组

    我正在比较两个二进制数组 我有一个数组 其中值可以是一或零 如果值相同则为 1 如果不同则为零 请注意 我正在做检查之外的其他事情 因此我们不需要进入矢量化或代码的性质 在 MATLAB 中使用数值数组和逻辑数组哪个更有效 Logical
  • 如何使用 numpy 在二维数组上执行最大/平均池化

    给定一个 2D M x N 矩阵和一个 2D 内核 K x L 我如何返回一个矩阵 该矩阵是使用图像上给定内核进行最大或平均池化的结果 如果可能的话我想使用 numpy 注意 M N K L 可以是偶数也可以是奇数 并且它们不需要彼此完全整
  • Matlab下降低图像质量

    问候 我正在尝试找到一种简单的方法来处理图像 以便将其质量从 8 位降低到 3 位 实现这一目标的最简单方法是什么 干杯 如果要线性缩放 只需将每个像素值除以 255 7 即 如果原始图像存储在矩阵 I 中 则让低分辨率图像 J I 255
  • 获取数组中从右上角到左下角的所有对角线

    我试图存储矩阵中从右上角到左下角的所有对角线 并将它们存储在一个数组中 matrix array 2 0 0 2 3 0 0 3 3 0 0 2 0 0 0 0 预期产出 2 0 3 0 0 2 2 0 0 0 3 0 0 3 0 0 我试
  • MATLAB 子图标题和轴标签

    我有以下脚本来最终绘制 4 x 2 子图 files getAllFiles preliminaries n size files cases cell 1 n m cell 1 n for i 1 1 n S load files i c
  • 反转或点 kxnxn 矩阵的快速方法

    有没有一种快速方法可以使用 numpy 计算 kxnxn 矩阵的逆矩阵 在每个 k 切片处计算逆矩阵 换句话说 有没有办法矢量化下面的代码 gt gt gt from numpy linalg import inv gt gt gt a r
  • 使用 scipy.io 将 python pandas dataframe 转换为 matlab 结构

    我正在尝试使用 scipy io 将 pandas 数据帧保存到 matlab mat 文件 我有以下内容 array1 np array 1 2 3 array2 np array a b c array3 np array 1 01 2

随机推荐

  • 如何在android中的自定义列表视图中实现搜索?

    我的应用程序中有一个编辑文本和一个列表视图 我的列表视图显示联系人列表 我想要带有编辑文本的列表视图过滤器 我在谷歌上搜索了很多 找到了一些例子 但没有一个对我有用 这是我的代码我的自定义适配器 public class ContactLi
  • 如何使用 jQuery 隐藏 ASP.Net CheckBoxList 控件中复选框周围的边框?

    我需要去掉由 CheckBox 控件呈现的各个复选框周围的边框 现在看起来是这样的 ASP Net 标记很简单
  • 从 Flask 视图发送 WebSocket 消息

    我正在尝试制作一个使用 WebSockets 的 Flask 应用程序 这来自 Flask socket 的示例可行 但我如何从常规视图发送消息 与 Flask SocketIO 的使用方式类似 emit and send 方法 在下面的示
  • Google::protobuf + boost::asio 失败

    我研究了现有的例子 使用 boost asio 发送 Protobuf 消息 使用 boost asio read async 读取 Protobuf 对象 Google Protocol Buffers C 的 parseDelimite
  • 移动刻度标签JavaFx 2

    是否可以将刻度标签移动 移动到图表中 目前我看到隐藏 显示刻度标签的 API 是否有可以在图表内移动刻度标签的 API 如果没有 API 那么我可以使用 应用某种技术来完成此任务吗 当前代码 public class Graph exten
  • 将强度点数组转换为标记

    所以我有这个代码 热图已经添加 但现在我需要为每个具有强度点的地方添加标记 我有纬度和经度以及强度 我还想使用该标记显示数据 我有这段代码 但无法为每个强度点添加标记并显示数据 div style width 100 height 600p
  • 在播放 m3u8 文件期间,ACodec 对 OMX_GetExtensionIndex 的调用失败

    这在某种程度上是问题的后续 m3u8 文件无法在 Android 模拟器中播放 我遇到了与那里提出的问题非常相似的问题 但是使用了 JB 已移植到的真实设备 项目详细信息位于 http groups google com group ren
  • 双感叹号? [复制]

    这个问题在这里已经有答案了 可能的重复 是什么 JavaScript 中的 不是 not 运算符 是什么意思啊 JavaScript 中的运算符 双感叹号 是什么意思 所以我正在调试一些代码并遇到了这个 var foo bar 0 this
  • 对列表的一部分进行适当排序

    假设我们有一个列表 a 4 8 1 7 3 0 5 2 6 9 现在 a sort 将就地对列表进行排序 如果我们只想排序怎么办a part列表中的内容 还在吗 在 C 中我们可以这样写 int array 4 8 1 7 3 0 5 2
  • Google Sheets SUM() 不返回零,而是返回一个极小的数字? [复制]

    这个问题在这里已经有答案了 我有一个包含以下值的 Google 表格 12 4840 8 1870 0 9630 3 3210 3 4550 0 3140 3 3470 7 1290 If I SUM 这些 预期结果是0 零 但事实并非如此
  • 如何从android中另一个项目的活动调用一个项目的活动?反之亦然?

    我正在做一个集成项目 其中涉及将两个项目集成为一个 我想要做到这一点的是 我有一个公共项目 这个公共项目的活动应该能够调用其他两个项目的活动 根据不同像按下特定按钮等事件 我该怎么做 可以通过意图吗 另外 其他两个项目的活动应该能够相互调用
  • 为什么公开 List 被认为是不好的? [复制]

    这个问题在这里已经有答案了 根据 FXCop 的说法 List 不应在 API 对象模型中公开 为什么这被认为是不好的做法 我同意丛林中的驼鹿 List
  • Angular 和 Laravel

    如何在 XAMPP 上设置 Laravel 和 Angular js 文件夹结构 我了解创建一个 RESTFULL Laravel API 我一直在开发一个应用程序 但是当我在浏览器中输入类似 contacts john 的地址时 我会得到
  • -webkit-animation-play-state 在 Chrome 中不起作用

    我设置了一个简单的 JSFiddle 来说明问题 暂停状态在哪里 谁能告诉我为什么 Safari 按预期显示动画元素处于暂停状态 但在 Chrome 中动画正在运行 我正在使用 Chrome 33 0 1750 146 想知道这是否是最新版
  • 使用 gradle eclipse 插件指定 JRE 容器

    即使当属性为sourceCompatibility and targetCompatibility设置为特定的 JRE 版本 类路径条目将为JRE CONTAINER只能生成为
  • WiX:更改目录的路径不会更改子目录的路径?

    我有一个 WiX 安装程序 其中包含以下目录声明
  • nmake 致命错误 U1034:语法错误:分隔符丢失

    gnsdk C wrapper sample makefile CC Csc exe CP cp GNSDK LIB PATH lib GNSDK PLATFORM GNSDK WRAPPER LIB PATH lib GNSDK PLAT
  • 如何使用 Alamofire 在多部分表单数据中追加数组?

    I am uploading image with multipart form data using Alamofire but getting some problem while i am passing an array as pa
  • Javascript,单击按钮时增加计数器

    在javascript中 我想制作一个计数器 当您单击按钮时该计数器会增加值 当我第一次单击添加按钮时 数字不会增加 但是当我将值打印到控制台时 结果会增加 小提琴 http jsfiddle net techydude H63As fun
  • 更好的(非线性)分箱

    我问的最后一个问题涉及如何通过 x 坐标对数据进行装箱 解决方案简单而优雅 我很遗憾我没有看到它 这个问题可能更难 或者我可能只是盲目的 我从大约 140000 个数据点开始 将它们分成 70 个沿 x 轴均匀分布的组 然后获取每组的平均位