Je viens de récupérer python pour implémenter des tâches d'apprentissage automatique afin de mettre en pratique les connaissances que j'ai recueillies en classe.scipy.interpolate.lagrange échoue sur certaines données
Je suis nouveau sur python, donc je viens de découvrir la bibliothèque spicy qui offre un tas d'outils mathématiques très utiles parmi lesquels l'interpolation de Lagrange pour les polynômes 1D en utilisant interpolate.lagrange
. J'essaie d'utiliser cette fonction pour avoir une équation que je vais utiliser après. Bien que je reçois l'erreur suivante:
/usr/lib/python2.7/dist-packages/numpy/lib/polynomial.py:1186: RuntimeWarning: divide by zero encountered in true_divide return poly1d(self.coeffs/other) /usr/lib/python2.7/dist-packages/numpy/lib/polynomial.py:681: RuntimeWarning: invalid value encountered in double_scalars
code:
import sys
import math
import os
import numpy as np
from scipy import interpolate
import matplotlib.pyplot as plt
x = []
y = []
file = open(os.getcwd()+"/practice/train.txt", "r")
for line in file.read().split():
x.append(float(line.split(',')[0]))
y.append(float(line.split(',')[1]))
poly = interpolate.lagrange(x, y)
print poly(1.5)
ensemble de données de formation: https://s3.amazonaws.com/hr-testcases/399/assets/trainingdata.txt
Ce que j'ai essayé jusqu'à présent: je compris que certaines lignes dans le résultat des données i nà la division zéro. Utiliser diviser et conquérir sur l'ensemble de données; l'effacement de certaines lignes le ferait fonctionner mais je perdrais de la précision d'une manière qui poly(x)
imprime un y non précis (f (x)).
Remarque: Je n'ai toujours pas suivi la ligne qui déclenche la division du zéro.
Toute explication serait très appréciée.
Les données que vous présentez n'est pas ordonnée et le résultat ressemble à une fonction linéaire par morceaux, qui est pas idéalement interpolées à l'aide polynômes. En outre, la routine d'interpolation de Lagrange mentionne "Attention: cette implémentation est numériquement instable, ne comptez pas pouvoir utiliser plus de 20 points environ, même s'ils sont choisis de manière optimale.". Pourriez-vous mentionner pourquoi vous avez choisi cela? –