Khi sử dụng scipy.optimize
's fmin
Tôi nhận được một lỗi tôi không hiểu:scipy tối ưu hóa fmin ValueError: thiết lập một phần tử mảng với một chuỗi
ValueError: setting an array element with a sequence.
Dưới đây là một đơn giản squared ví dụ để chứng minh lỗi:
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
X = np.array([[1., 1.],
[1., 2.],
[1., 3.],
[1., 4.]])
y = np.array([[2],[4],[6],[8]])
initial_theta = np.ones((X.shape[1], 1)) * 0.01
# test cost_function
print cost_function(initial_theta, X, y)
# [[ 14.800675]] seems okay...
# but then error here...
theta = fmin(cost_function, initial_theta, args=(X, y))
#Traceback (most recent call last):
# File "C:\Users\me\test.py", line 21, in <module>
# theta = fmin(cost_function, initial_theta, args=(X, y))
# File "C:\Python27\lib\site-packages\scipy\optimize\optimize.py", line 278, in fmin
# fsim[0] = func(x0)
#ValueError: setting an array element with a sequence.
Tôi rất biết ơn vì bất kỳ trợ giúp nào để giải thích nơi tôi sai.
Bạn đang trả về một mảng cho hàm chi phí và 'fmin' dự kiến một giá trị duy nhất. Hoặc trả về 'J [0,0]' hoặc viết lại hàm chi phí của bạn là 'J = 1/(2 * m) * np.sum (lỗi ** 2)' –