Il mio obiettivo è quello di adattare alcuni dati a una funzione polinomiale e ottenere l'equazione attuale inclusi i valori dei parametri adattati.Come estrarre l'equazione da un adattamento polinomiale?
Ho adattato this example ai miei dati e il risultato è come previsto.
Ecco il mio codice:
import numpy as np
import matplotlib.pyplot as plt
from sklearn.linear_model import Ridge
from sklearn.preprocessing import PolynomialFeatures
from sklearn.pipeline import make_pipeline
x = np.array([0., 4., 9., 12., 16., 20., 24., 27.])
y = np.array([2.9,4.3,66.7,91.4,109.2,114.8,135.5,134.2])
x_plot = np.linspace(0, max(x), 100)
# create matrix versions of these arrays
X = x[:, np.newaxis]
X_plot = x_plot[:, np.newaxis]
plt.scatter(x, y, label="training points")
for degree in np.arange(3, 6, 1):
model = make_pipeline(PolynomialFeatures(degree), Ridge())
model.fit(X, y)
y_plot = model.predict(X_plot)
plt.plot(x_plot, y_plot, label="degree %d" % degree)
plt.legend(loc='lower left')
plt.show()
Tuttavia, ora non so dove per estrarre l'equazione reale e valori dei parametri a muro per i rispettivi attacchi. Dove posso accedere all'equazione montata effettiva?
EDIT:
La variabile model
ha i seguenti attributi:
model.decision_function model.fit_transform model.inverse_transform model.predict model.predict_proba model.set_params model.transform
model.fit model.get_params model.named_steps model.predict_log_proba model.score model.steps
model.get_params
non memorizza i parametri desiderati.
Ottimo, funziona. Un po 'nascosto, secondo me. Lo prevedo e lo accetto più tardi. – Cleb
È "nascosto" perché scikit-learn è una libreria di apprendimento automatico, non una libreria di modellazione statistica. In generale, Machine Learning si concentra sugli output dei modelli piuttosto che sui parametri dei modelli. Vedi [Statistical Modelling: The Two Cultures] (https://projecteuclid.org/euclid.ss/1009213726) per una discussione classica su questa divisione. – jakevdp
Grazie per il link! Useresti scikit-learn per questo tipo di stima dei parametri o altrimenti sarebbe più appropriato qualcos'altro? Sto chiedendo poiché vorrei ad es. per evitare valori negativi e non sono sicuro di quanto sarebbe facile usare questo modulo. – Cleb