У меня есть такой набор данных:
elevation Tree_cover dNBR below_ground_carbon_combusted DOB_lst
0 266.444444 39.555556 0.47 1110.603930 221.879608
1 683.222222 7.555556 0.48 2901.511339 236.847916
2 270.777778 44.111111 0.54 5822.440530 222.909241
3 473.444444 76.333333 0.73 4643.891015 183.100876
4 470.666667 79.888889 0.64 5919.393383 183.100876
5 486.333333 76.444444 0.68 5120.039877 183.100876
6 453.000000 79.222222 0.63 7090.889123 183.100876
7 412.555556 73.888889 0.48 2636.000936 183.100876
8 628.000000 45.444444 0.60 10075.698853 195.514770
9 631.555556 3.000000 0.45 6144.187670 178.886703
И я хочу подогнать кривую к данным с помощью оптимизированной кривой Сципи следующим образом:
from scipy.optimize import curve_fit
from math import e
import pandas as pd
def func(data, c1, c2, c3, c4, c5, c6, c7):
var1 = (-(df['elevation'] - c6)**2)
var2 = 2 * c7
var3 = var1 / var2
return (c1 + c2) * (e**c3 * df['dNBR']) * (e**c4 * df['Tree_cover']) * (e**c5 * df['DOB_lst']) * e**var3
popt, pcov = curve_fit(func, df.drop(['below_ground_carbon_combusted'], axis = 1), df['below_ground_carbon_combusted'])
но я могу ошибиться, говоря, что кривая не может быть оптимизирована, и я не могу понять, почему, поскольку с другими функциями (которые проще), этот общий рабочий процесс работает нормально.
Это полная ошибка:
OptimizeWarning: Covariance of the parameters could not be estimated
category=OptimizeWarning)