Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 用适当的范围对序列数据进行分类_Python_Sequence - Fatal编程技术网

Python 用适当的范围对序列数据进行分类

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_测试)(谢谢

我有一个序列数据集,值在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_测试)
(谢谢@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]