Any help with this error in Scipy minimize function?

  • Context: Python 
  • Thread starter Thread starter member 428835
  • Start date Start date
  • Tags Tags
    Error Function
Click For Summary

Discussion Overview

The discussion revolves around an error encountered while using the `scipy.optimize.minimize` function in Python. Participants explore the nature of the error and provide suggestions for correcting the code. The scope includes technical explanations and debugging related to optimization in programming.

Discussion Character

  • Technical explanation, Debate/contested

Main Points Raised

  • One participant describes the error encountered, which is a `KeyError` related to accessing an attribute 'F' from the `OptimizeResult` object.
  • Another participant points out that the `OptimizeResult` does not have an 'F' attribute and suggests using the 'x' attribute instead to obtain the optimization results.
  • A further reply reiterates the suggestion to use the 'x' attribute and recommends printing the entire result object to see available attributes and additional information.
  • A later reply expresses gratitude for the assistance received, indicating that the suggestions were helpful.

Areas of Agreement / Disagreement

Participants generally agree on the nature of the error and the appropriate way to access the results of the optimization, with no significant disagreement noted.

Contextual Notes

The discussion does not address potential limitations in the code or assumptions that might affect the optimization process.

Who May Find This Useful

Readers interested in debugging optimization code in Python, particularly those using the SciPy library, may find this discussion relevant.

member 428835
Hi PF!

When I execute the code below:
Python:
import numpy as np
from scipy.stats import t
import scipy.optimize as optimizeglobal data
data = np.random.normal(loc=50, scale=1, size=(2400, 1)).flatten()

def L(F):
    M = 250
    lmda = 0.97
    sig_0 = F[0]
    for i in range(1, 12):
        sig_0 += F[i]

    number_of_days = len(data)

    sig = np.ones(number_of_days)

    for day in range(M, number_of_days):
        sig[day] = lmda * sig[day - 1] + (1 - lmda) * np.square(data[day - 1]) / F[day % 12] * sig_0

    data_days = np.delete(data, range(M - 1), 0)

    L_mat = np.log(t.pdf(data_days, df=3))
    L_sum = L_mat.sum(axis=0)

    mu = F[12]
    Reg = (F[11] - 2 * F[0] + F[1]) ** 2 + (F[10] - 2 * F[11] + F[0]) ** 2
    for i in range(1, 11):
        Reg += (F[i - 1] - 2 * F[i] + F[i + 1]) ** 2
    Reg *= -1 / sig_0 ** 2
    Reg *= -mu / sig_0 ** 2
    Reg += 12 / 2 * np.log(mu)

    print(F)

    final_L = -(L_sum + Reg)
    return final_L

bnds = [(None, None), (None, None), (None, None), (None, None), (None, None), (None, None), (None, None),
        (None, None), (None, None), (None, None), (None, None), (None, None), (2, 100)]
IC = 3*np.ones(13)
result = optimize.minimize(L, method='TNC', bounds=bnds, x0=IC)
print(result.F)

I get an error after many iterations that says:

Code:
Traceback (most recent call last):  File "/usr/local/lib/python3.9/site-packages/scipy/optimize/_optimize.py", line 124, in __getattr__    return self[name]KeyError: 'F'The above exception was the direct cause of the following exception:Traceback (most recent call last):  File "/Users/joshmccraney/Desktop/ewma/test_seas_ewma.py", line 45, in <module>    print(result.F)  File "/usr/local/lib/python3.9/site-packages/scipy/optimize/_optimize.py", line 126, in __getattr__    raise AttributeError(name) from eAttributeError: F
Do you know why this error is being thrown? I know the code below is messy, but this is the simplest I could make it to produce the error.
 
Technology news on Phys.org
The OptimizeResult returned by scipy.optimize.minimize has no 'F' attribute. You want the value of its 'x' attribute.
 
  • Like
Likes   Reactions: member 428835 and pbuk
pasmith said:
The OptimizeResult returned by scipy.optimize.minimize has no 'F' attribute. You want the value of its 'x' attribute.
Or just print(result) and then you will (i) see what attributes it does have, and (ii) gain other useful information about the optimization.
 
  • Like
Likes   Reactions: member 428835
This was SO helpful! Thank you both!
 

Similar threads

  • · Replies 15 ·
Replies
15
Views
2K
  • · Replies 16 ·
Replies
16
Views
2K
  • · Replies 5 ·
Replies
5
Views
4K
  • · Replies 2 ·
Replies
2
Views
2K
  • · Replies 1 ·
Replies
1
Views
2K
  • · Replies 3 ·
Replies
3
Views
2K
  • · Replies 2 ·
Replies
2
Views
3K
  • · Replies 6 ·
Replies
6
Views
2K
  • · Replies 3 ·
Replies
3
Views
2K
  • · Replies 6 ·
Replies
6
Views
4K