我有一个巨大的数据集,从中我得到两组数据点,然后我必须绘制和比较。这两个图的范围不同,所以我希望它们在[0,1]的范围内。对于以下代码和特定的数据集,我在1处获得一条常量行作为数据集绘图,但此规范化对于其他集很有效:
plt.plot(range(len(rvalue)),np.array(rvalue)/(max(rvalue)))
对于此代码:
oldrange = max(rvalue)-min(rvalue) #NORMALIZING
newmin=0
newrange = 1 + 0.9999999999 - newmin
normal = map(lambda x, r=float(rvalue[-1] - rvalue[0]): ((x - rvalue[0]) / r)*1 - 0, rvalue)
plt.plot(range(len(rvalue)),normal)
我知道错误:
ZeroDivisionError: float division by zero
对于所有数据集。我不知道如何把这两个图放在一个范围内比较。
使用数据序列中的最小值和最大值,使用以下方法规范化0到1范围内的数据:
查找数组的范围由
numpy
内置函数numpy.ptp()
提供,您的问题可以通过以下方式解决:使用scikit: http://scikit-learn.org/stable/modules/preprocessing.html#scaling-features-to-a-range
它具有内置函数,可以将特征缩放到指定范围。您将在这里找到其他要规范化和标准化的函数。
请参见以下示例:
相关问题 更多 >
编程相关推荐