मैंने यह प्रश्न या एक अन्य प्रकार से पूछा है या नहीं।Scipy fmin_slsqp त्रुटि "_slsqp.slsqp के 8 वें तर्क 'g' को परिवर्तित करने में विफल रहा है सी/फोरट्रान सरणी"
Scipy error using optimization module. Failure converting array to fortran
http://numpy-discussion.10968.n7.nabble.com/minimize-Algorithmen-Problem-with-boundarys-td37709.html
लेकिन वे वास्तव में एक सरल hackable उदाहरण कोड के साथ नहीं डाल रहे हैं। न ही कोई वास्तविक जवाब हैं (शायद समस्या के एक साधारण डेमो की कमी के कारण)।
समस्या है, जब scipy.optimise fmin_slsqp विधि का उपयोग कर एक समारोह फिट करने की कोशिश आप इस सुंदर अपारदर्शी त्रुटि
मिल
"सी/फोरट्रान सरणी के लिए 8 वीं तर्क` _slsqp.slsqp की जी 'परिवर्तित करने में विफल "नीचे दिए गए कोड में मैं leastsq विधि का उपयोग कर यादृच्छिक सहसंबंधित डेटा के लिए एक रैखिक फ़ंक्शन फिट करता हूं। । डॉक्स से मैं कोई कारण नहीं देख सकता कि उसी वाक्यविन्यास को fmin_slsqp का उपयोग करके वही काम नहीं करना चाहिए, लेकिन ऐसा नहीं है।
क्या कोई जानता है क्यों?
import numpy as nm
from scipy.optimize import leastsq, fmin_slsqp
import matplotlib.pyplot as plt
# residuals of linear function
def res(params,x,y_real):
y_fit = params[0] +x*params[1]
res = y_fit-y_real
return res
#generate correlated data
xx = nm.array([-0.51, 51.2])
yy = nm.array([0.33, 51.6])
means = [xx.mean(), yy.mean()]
stds = [xx.std()/3, yy.std()/3]
corr = 0.8 # correlation
covs = [[stds[0]**2 , stds[0]*stds[1]*corr],
[stds[0]*stds[1]*corr, stds[1]**2]]
m = nm.random.multivariate_normal(means, covs, 100)
x = m[:,0]
y = m[:,1]
# Initial values of parameters
initvals = [0,0]
fit1,j = leastsq(res, initvals, args=(x,y))
#Plot fit 1
y_fit = fit1[0] + fit1[1]*x
plt.scatter(x,y)
plt.plot(x,y_fit)
plt.show()
fit2 = fmin_slsqp(res, initvals, args=(x,y))
शायद एक बग? मुझे त्रुटि संदेश भी मिलता है। – Moritz