Python 用适当的范围对序列数据进行分类
我有一个序列数据集,值在0-200(最小-最大值)之间变化。我试图用适当的范围和整数值(如0-1-2)对它们进行分类。例如:Python 用适当的范围对序列数据进行分类,python,sequence,Python,Sequence,我有一个序列数据集,值在0-200(最小-最大值)之间变化。我试图用适当的范围和整数值(如0-1-2)对它们进行分类。例如: y_测试=[0如果(i(max(y_测试)/5)和(i(2*max(y_测试)/5)和(i(3*max(y_测试)/5))和(i(4*max(y_测试)/5)和(i可能尝试使用更面向数学的方法: y_测试=[int(i*6/(max(y_测试)+1])表示y_测试中的i] 其思想是将输入缩放到0-5,然后向下取整 编辑:为了提高速度,您可以预先计算max(y_测试)(谢谢
y_测试=[0如果(i(max(y_测试)/5)和(i(2*max(y_测试)/5)和(i(3*max(y_测试)/5))和(i(4*max(y_测试)/5)和(i可能尝试使用更面向数学的方法:
y_测试=[int(i*6/(max(y_测试)+1])表示y_测试中的i]
其思想是将输入缩放到0-5,然后向下取整
编辑:为了提高速度,您可以预先计算max(y_测试)
(谢谢@JohnColeman)
max_val=max(y_测试)+1
y_测试=[y_测试中i的int(i*6/max_val)]
也许可以尝试使用更注重数学的方法:
y_测试=[int(i*6/(max(y_测试)+1])表示y_测试中的i]
其思想是将输入缩放到0-5,然后向下取整
编辑:为了提高速度,您可以预先计算max(y_测试)
(谢谢@JohnColeman)
max_val=max(y_测试)+1
y_测试=[y_测试中i的int(i*6/max_val)]
您所说的是等宽箱子。如果您想将数据分成等宽的k
箱子,箱子的宽度应为w=(max-min)/k
。数据点x
的箱子编号应为i
号,满足以下条件:
min + i*w <= x < min + (i+1)*w
你说的是等宽箱子。如果你想把数据分成等宽的箱子,箱子的宽度应该是w=(max-min)/k
。数据点x
的箱子号应该是i
号,它满足:
min + i*w <= x < min + (i+1)*w
为什么200
硬连接在第一行的一个子句中,而max(y\u test)
在其他地方都被使用?第一行似乎与代码的其余部分不太协调,不清楚您要做什么。是的,它被忘记了。它也应该是相同的(max(y\u test))为什么200
硬连接在第一行的一个子句中,而max(y\u test)
在其他地方都被使用?第一行似乎与代码的其余部分不太协调,不清楚您要做什么。是的,它被忘记了。它也应该是相同的(max(y\u test))它运行太慢。完成此过程需要太多时间。合理答案(+1)。缓慢是不断重新计算max(y\u test)
的结果。您可以通过在理解之前预计算来提高性能。它运行太慢。完成此过程需要太多时间。合理答案(+1)。缓慢是不断重新计算max(y\u test)
的结果。您可以通过在理解之前预先计算来提高性能。
import math
def bin_nums(data,k):
a = min(data)
b = max(data)
if a == b:
return [0]*len(data)
else:
m = k/(b-a) #reciprocal of (b-a)/k
return [math.floor(m*(x-a)) if x < b else k-1 for x in data]