Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/309.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python在minimize()中将对象作为arg传递_Python_Scipy - Fatal编程技术网

Python在minimize()中将对象作为arg传递

Python在minimize()中将对象作为arg传递,python,scipy,Python,Scipy,我试图将对象作为额外参数传递给scipy.optimize.minimize(),但它说不能传递对象 def myfun(C,gamma,deg,mysvc): from sklearn import cross_validation if(mysvc.kernel=="linear"): mysvc.C=C elif(mysvc.kernel=="rbf" or mysvc.kernel=="sigmoid"): mysvc.C=C

我试图将对象作为额外参数传递给scipy.optimize.minimize(),但它说不能传递对象

  def myfun(C,gamma,deg,mysvc):
    from sklearn import cross_validation
    if(mysvc.kernel=="linear"):
       mysvc.C=C
    elif(mysvc.kernel=="rbf" or mysvc.kernel=="sigmoid"):
       mysvc.C=C
       myscv.gamma=gamma
    else: 
       mysvc.deg=deg
    scores = cross_validation.cross_val_score(mysvc,cross[:,:95], cross[:,96], cv=5)
    return mean(scores) 


  from scipy import optimize  
  for mysvc in [gsn,ply,sig,lin]:
    C,gamma,deg=sp.optimize.minimize(fun=myfun,x0=asarray([1,.5,3]),args=(mysvc))
    print [C,gamma,deg]
元组是否不灵活??mysvc是sklearn中SVC类的对象 我得到以下错误

  Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "e:\Anaconda\lib\site-packages\spyderlib\widgets\externalshell\sitecustomize.py",  line 540, in runfile
 execfile(filename, namespace)
 File "C:/Users/sriramana/svm.py", line 43, in <module>
 C,gamma,deg=sp.optimize.minimize(fun=myfun,x0=asarray([1,.5,3]),args=(mysvc))
 File "e:\Anaconda\lib\site-packages\scipy\optimize\_minimize.py", line 372, in minimize
 return _minimize_bfgs(fun, x0, args, jac, callback, **options)
 File "e:\Anaconda\lib\site-packages\scipy\optimize\optimize.py", line 832, in  _minimize_bfgs
 gfk = myfprime(x0)
 File "e:\Anaconda\lib\site-packages\scipy\optimize\optimize.py", line 281, in  function_wrapper
 return function(*(wrapper_args + args))
 File "e:\Anaconda\lib\site-packages\scipy\optimize\optimize.py", line 604, in approx_fprime
 f0 = f(*((xk,) + args))
 File "e:\Anaconda\lib\site-packages\scipy\optimize\optimize.py", line 281, in function_wrapper
 return function(*(wrapper_args + args))
 TypeError: can only concatenate tuple (not "SVC") to tuple  
回溯(最近一次呼叫最后一次):
文件“”,第1行,在
文件“e:\Anaconda\lib\site packages\spyderlib\widgets\externalshell\sitecustomize.py”,第540行,在runfile中
execfile(文件名、命名空间)
文件“C:/Users/sriramana/svm.py”,第43行,在
C、 gamma,deg=sp.optimize.minimize(fun=myfun,x0=asarray([1,5,3]),args=(mysvc))
文件“e:\Anaconda\lib\site packages\scipy\optimize\\u minimize.py”,第372行,最小化
return _minimize_bfgs(fun、x0、args、jac、callback、**选项)
文件“e:\Anaconda\lib\site packages\scipy\optimize\optimize.py”,第832行,在\u minimize\u bfgs中
gfk=myfprime(x0)
文件“e:\Anaconda\lib\site packages\scipy\optimize\optimize.py”,第281行,在函数包装器中
返回函数(*(包装器参数+参数))
文件“e:\Anaconda\lib\site packages\scipy\optimize\optimize.py”,第604行,约为
f0=f(*(xk,)+args))
文件“e:\Anaconda\lib\site packages\scipy\optimize\optimize.py”,第281行,在函数包装器中
返回函数(*(包装器参数+参数))
TypeError:只能将元组(而不是“SVC”)连接到元组
args=(mysvc)
需要一个逗号来组成元组:
args=(mysvc,)

带有一个项的元组是通过在值后面加逗号来构造的(仅将单个值括在括号中是不够的)。丑陋,但有效


是的,那起作用了!!但现在它说“myfun()只接受4个参数,但只提供了2个”。???@user3443615
myfun
应该将参数
C、gamma、deg
作为一个数组,我想。我有个问题,我得到的初始参数与作为初始参数传递的结果相同value@user3443615这可能是另一个问题的主题。