我试图找到下面数组中元素的二阶导数的最小值:
scores = [-100.07, -40.04, -26.97, -17.31, -13.12, -9.02, -7.22,
-5.23, -4.37, -3.44, -2.92, -2.36, -2.11, -1.78,
-1.59, -1.37, -1.23, -1.1 , -0.97, -0.87]
当k
为20时绘制这些数据会产生下图。我用红色圈出了最佳的"基于此分数度量的聚类数量。
但问题是,我必须手动干预(即计算机没有选择这一最小化点)。我宁愿让计算机选择合适的k
,所以我试图找到二阶导数最小的点。
我尝试过差分,例如
import numpy as np
first_diff = np.diff(scores, 1)
second_diff = np.diff(scores, 2)
但这并不令人满意,因为第二个差异的序列会产生一些正数,然后产生一些负数,这些数字在使用np.argmin
时不会产生我想要的结果。使用百分比变化也不会很好。
是否有可靠的方法来区分这些类型的载体?