Connaitriez vous un algorithme ou un programme (pascal ou VB) de régression linéaire par morceaux?
Connaitriez vous un algorithme ou un programme (pascal ou VB) de régression linéaire par morceaux?
euh..
Peux-tu expliquer un peu ?
Parce que en général ça s'appelle juste "interpolation linéaire" : entre chaque couple de points on interpole linéairement..
Donc le programmer est extrêmement simple.... dans n'importe quel langage...
On a une base de points initiaux (un tableau) Pts (x,y)
Pour un nouveau point, on cherche entre quels indices il se situe. (i, i+1)
Puis on fait une règle de trois.. On "interpole linéairement"
Donc, on peut faire une régression plus complexe que linéaire (quadratique, polynomiale en général), puis en faire une approximation linéaire par morceaux.
Vous souhaitez participer aux rubriques Qt (tutoriels, FAQ, traductions) ou HPC ? Contactez-moi par MP.
Créer des applications graphiques en Python avec PyQt5
Créer des applications avec Qt 5.
Pas de question d'ordre technique par MP !
Je pense que sa question c'est "comment déterminer les morceaux" pour avoir une approximation optimale.
Si c'est bien cela, il y a plusieurs méthodes dans la littérature (optimal piecewise linear approximation).
Le plus simple (mais pas forcément optimal) c'est de faire une suite d'approximations locales:
1. Approximer la courbe par un segment qui rejoint les 2 extrémités de la courbe: [A,B].
2. Chercher le point P de la courbe qui est le plus éloigné de l'approximation (= le plus loin du segment).
3. Remplacer le segment [A,B] par les deux segments [A, P] et [P, B]
4. Recommencer à l'étape 2 jusqu'à atteindre un erreur acceptable.
Sinon il y a la méthode inverse dans laquelle on fait un découpage uniforme de la courbe en petits segments,
puis on on fusionne itérativement les segments jusqu'à atteindre un erreur acceptable (Douglas-Peucker algorithm)
ALGORITHME (n.m.): Méthode complexe de résolution d'un problème simple.
Si, je suis d'accord....
MAIS
le problème est le "par morceaux"
J'ai bien peur que le PO n'aie pas très très bien compris.. -ou expliqué...
![]()
Salut,
pseudocode a apporté la réponse la plus claire.
La seule information supplémentaire que l'on pourrait souhaiter, c'est l'aspect général du nuage de points: la "courbe moyenne" présente-t-elle une courbure continue, ou des parties quasi-rectilignes ? Les domaines de régression linéaire sont-ils éventuellement prédéfinis en limite ou en nombre ? Cela pourrait orienter la recherche du meilleur algorithme.
j'ai une fonction Y=f(X) définie sur un très grand nombre de points (27000) lorsque je représente cette fonction en
Excel j'obtiens une ligne brisée de quelques segments (entre 5 et 10). Mais ça c'est ce que je constate
sur mon graphe mais je ne connais pas d'algorithme/fonction qui me permettrait de récupérer, à partir de tous ces points, la suite
des segments décrits par leurs extrémités (Xdébut, Ydébut) --> (Xfin, Yfin).
Je suis à la recherche code ou simplement un algorithme qui me permettrait de faire cela ?
Partager