当使用scipy.optimize的fmin时,我得到一个错误,我不明白:
ValueError: setting an array element with a sequence.
下面是一个简单的平方误差示例来演示:
import numpy as np
from scipy.optimize import fmin
def cost_function(theta, X, y):
m = X.shape[0]
error = X.dot(theta) - y
J = 1/(2*m) * error.T.dot(error)
return J
我试图通过寻找具有最小错误值的参数来拟合sin函数。
下面是我的代码:
import numpy as np
import scipy.optimize as opt
from scipy.optimize import leastsq
import matplotlib.pyplot as plt
def func_model(x, para):
''' Model: y = a*sin(2*k*pi*x+theta)'''
a, k, theta = para
return a*np.sin(2*k*np.pi*x+
我在努力
基于fmin的数据拟合
,其中包含使用fmin的下列代码
# fitting the data with fmin
p0 = rand(3) # initial parameter value
p = fmin(e, p0, args=(x,y))
但是,当我尝试时,它会给我以下错误:
TypeErrorTraceback (most recent call last)
<ipython-input-1-41b53befd463> in <module>()
22 # fitting the data with fmin
23 p0 =
我希望使用使用scipy.optimize库的约束向量进行约束优化。特别是,我提供了一个三维坐标向量-- r0 of N点--因此是一个N x 3大小的矩阵--作为函数的输入。坐标是笛卡尔的,我想冻结所有y的依赖。这意味着我需要N x 3矩阵的第二列保持不变,y0说。如何定义这样一个约束列表?
具体而言,让我们考虑COBYLA算法()。我尝试了以下构造:
cons = []
for i in range(xyz0.shape[0]):
def f(x):
return x[i,1]-xyz0cyl[i,1]
cons.append(f)
fmin_cobyla(
我正在尝试学习Python中的优化,所以我编写了一些代码来测试fmin函数。
但是,我一直收到以下错误:
ValueError: operands could not be broadcast together with shapes (1,2) (100,)
我可以看出问题与我的论点的维度有关,但我不知道如何纠正它。与lambda函数相比,我还尝试了开发一个函数,但仍然得到了相同的错误。
我肯定这是很基本的东西,但我似乎不明白。任何帮助都是非常感谢的!
import numpy as np
import pandas as pd
from scipy.stats.distributions
我只尝试用par参数最小化我的似然函数,其余的:n,T,r,log_x, gft_y应该在优化中被修复。当我将它们放入args中以修复它们时,我会得到以下错误:
TypeError: float() argument must be a string or a number, not 'tuple'
The above exception was the direct cause of the following exception:
Traceback (most recent call last):
File "C:\Users\phelg\AppData
我是python的新手,我遇到了以下问题:我正在尝试最小化一个参数为numpy数组的python函数。当我使用scipy.optimize.fmin时,它会将我的数组转换成一个列表(这会导致函数无法计算)。有没有一个优化函数可以接受numpy数组作为函数参数?
提前感谢!
-MB
编辑:这是我所说的一个例子,由@EOL提供:
import scipy.optimize as optimize
import numpy as np
def rosen(x):
print x
x=x[0]
"""The Rosenbrock function
我试图用简单的多类逻辑回归训练MNIST数据(我从下载的),但是scipy.optimize函数挂起了。
代码如下:
import csv
from math import exp
from numpy import *
from scipy.optimize import fmin, fmin_cg, fmin_powell, fmin_bfgs
# Prepare the data
def getIiter(ifname):
"""
Get the iterator from a csv file with filename ifname
我用函数f(x) = sin(x)对python进行了优化,我想绘制结果。我怎么能这么做?我已经试过这段代码了。但是我得到了一个错误:TypeError: only length-1 arrays can be converted to Python scalars
这是我的密码:
'''Import Python math library'''
import math
import matplotlib.pyplot as plt
'''try and except ImportError handler will be
作为迭代次数的函数,我希望控制优化的目标。在我的实际问题中,我有一个复杂的正则化项,我想用迭代数来控制它。
是否有可能一次调用一个枕优化器,或者至少能够访问目标函数中的迭代数?
下面是一个例子,展示了我迄今为止最好的尝试:
from scipy.optimize import fmin_slsqp
from scipy.optimize import minimize as mini
import numpy as np
# define objective function
# x is the design input
# iteration is the iteration numbe
我有以下代码:
from scipy.interpolate import UnivariateSpline
from scipy.optimize import fmin
a = UnivariateSpline(b,c) #Python
d = fmins(@(t) -ppval(a,t), someexpression); #Matlab where fmin is equivalent to fmins
如何将其转换为Python3?
当涉及到scipy时,我是一个非常业余的人。我尝试在多维变量系统上使用scipy的fmin函数。为了简单起见,我使用list of list的列表。我的数据是12维的,当我输入np.shape(DATA)它返回(3,2,2)时,我甚至不确定scipy是否可以处理那么多维,如果不是没有问题,我可以减少它们,重点是optimize.fmin()函数不接受基于列表的数组作为x0的初始参数,所以我需要帮助要么将x0数组重写为numpy兼容的数组,要么将整个数据数组重写为12维矩阵或类似的东西。 这里有一个更简单的例子来说明这个问题: from scipy import optimize
import
我希望使用fmin找到函数的最小值,但是我得到了以下错误:
TypeError: <lambda>() takes 1 positional argument but 2 were given
有问题的代码如下:
import numpy as np
from scipy.optimize import fmin
g = lambda alpha: np.sum(np.square(np.subtract(D, (avec[0]-alpha*grad)*f((avec[1]-alpha*grad),y))))
b = fmin(g,0.0)
你能告诉我怎么解决这个问题吗?
整个
我试图提取满足一定均值和方差的威布尔分布参数(形状'k‘和尺度'lambda')。在本例中,均值为4,方差为8。这是一个2-未知数和2-方程类型的问题。
由于此算法适用于Excel2010的GRG求解器,因此我确信它与我构造问题的方式有关,或者可能与我正在使用的库有关。我对优化库不是很熟悉,所以请让我知道错误在哪里。
以下是脚本:
from scipy.optimize import fmin_cg
import math
def weibull_mu(k, lmda): #Formula can be found on wikipe