试图理解scipy的optimize.minimize函数,得到indexerror

时间:2014-02-28 17:18:14

标签: scipy ipython mathematical-optimization

我正在尝试使用sklearn的优化函数编写将优化多变量函数的代码,但它会一直返回一个IndexError,我不知道从哪里开始。

代码是这样的:

revcoeff = coefficients[::-1]
xdot = np.zeros(0)
normfeat1 = normfeat1.reshape(-1,1)
xdot = np.append(normfeat1, normfeat2.reshape(-1,1), axis=1)
a = revcoeff[1:3]
b = xdot[0, :]    

seed = np.zeros(5)   #does seed need to be the coefficients? not sure
fun = lambda x: np.multiply((1/666), np.power(np.sum(np.dot(a, xdot[x, :])-medianv[x]),2))     #costfunction

optsol = optimize.minimize(fun, seed)

我在最近邻算法中使用了两个功能。拟合回归模型的系数被给予数组“系数”。

我无法理解的是1)为什么我的代码抛出“IndexError:用作指标的数组必须是整数或布尔类型”....而且部分我对optimize.minimize感到困惑功能本身。它接受两个输入值,即函数和x0(带有初始猜测的ndarray)。 x0应该是什么,系数值?或者我选择随机值,有多少是必要的?

1 个答案:

答案 0 :(得分:0)

np.zeros()默认情况下不返回整数。例如,请尝试使用np.zeros(5, dtype=int)。但是,它无法解决代码的所有问题。您会看到其他一些错误消息。

另外,请注意,1/666返回0而不是0.00150150。你可能想要1 / 666.0。

如果您可以清理代码将会有所帮助,因为它的一半是没用的。