在不知道函数的情况下最小化离散矢量/数组?

时间:2016-10-20 14:00:37

标签: python vector difference derivative

我试图找到下面数组中元素的二阶导数的最小值:

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时绘制这些数据会产生下图。我用红色圈出了最佳的"基于此分数度量的聚类数量。

enter image description here

但问题是,我必须手动干预(即计算机没有选择这一最小化点)。我宁愿让计算机选择合适的k,所以我试图找到二阶导数最小的点。

我尝试过差分,例如

import numpy as np
first_diff = np.diff(scores, 1)
second_diff = np.diff(scores, 2)

但这并不令人满意,因为第二个差异的序列会产生一些正数,然后产生一些负数,这些数字在使用np.argmin时不会产生我想要的结果。使用百分比变化也不会很好。

是否有可靠的方法来区分这些类型的载体?

0 个答案:

没有答案