Adattamento dei polinomi ai dati

Esiste un modo, dato un insieme di valori (x,f(x)) , per trovare il polinomio di un certo grado che meglio si adatta ai dati?

Conosco l’interpolazione polinomiale , che è per trovare un polinomio di grado n dato n+1 punti dati, ma qui ci sono un gran numero di valori e vogliamo trovare un polinomio di basso grado (trova il miglior adattamento lineare, il migliore quadratico, il migliore cubico, ecc.). Potrebbe essere correlato ai minimi quadrati …

Più in generale, vorrei sapere la risposta quando abbiamo una funzione multivariata – punti come (x,y,f(x,y)) , diciamo – e vogliamo trovare il miglior polinomio ( p(x,y) ) di un certo grado nelle variabili. (Specificamente un polinomio, non splines o serie di Fourier.)

Sia la teoria che il codice / le librerie (preferibilmente in Python, ma qualsiasi linguaggio va bene) sarebbero utili.