WPF 通过数据归一化提高WPF绘图效率
这里不对归一化做太多介绍。
首先我们使用的都称作为特征缩放的四种方法之一,min-max normalization的算法
总体而言,缩放数据到0~1,不改变数据分布。
算法也是非常简单。
计算过程为遍历子项减去集合的最小值并除以集合的最大值-集合的最小值
因为我们是point集合所以要分别计算X,Y值,得出的值是0~1之间的值,我们可以看做是某数的百分比,所以我们可以分别乘与想要与之呈现的大小而得到在呈现大小的对应点。
以上过程还可以叫数据区间映射。
另外 因为使用的WPF,所以都是使用浮点数,在数据非常多的情况下可以通过转换为整数来滤除一些非关键数据【无科学验证,个人猜的...】
例如一千个点,通过算法并转换为整数,会减少四五百左右,不过看不出来是否改变了数据分布的..【按道理应该是又改变了】
编程很简单就不上了。
数据缩放
//转为int整数 //后置整数为要呈现的大小 private Point Normalization(Point p) => new Point ( (double)(int)((p.X - MinX) / (MaxX-MinX)*1900), (double)(int)((p.Y - MinY) / (MaxY - MinY)*200) ); //后置整数为要呈现的大小 private Point Normalization2(Point p) => new Point ( ((p.X - MinX) / (MaxX - MinX) * 400), ((p.Y - MinY) / (MaxY - MinY) * 200) );
贴一个数据筛选的东西吧
LP2 = LP.Select(x => Normalization(x)).GroupBy(x => x.X, x => x).Select(z=>z.ToList().OrderByDescending(w=>w.Y).ToList()[0]).ToList();
//源集合首先数据缩放,再根据X值分组后筛选出降序排列的点集合中Y值最大的点并重组为集合
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现