使用置信度参数找到出现次数最多的元素
finding the most appeared elements with a confidence parameter
我对编程比较陌生,我正在尝试使用 python 开发算法交易系统。现在我有一个包含所有支持级别的列表。打印该列表 returns :
[417.0, 434.0, 432.9, 432.1, 428.4, 425.3, 400.2, 404.7, 400.8,
384.7, 384.5, 393.7, 383.9, 370.9, 384.2, 383.2, 342.9, 371.3,
372.0, 386.1, 377.3, 378.3, 411.2, 413.2, 404.1, 374.7, 380.3,
382.8, 384.4, 387.3, 387.3, 384.9, 382.2, 378.2, 402.7, 397.6,
373.1, 380.0, 377.4, 379.2, 373.6, 371.5, 374.7, 383.3, 379.5]
然后我使用 Plotly 在这些级别上绘制线条。我的问题是,我怎样才能得到差异最小的元素,以便我可以绘制支持集群。 This 显示了一些级别如何重叠或彼此之间的差异非常小,并创建了一个支持区域。
我做了以下事情:
def get_diff(t):
for i in range(len(t)):
return abs(t[i]-t[i+1])
comb = combinations(levelssupp, 2)
print('this', min(comb, key=lambda a: get_diff(a)))
但它 returns 只有一个元组:
(375.0, 375.0)
希望我已经正确理解您的问题。此示例将打印值在阈值范围内的最大列表(此示例中为 1%):
lst = [... your data from the question...]
threshold = 0.01 # 1.0 = 100%, 0.01 = 1%
def get_lists(data):
for v in data:
t = v * threshold
yield [j for j in data if abs(v - j) <= t]
largest_list = max(get_lists(lst), key=len)
print(largest_list)
打印:
[384.7, 384.5, 383.9, 384.2, 383.2, 386.1, 380.3, 382.8, 384.4, 384.9, 382.2, 380.0, 379.2, 383.3, 379.5]
我对编程比较陌生,我正在尝试使用 python 开发算法交易系统。现在我有一个包含所有支持级别的列表。打印该列表 returns :
[417.0, 434.0, 432.9, 432.1, 428.4, 425.3, 400.2, 404.7, 400.8,
384.7, 384.5, 393.7, 383.9, 370.9, 384.2, 383.2, 342.9, 371.3,
372.0, 386.1, 377.3, 378.3, 411.2, 413.2, 404.1, 374.7, 380.3,
382.8, 384.4, 387.3, 387.3, 384.9, 382.2, 378.2, 402.7, 397.6,
373.1, 380.0, 377.4, 379.2, 373.6, 371.5, 374.7, 383.3, 379.5]
然后我使用 Plotly 在这些级别上绘制线条。我的问题是,我怎样才能得到差异最小的元素,以便我可以绘制支持集群。 This 显示了一些级别如何重叠或彼此之间的差异非常小,并创建了一个支持区域。
def get_diff(t):
for i in range(len(t)):
return abs(t[i]-t[i+1])
comb = combinations(levelssupp, 2)
print('this', min(comb, key=lambda a: get_diff(a)))
但它 returns 只有一个元组:
(375.0, 375.0)
希望我已经正确理解您的问题。此示例将打印值在阈值范围内的最大列表(此示例中为 1%):
lst = [... your data from the question...]
threshold = 0.01 # 1.0 = 100%, 0.01 = 1%
def get_lists(data):
for v in data:
t = v * threshold
yield [j for j in data if abs(v - j) <= t]
largest_list = max(get_lists(lst), key=len)
print(largest_list)
打印:
[384.7, 384.5, 383.9, 384.2, 383.2, 386.1, 380.3, 382.8, 384.4, 384.9, 382.2, 380.0, 379.2, 383.3, 379.5]