gpt4 book ai didi

python - Python 中的 List-Then-Eliminate 实现

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:52:40 26 4
gpt4 key购买 nike

我正在尝试使用数据集实现 List-Then-Eliminate 算法。但是,最后我得到了错误的向量空间。我无法弄清楚问题是什么。

基本上,我遍历所有训练实例。对于每个假设,我使用最后 5 位来检查训练实例 x 是否相同,然后比较 c(x)

如有任何帮助,我们将不胜感激。下面是我的代码。

def gen_vector_space(k):
return [''.join(x) for x in itertools.product('01', repeat=k)]

#basically values from 0-65536 in binary
vector_space = gen_vector_space(pow(2,4))

for train_inst in train_data:

result = train_inst[-1]
d = train_inst[:-1]

for h in vector_space:
if h[-5:-1] == d:
if (h[-1] != result):
vector_space.remove(h)
print(len(vector_space))

最佳答案

我建议对创建向量空间的函数进行编辑。从您的原始功能开始:

def create_space(k):
return [''.join(x) for x in itertools.product('01', repeat=k)]

当您调用该函数时,您是在该范围内完全迭代以构建列表,然后再次迭代该列表以过滤掉值。解决此问题的两种方法:

函数中的 If 语句

# Redefine your function to only return values that matter to you

def create_space(k, d, result):
"""
This will filter out your limits, takes result and d as params
"""
vector_space = []

for x in itertools.product('01', repeat=k):
if x[-5:-1]==d and x[-1]!= result:
vector_space.append(x)

return vector_space

# define k, d, and result here

vector_space = create_space(k, d, result)

生成器方法

或者,yield 关键字将一次计算一个值,因此您只迭代一次:

def create_space(k):
for x in itertools.product('01', repeat=k):
yield x


vector_space = []

# define d and result here

for x in create_space(k):
if x[-5:-1]==d and x[-1]!= result:
vector_space.append(x)

这两种方法中的任何一种都需要注意的是,我在迭代时并没有编辑一个已经建立的对象。相反,我在创建空间之前就进行了过滤,这样您就可以在第一次访问时得到您想要的内容。

关于python - Python 中的 List-Then-Eliminate 实现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54834787/

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