Softaware pour déterminer un modèle

Bonjour camarades scientifiques :wink:





Je mène quelques expériences sur un condensateur bien précis et en ce moment, j’étudie la variation de la capacité en fonction de la température. Malheureusement ce n’est ni un offset ni linéaire ^^'.



D’où ma question : connaîtriez vous un soft (si possible gratuit et relativement simple) qui propose des modèles si on lui donne le couple capacité / température ?



Merci :slight_smile:

Salut :slight_smile:



Bref tu veux faire une régression quoi, mais une qui ne soit pas linéaire.



C’est vraiment pas compliqué, le terme adapté ici est plus « framework » que software.



Tu peux regarder du côté de R, qui est sans doute le truc le plus adapté pour faire de la régression sur une problème simple. Mais je te conseil plutôt Scikit-Learn (librairie python), car c’est vraiment puissant / bourrés d’outils utiles.



Ces deux trucs sont fournis avec la version de base d’Anaconda (modulo peut être l’installation de R studio en option).



J’ai un peu l’impression de sortir des missiles sols-airs pour abattre des mouches, mais bon ça reste quand même plutôt simple à utiliser, enfin je trouve.

La régression peut malgré tout être linéaire dans les paramètres, cela dépend du modèle qu’on essaie de faire coller aux données.

Moi je comprends pas pourquoi on aurait besoin de quoi que ce soit si on a la datasheet détaillée du condensateur.



D’où ma question : c’est quoi la référence du condensateur ? :grin:


Oui bien sûr, il doit pas y avoir besoin de beaucoup de paramètres, donc un vieux kernel éventuellement fait maison fera certainement l’affaire, mais je voulais pas tout lui dire :grin:

Merci de vous réponses je vais jeter un oeil :slight_smile:



Je n’ai pas de datasheet, c’est un condo « maison » que j’ai recoupé pour qu’il rentre dans l’étuve :laughing:

scipy offer des fonctions pour fiter tout ce qu’on veut.

reste à comprendre ce qu’est une function de coût et un algo de minimisation.

Je commence à regarder mais avant de me lancer vraiment dedans, quel serait le plus facile à votre avis ?

si vous aviez des tutos ou exemples à conseiller pour déterminer un modèle avec ce serait vraiment top ^^

Commence par un graphe de tes relevés température vs capacité et essaie de voir quel type de fonction pourrait coller.



À moins d’un truc vraiment bizarre un polynôme suffit la plupart du temps, qui se résout de façon linéaire.



Sinon (je n’y connais rien) peut-être que la physique a quelque chose à dire sur le lien entre capacité et température, ça te donnera la fonction à paramétrer.

Personnellement, j’utilise le logiciel Root développé pour les analyses de données au CERN.

Un exemple de fit est disponible ici

https://root.cern.ch/doc/v612/fitLinear_8C.html

Merci de toutes vos réponses :slight_smile:



je vais effectivement essayer un truc sur simple du style courbe de tendance excel, si jamais je vois que ça marche pas je me lancerai probablement avec Root.



Merci encore :slight_smile:

qlqn demande comment fitter des données sans avoir d’expérience dans le domaine.

Tompouce67 : je ne pense pas que lui parler d’un outil en C++ soit une réponse très adaptée :wink:

il faut déjà qu’il comprenne ce qu’est un fit; ce qu’est une function de cout, qu’on essaye de faire un modèle physique dans la mesure du possible; la difference entre fitter et interpoler, pourquoi c’est mauvais d’interpoler avec un polynome de degree N quand on a N+1 données, pourquoi on extrapole jamais si on n’a pas de justification physique du modèle; la difference non pas entre linéaire ou pas mais entre convexe ou pas; ce qu’est un GROS problem d’optimisation de nos jours sur un laptop standard et ce qui est un tout petit truc; …ce genre de choses…et je ne parle pas de la gestion des barres d’erreur.



Ensuite peut jouer avec des outils simples comme le module de fit de scipy ou de R ou de matlab mais sans les bases ça va faire rapidement n’importe quoi.



ps : trouvez moi UN cours d’optimisation en école d’ingé qui commence par mettre au clair toutes ces bases AVANT d’écrire les equations de la descente de gradient ou de je ne sais quoi et je souhaiterai une longue et heureuse vie au prof qui le fait :slight_smile:

Ça dépend quelle est la visée du projet.

Si le but, c’est juste d’avoir une description analytique du phénomène, une black-box qui optimise les coefficients numériques et renvoient les erreurs associées ça suffit.

On parle de caractériser un condensateur pour faire des études physiques, pas de faire un projet de maths app pour étudier les fits dans leur généralité avec toutes les exceptions qui peuvent exister.

Oui mais meme avant de jouer avec une simple black box, il faut etre conscient des choses don’t je parlais sinon on fait vite n’importe quoi.

une première question « simple » : on veut fiter ou on veut interpoler? très probablement fiter…mais la difference est elle évidente? Pas sûr quand on débute.

Effectivement je ne connais pas la différence entre tes 2 termes



Pour l’instant la courbe de tendance excel suffit en terme de précision mais je ne pourrais pas corriger en utilisant mon électronique embarqué qui est trop basique (le modèle est un polynôme d’ordre 2 avec des coeffs style 0.139).



Je vais devoir « tricher » en disant si je suis à cette température retire ou ajoute tant, ça mon électronique peut le faire normalement.



Donc là, je test plusieurs condensateurs dans plusieurs plages de températures et niveau de fluide pour voir si je peux en retirer un tableau de référence et corriger en « trichant ».

A mon avis ça vaut le coup de nous expliquer ce que tu essayes exactement de faire de manière macro, peut-être que tu es parti sur un truc qui n’a que peu de valeur ajoutée par rapport à ce que tu essayes d’obtenir


J’aurais du me douter que quelqu’un aller proposer Root :laughing:



J’ai failli le faire pour plaisanter.



Plus sérieusement je recommande vraiment pas, pour un néophyte c’est clairement pas le plus simple, même le build à coup de cmake- machin est délicate quand on a pas l’habitude. En plus je pense pas que l’auteur sache coder en C++. Alors que Scikit-Learn par exemple c’est (au moins) aussi puissant, mais beaucoup plus intuitif.



Sinon d’un point de vue physique je suis pas sûr qu’un polynôme suffise pour avoir une très bonne approximation, il y a potentiellement des termes en log, 1/T, 1/T^2 dans le développement, et ça doit être à peu près tout.



Au pire si tu veux juste une fonction qui fit tes données sans avoir l’expression analytique tu peux faire une random forest regression, franchement ça se fait très simplement, tu trouvera des trucs ici par exemple :

<LINK_TEXT text=« https://scikit-learn.org/stable/modules … om-forests »>1.11. Ensembles: Gradient boosting, random forests, bagging, voting, stacking — scikit-learn 1.8.0 documentation</LINK_TEXT>



L’intérêt c’est que ça permet de voir quelle tête à la fonction cible, et à quelle précision tu peux prétendre (c’est vraiment très simple et efficace).



Si t’as beaucoup de points un réseau de neurones éventuellement, mais je recommande pas pour ce problème.



Ou sinon pour avoir les coefficients, je te conseillerais plutôt une kernel une kernel Ridge en essayant différents kernel que tu fais toi même (<LINK_TEXT text=« https://scikit-learn.org/stable/modules … ridge.html »>1.3. Kernel ridge regression — scikit-learn 1.8.0 documentation</LINK_TEXT>).



Et puis j’ai rien contre Root (en fait si :grin:), mais les méthodes que j’ai proposé n’existe pas sur TMVA (framework d’analyse de données de Root) aussi.

Sinon on peut tout simplement chercher un cours d’école d’ingé qui explique clairement les bases avant d’écrire des équations laides, il y aura déjà plus grand monde :grin:

Tant qu’on n’a pas vu la tronche du plot (x,y) des relevés c’est inutile de faire des hypothèses sur la fonction de régression.



Je me souviens d’un modèle thermodynamique (sous Excel !) en aciérie, avec des entrées sur la composition de l’acier et des sorties du genre capacité thermique, que je devais mettre dans une boucle d’optimisation. Mon collègue me disait que son modèle était ultra compliqué, en fait sur la plage de valeurs intéressante il était linéaire :grin:


Je vote pour cette technique, commence avec 100 couches et augmente le nombre si les résultats ne sont pas satisfaisants : 200, 500, pourquoi pas 1000 ? Ça ne peut pas échouer.