我们有一个价格列表,需要找到集群(或区间)的数量和每个集群(或区间)的平均价格。唯一的限制是我们希望集群均值彼此之间至少有 X 距离。
K-means 似乎不起作用,因为它需要指定集群的数量作为输入。
发现这些的原因是价格成为一个“重要”集群,具有更多数据点作为交易的支撑位和阻力位。目前,这个过程是通过简单的人工观察图表上的价格集群来完成的。但这里的目的是在算法中对此进行量化,使其更加客观和可衡量。
我们有一个价格列表,需要找到集群(或区间)的数量和每个集群(或区间)的平均价格。唯一的限制是我们希望集群均值彼此之间至少有 X 距离。
K-means 似乎不起作用,因为它需要指定集群的数量作为输入。
发现这些的原因是价格成为一个“重要”集群,具有更多数据点作为交易的支撑位和阻力位。目前,这个过程是通过简单的人工观察图表上的价格集群来完成的。但这里的目的是在算法中对此进行量化,使其更加客观和可衡量。
为什么:一维数据可以排序。利用排序的算法比不利用排序的算法效率更高。
忘记诸如“数据挖掘”和“集群”之类的流行语吧!
对于您的任务,我建议您使用内核密度估计。这是一种从统计学中得到充分证明的技术,而且非常灵活。要对数据进行聚类,请在密度估计中查找最大值和最小值以拆分数据。它速度快,并且比聚类分析具有更强大的理论背景。
本质上,使用聚类分析,当您的数据如此庞大和复杂时,您无法再使用经典的统计建模。当您有太多变量和太复杂的过程来建模它们时。当密度估计不再起作用时。当您无法再可视化数据时。
即使在二维数据中,也不要进行聚类分析。可视化您的数据,并手动标记您的集群。k-means等方法无论如何都会产生k-cluster结果;即使您的数据集中没有集群!因为他们盲目地优化了一些数学方程,没有进行实际检查。如果您手动对数据进行聚类,您的结果将更有意义。
您可以只估计价格的概率密度函数。如果它们是正态分布的混合,希望您会在混合的高斯核中观察到几个峰值。它可以用 Python 轻松实现,我相信也有其他语言的包。
from scipy.stats import kde
import matplotlib.pyplot as plt
density = kde.gaussian_kde(x) # x: list of price
xgrid = np.linspace(x.min(), x.max(), Num_Price)
plt.plot(xgrid, density(xgrid))
plt.show()