【问题标题】:Pareto function with DataFrames in Julia?Pareto 函数在 Julia 中使用 DataFrames 吗?
【发布时间】:2021-02-04 15:28:18
【问题描述】:

你知道我在哪里可以找到 Julia 中 DataFrames 的 max() min() 函数吗?数据框包括 X、Y、Z 坐标。我想找到具有最高 x & y 坐标的点的最大值。 还是应该使用“for 循环”和“if 条件”?

1.编辑: 例如,我有不同的 X、Y、Z 坐标点,我实际上想找到 X 坐标最高的点。我已经对数据框进行了排序。 但是如何找到具有最高 X 和 Y 坐标的点?结合...从数据中的所有其他点。

2.编辑: 在这种情况下,帕累托效果很好,也许这是我的错误解释。如何使用该原理使所有粒子围绕圆圈?目标是获得所有相关的粒子--> 封闭的圆,当然它只是一个圆的近似值。到达圈子的示例条件:

  1. 点:X 和 Y 最大值
  2. 点:X 和 Y 最小值
  3. 点:X 最大值和 Y 最大值/2
  4. 点:X 最大值/2 和 Y 最大值
  5. ...

谢谢!

【问题讨论】:

  • 你能举个例子,因为“在具有最高 x && y 坐标的一行中的最高值”对我来说并不完全清楚”。总的来说 - 无论你想要什么使用 DataFrames.jl 可以轻松实现,所以一旦我了解您需要什么,我就可以给您代码。
  • 我编辑了帖子!
  • 好的。我假设您想找到您的数据的Pareto frontier?在这种情况下,您可以使用链接的 Wikipedia 页面中描述的解决此问题的算法。
  • 嗯,太棒了!没听说过。谢谢!你知道 Julia 中的任何相关资源吗?
  • 这可以通过多种方式完成。其中之一是github.com/anriseth/MultiJuMP.jl,但我不能 100% 确定它是否适合您的用例(在简单​​的场景中,它很容易排序和过滤;我将添加一个示例作为解决方案,以便您有一些开始)。

标签: function dataframe julia pareto-optimality


【解决方案1】:

首先生成数据:

julia> using DataFrames, PyPlot

julia> df = DataFrame(x=rand(1000), y=rand(1000));

julia> filter!(sdf -> sdf.x^2+sdf.y^2 < 1, df);

julia> scatter(df.x, df.y);

得到类似的东西:

现在你建立一个帕累托前沿:

julia> sort!(df, rev=true);

julia> pareto = df[1:1, :];

julia> foreach(row -> row.y > pareto.y[end] && push!(pareto, row), eachrow(df));

julia> scatter(pareto.x, pareto.y);

得到:

(你有属于帕累托前沿的点以橙色绘制)

【讨论】:

  • 是的,这太棒了。我在上面放了更多信息。
  • Again - “如何使用该原理让所有粒子在相同条件下绕圆?”对我来说不是很清楚吗?您是否可以使用数学公式指定您需要得到的东西?
  • 我明白了,看上面。在您的示例中,它将获取位于绘图外部位置的所有点。有帮助吗?
  • 那么这是您想要的另一件事 - 它是您的一组点的凸包。见这里:en.wikipedia.org/wiki/Convex_hull。算法在此处描述en.wikipedia.org/wiki/Convex_hull_algorithms。这里有一个与github.com/JuliaPolyhedra 相关的软件包列表。如果您在实施它们时遇到问题,我认为您最好再问一个问题。
  • 在我使用这种方法之后,将来是否有可能在中间切割它以获得二维视图中的切割边缘?还是我在这里走错了路?
猜你喜欢
  • 1970-01-01
  • 2021-03-03
  • 1970-01-01
  • 1970-01-01
  • 2021-11-20
  • 1970-01-01
  • 2015-12-22
  • 2021-11-20
  • 1970-01-01
相关资源
最近更新 更多