gpt4 book ai didi

c# - 表示用于查找的三元图数据

转载 作者:太空狗 更新时间:2023-10-29 21:40:31 25 4
gpt4 key购买 nike

Soil Types

我试图在这个三元图上表示数据以供查找。我希望能够将所有三个值都输入一个函数并返回这些值属于哪个区域类别。我正在研究的方法是使用笛卡尔坐标将每个区域转换为多边形。然后将提供的值转换为一个点并检查该点是否位于哪个多边形内。我很确定这会奏效,但对于简单的查找来说,这似乎有点矫枉过正?

我想问是否有一种方法可以用数组或对象表示此图上的数据,以便进行简单的查找就足够了?

最佳答案

可以将上述内容转换为笛卡尔坐标系,但我认为您忽略了实际执行此操作所需的重要方面。

在上图中,您将多边形视为二维结构,但您有一个三维 点。这并非不可能,毕竟我们在上面的二维平面上看到了三角形,但转换到笛卡尔空间并不是那么简单。

相反,这看起来非常很像 decision tree 的图形表示。 .看起来粘土、淤泥和沙子的数量读数是用来开发这种表示的。

基本上,您有一个包含三个值的元组,并且您希望根据这些值进行分类。

在上述情况下,您可以将分类“淤泥”的决策树建模为:

// These are approximate based on above.  Each branch of the
// tree is evaluated on one value out of all the values.
if (silt >= .8)
{
// True case. Check sand content.
if (sand >= .20)
{
// Something else, other branches.
}
else
{
// False case, can possibly be silt.
if (clay >= .125)
{
// Something else, other branches.
}
else
{
// Leaf, this is a classification.
// Can return more strongly typed classification if you want.
return "silt";
}
}

}
else
{
// Something else, other branches.
}

每个 if/else 语句代表决策树中的一个分支。在每个分支,您需要评估在分支中的那个点给您最多的变量值 information gain (听起来很像,你能从那个 split 中做出多少分类?)这是基于 entropy (或不确定性)根据该变量做出决定。

树可以自动生成,也可以自己手动编码。虽然后者是可能的,但我强烈建议使用自动化/基于代码的方法来开发它。我强烈建议看一下 Accord.NET (这需要 AForge.NET ,两者都优秀)。为了让你开始,你应该看看这个 blog post showing how to create decision trees using Accord.NET .

无论采用哪种方式,您最终都会得到一个函数,该函数采用三个值(粘土、淤泥和沙子)并返回您的分类,根据每个值遍历树。

请注意,您不一定要有一组一对一的标准(分支)来映射到每个分类(如第一个代码示例中所示)。根据上例中多边形的顶点数量,您将需要额外的分支来处理这些情况。

如果您有原始示例数据,那么您只需通过决策树构建器运行示例数据,它应该会创建一个像上面那样的决策树。

如果您没有原始样本数据,您可以创建它使用上面的顶点并对它们进行分类。例如:

silt    sand    clay    classification
---- ---- ---- --------------
0 50 100 clay (top point)
100 0 50 silt (right bottom point)
50 100 0 sand (left bottom point)
15 45 40 sandy clay OR clay cloam OR clay (depending on splits)
...

关于最后一行(及后续行),决策树将根据这些值设置边界,因为它是 continuous它通常会根据所有大于或等于该值的值做出决定。

关于c# - 表示用于查找的三元图数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12520003/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com