В последнее время я столкнулся с проблемой, которую, как мне кажется, SciPy может стать хорошим кандидатом для решения. Однако я не смог правильно его применить. Не уверен, что я что-то упускаю или что то, что я ищу, на самом деле вообще невозможно.
Это вымышленный пример, который я привел, чтобы сделать вещи более наглядными и проще для визуализации. Мой случай намного сложнее.
from sklearn.model_selection import train_test_split
from sklearn.svm import SVR
from scipy.optimize import minimize
import numpy as np
import pandas as pd
time_studied = [12, 10, 4, 7, 6, 11, 6]
hours_slept = [8, 7, 1, 3, 8, 6, 5]
grade = [10, 9, 2, 5, 7, 8, 8.5, 6]
X = np.array([time_studied, hours_slept]).T
y = np.array([grade]).T
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=0)
model = SVR(kernel='poly', C=100, gamma='auto', degree=3, epsilon=.1, coef0=1)
model.fit(X,y)
Затем я пытаюсь применить оптимизатор к этой функции, чтобы найти оптимальный баланс между сном и учебой. Поскольку проверенный метод регрессии возвращает функцию, я предполагаю, что было бы возможно применить минимизацию SciPy. Но, когда я пытаюсь применить это, с чем-то вроде этого
bnds = [(0,12), (0,8)]
x0 = [0,0]
residual_plant = minimize(model, x0, method='SLSQP',bounds=bnds,options = {'eps': np.radians(5.0)})
я получаю следующую ошибку
TypeError: 'SVR' object is not callable
Итак, очевидно, что можно вызвать оптимизатор прямо из моего модель. Поэтому здесь возникает мой вопрос, как можно было бы получить доступ к функции, соответствующей моим данным, и найти оптимальное время сна + время обучения x класс (в данном случае это очевидный ожидаемый результат)
Я что-то упустил? Можно ли сделать то, к чему я стремлюсь?