【发布时间】:2021-12-25 01:39:42
【问题描述】:
我正在处理的数据代表 5 个栖息地中是否存在某些物种。我想根据它们之间的共享区域获得集群,基本上我想最大化每个物种的元素之间的匹配。
这是原始数据集
这就是我正在寻找的排序类型
通过简单地对占用区域的数量进行排序,然后手动修复明显的错误,我设法获得了 3 个组。
这种非常简化的算法之所以有效,是因为被占用的区域总是连续的,并且存在一些常见的模式。
起初我认为这个问题与Sequence Alignment 有点相似,但我真的想不出任何方法将这些算法应用于我的案例。此外,我还想找到一种自动方法将这些数据分成 3 组,但这并不是绝对必要的。
真正的挑战是对包含空白的new Dataset 进行排序。
我认为最好的方法应该是:
- 计算每对可能的物种之间的匹配和不匹配数量
- 找到与第一个匹配最多的物种并将它们彼此相邻设置
- 对第二个物种(刚刚重新定位的那个)重复,不包括对第一个物种的检查(以避免无限循环),依此类推...
## Original df
Species Zones array
0 A [0, 1, 1, 1, 1]
1 B [0, 1, 1, 1, 1]
2 C [0, 1, 1, 1, 1]
3 D [0, 1, 1, 0, 0]
4 E [0, 1, 1, 1, 1]
5 F [0, 1, 1, 1, 1]
6 G [0, 1, 1, 1, 1]
7 H [0, 1, 1, 1, 1]
8 I [1, 1, 1, 1, 1]
9 J [0, 1, 1, 1, 1]
10 K [1, 1, 1, 0, 0]
11 L [1, 1, 1, 0, 0]
12 M [1, 1, 1, 1, 1]
13 N [0, 1, 1, 1, 1]
14 O [0, 0, 1, 1, 1]
15 P [0, 1, 1, 1, 1]
16 Q [0, 0, 1, 1, 1]
17 R [1, 1, 1, 0, 0]
18 S [0, 1, 1, 1, 1]
19 T [0, 1, 1, 1, 0]
20 U [0, 1, 1, 1, 1]
## Sorted df
Species Zones array
0 A [1, 1, 1, 1, 1]
1 B [1, 1, 1, 1, 1]
2 C [0, 1, 1, 1, 1]
3 D [0, 1, 1, 1, 1]
4 E [0, 1, 1, 1, 1]
5 F [0, 1, 1, 1, 1]
6 G [0, 1, 1, 1, 1]
7 H [0, 1, 1, 1, 1]
8 I [0, 1, 1, 1, 1]
9 J [0, 1, 1, 1, 1]
10 K [0, 1, 1, 1, 1]
11 L [0, 1, 1, 1, 1]
12 M [0, 1, 1, 1, 1]
13 N [0, 1, 1, 1, 1]
14 O [0, 0, 1, 1, 1]
15 P [0, 0, 1, 1, 1]
16 Q [0, 1, 1, 1, 0]
17 R [0, 1, 1, 0, 0]
18 S [1, 1, 1, 0, 0]
19 T [1, 1, 1, 0, 0]
20 U [1, 1, 1, 0, 0]
## New gapped df
Species Prey
0 A [1, 1, 1, 0, 1, 0, 1, 1, 1]
1 B [1, 0, 1, 0, 1, 1, 1, 0, 1]
2 C [1, 1, 1, 0, 1, 0, 1, 0, 1]
3 D [1, 1, 1, 0, 1, 0, 1, 0, 0]
4 E [1, 1, 1, 0, 1, 0, 0, 0, 0]
5 F [1, 0, 1, 0, 1, 1, 0, 0, 0]
6 G [1, 1, 1, 1, 0, 0, 0, 0, 0]
7 H [1, 1, 1, 0, 0, 0, 0, 0, 0]
8 I [1, 0, 1, 0, 0, 0, 0, 0, 0]
9 J [0, 0, 1, 0, 0, 1, 0, 0, 0]
10 K [1, 0, 1, 0, 0, 0, 0, 0, 0]
11 L [1, 0, 1, 0, 0, 0, 0, 0, 0]
12 M [1, 0, 0, 0, 0, 0, 0, 0, 0]
13 N [0, 0, 0, 0, 0, 1, 0, 0, 0]
14 O [1, 0, 0, 0, 0, 0, 0, 0, 0]
15 P [1, 0, 0, 0, 0, 0, 0, 0, 0]
16 Q [0, 0, 0, 0, 0, 1, 0, 0, 0]
17 R [1, 0, 0, 0, 0, 0, 0, 0, 0]
18 S [0, 0, 1, 0, 0, 0, 0, 0, 0]
19 T [0, 0, 1, 0, 0, 0, 0, 0, 0]
20 U [0, 0, 1, 0, 0, 0, 0, 0, 0]
【问题讨论】:
-
添加演示数据框而不是图片
-
当然,我正在创建它
标签: python pandas dataframe sorting cluster-analysis