gpt4 book ai didi

python - 生成给定条件的列表的所有组合

转载 作者:行者123 更新时间:2023-11-30 22:25:17 25 4
gpt4 key购买 nike

我想为 k 个变量的列表生成长度为 n 的所有组合。我可以按如下方式执行此操作:

import itertools
import pandas as pd
from sklearn import datasets

dataset = datasets.load_breast_cancer()
X = dataset.data
y = dataset.target
df = pd.DataFrame(X, columns=dataset.feature_names)
features = dataset.feature_names

x = set(['mean radius', 'mean texture'])

for s in itertools.combinations(features, 3):
if x.issubset(set(s)):
print s

len(features) = 30,因此这将生成 4060 个组合,其中 n=3。当 n=10 时,这是 30,045,015 种组合。

len(tuple(itertools.combinations(features, 10)

然后将根据条件语句评估每个组合。然而,对于 n>10,这变得不可行。

不是像本示例中那样生成所有组合,然后按某些条件进行过滤,是否可以在给定此条件的情况下生成所有组合?

换句话说,如果组合中出现“平均半径”和“平均纹理”,则生成 n=3, 4, 5 ... k 的所有组合?

最佳答案

只需生成没有'平均半径''平均纹理'的组合,并将这两个添加到每个组合中,从而大大减少组合​​的数量。这样您就不必进行过滤,生成的每个组合都会有用。

# remove the fixed features from the pool:
features = set(features) - x
for s in itertools.combinations(features, n - len(x)):
s = set(s) & x # add the fixed features to each combination
print(s)

关于python - 生成给定条件的列表的所有组合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47578425/

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