我在这里搜索并用谷歌搜索,但没有结果。在 Weka 中进行聚类时,有一个方便的选项,即类到聚类,它将算法生成的聚类(例如简单的 k 均值)与您作为类属性提供的“基本事实”类标签相匹配。这样我们就可以看到聚类准确率(错误百分比)。
现在,我如何在Matlab中实现这一点,即将我的clusterClasses向量eg转换[1, 1, 2, 1, 3, 2, 3, 1, 1, 1]为与提供的地面真实标签向量eg相同的索引[2, 2, 2, 3, 1, 3]?
我认为它可能是基于聚类中心和标签中心,但我不知道如何实现!
任何帮助将不胜感激。
文森特
我遇到过这篇文章:How to generate all permutations of a list in Python
但我需要更多的东西,即一个字符串的所有排列以及所有子串的所有排列。我知道这是一个很大的数字,但这可能吗?
l = [True, True , False]
Run Code Online (Sandbox Code Playgroud)
不使用itertools模块。
您如何在新的L中创建l的排列 list
newlist = [[True,True,False],[True,True,True], [False,False,True],[False,False,False]....]
Run Code Online (Sandbox Code Playgroud)
本质上,这就是我想做的事情:
allorderings = itertools.product ([False, True], repeat = n)
Run Code Online (Sandbox Code Playgroud) 我理解代码的要点,它形成了排列; 但是,我想知道是否有人能够在退货声明中准确解释发生了什么.
def perm(l):
sz = len(l)
print (l)
if sz <= 1:
print ('sz <= 1')
return [l]
return [p[:i]+[l[0]]+p[i:] for i in range(sz) for p in perm(l[1:])]
Run Code Online (Sandbox Code Playgroud) 我试图在受边界条件约束的投资组合中生成所有可能的金融工具组合。
例如,假设我有一组列表,这些列表代表对投资组合的分配,受每种工具的总投资组合规模的最小和最大百分比影响:
"US Bonds" = {0.10,0.15,0.20,0.25,0.30}
"US Equities" = {0.25, 0.30, 0.35, 0.40, 0.45, 0.50}
"European Bonds" = {0.10, 0.15, 0.20}
"European Equities = {0.20,0.25,0.30,0.35,0.40,0.45,0.50}
...
"Cash" = {0.0, 0.05, 0.10, 0.15,...0.95}
Run Code Online (Sandbox Code Playgroud)
我的资产清单如下所示:
[In]
Asset
[Out]
[[0.1, 0.15, 0.2, 0.25, 0.30],
[0.25, 0.30,0.35, 0.40, 0.45, 0.50],
[0.1, 0.15, 0.2],
[0.20, 0.25, 0.30,0.35, 0.40, 0.45, 0.50]
...
[0.0, 0.05, 0.1, 0.15, 0.2, 0.25,...0.95]]
Run Code Online (Sandbox Code Playgroud)
在每种工具组合之和必须 = 1 的条件下,生成所有可能的投资组合的最有效方法是什么?
现在,我正在创建一个“投资组合”列表,如下所示:
portfolios = [item for item in itertools.product(*asset) if np.isclose(sum(item),1)]
Run Code Online (Sandbox Code Playgroud)
(注意,'np.isclose' 负责处理时髦的 fp 算术)。 …
假设我有两个字符:a& b。我想获得所有可能的名单排列的a,并b对于给定长度(即5),使用Python 2.7。
我查看了itertools.permutations,但找不到允许我使用 2 个字符来构建超过 2 个字符的排列的方法。
我还查看了 Python 排列的多个 SO 答案,例如this one,但这与其他答案一起只会给出len(input)长度排列。
另外,如果有使用不同编程语言的好方法,请提出建议。我并没有一成不变地为此使用 Python。
我有一个 1 和 2 的列表,例如 [2, 1, 1, 1] 我需要获得所有可能的组合:
[[2, 1, 1, 1],
[1, 2, 1, 1],
[1, 1, 2, 1],
[1, 1, 1, 2]]
Run Code Online (Sandbox Code Playgroud)
我尝试使用 itertools 的产品,但是,它多次返回相同的结果(例如 [2, 1, 1, 1]),并且在输入较大时效率低下。是否有一些内置功能用于这样的事情?
所以我正在创建一个单词生成器,它接受几个输入的字母,将它们放在所有可能的位置,并将它们与文档匹配以查找单词.如果我接近这个错误请告诉我!如果不是我怎么能这样做?谢谢
编辑:我混淆了排列和组合之间的区别。编辑问题只是为了保持它(因为我无法删除它)。虽然我意识到了我的错误。
我一直在浏览这个问题,但找不到适合我正在寻找的唯一解决方案。
基本概念是如果我运行一个函数gen_permutations([1,2])来生成排列。我会得到结果([1,2],[2,1]),尽管在这个结果中,我会将它们归类为同一组。
我会考虑检查一些东西,result[0] < result[1]然后将其添加到结果集中。但是,例如,这将如何扩大规模gen_permutations(input, size=n | n <= len(input))?
对不起,如果有一个问题对此有答案,但所有“类似问题”都指出我只是“独特的结果”,其中 [1,2] != [2,1]。
编辑:混淆案例,该函数gen_permutations只是我在这里找到并使用的通用生成器How to generate all permutations of a list in Python
另一个让它变大的例子。我可以运行这个案例
for i in permutations([1,2,3,4],3):
print i
Run Code Online (Sandbox Code Playgroud)
得到结果
(1, 2, 3), (1, 2, 4),(1, 3, 2),(1, 3, 4),(1, 4, 2),(1, 4, 3),(2, 1, 3),(2, 1, 4),(2, 3, 1),(2, 3, 4),(2, 4, 1),(2, 4, 3),(3, 1, 2),(3, 1, 4),(3, 2, 1),(3, 2, 4),(3, 4, 1),(3, …
我有一个函数get_appendable_values(sequence),它接受一个序列(甚至是空的)并返回可附加到该序列(作为最后一个元素)的所有值的列表。我需要根据此函数中定义的规则并从空序列开始,生成 4 个元素的所有可能序列。
例子 :
假设 的实现get_appendable_values是:
def get_appendable_values(sequence):
'''Dummy rules'''
if len(sequence) == 2:
return [4, 12]
if sequence[-1] == 4:
return [7]
return [0, 9]
Run Code Online (Sandbox Code Playgroud)
预期输出:
[[0, 0, 4, 7],
[0, 0, 12, 0],
[0, 0, 12, 9],
[0, 9, 4, 7],
[0, 9, 12, 0],
[0, 9, 12, 9],
[9, 0, 4, 7],
[9, 0, 12, 0],
[9, 0, 12, 9],
[9, 9, 4, 7],
[9, 9, 12, 0],
[9, 9, 12, 9]] …Run Code Online (Sandbox Code Playgroud) python ×9
permutation ×3
combinations ×2
algorithm ×1
alphabetical ×1
matlab ×1
numpy ×1
python-2.7 ×1
recursion ×1
weka ×1