De toute façon ce n'est pas très grave : ça veut dire que ton modèle n'a pas convergé avec certains hyperparamètres. Mais ces hyperparamètres auront de mauvais scores, donc il ne seront pas choisis par ta validation croisée.
Ce serait gênant si tu avais ça sur tous les choix d'hyperparamètres. Ça se voit au nombre de warnings affichés.
Sur le TP "Entraînez-vous à classer automatiquement des feuilles d’arbres", je ne trouve pas les labels dans le fichier test.csv. J'ai donc splitté les données du fichier Dataset_feuilles_1.csv pour avoir une partie entrainement et une partie test.
@Faduf : C'est normal que les labels ne soient pas présent dans le fichier test.
Sur Kaggle, le principe c'est de construire son modèle à partir des données train. Puis de faire ses prédictions sur les données test. Ensuite il faut soumettre ces prédictions sur le site de Kaggle et on obtient son résultat et un classement dans le leaderboard.
Pour ce faire vous devez créer un compte sur Kaggle. Vous pouvez soumettre via cette page :
TP - Entraînez une régression logistique et une SVM linéaire
j'ai cette erreur à cette étape:
lr_gs.fit(X_train, y_train)
/Users/totoopt/anaconda3/lib/python3.7/site-packages/sklearn/svm/base.py:929: ConvergenceWarning: Liblinear failed to converge, increase the number of iterations.
"the number of iterations.", ConvergenceWarning)
merci pour un conseil
J'ai le même problème et j'ai beau augmenter le nombre d'itérations (jusqu'à 10 000), j'ai toujours ce message qui s'affiche de nombreuses fois.
Pourtant j'ai exactement le même code que dans la vidéo. Quelqu'un a-t-il trouvé comment régler cette erreur ? Merci
N'oublie pas que tu fais une validation croisée : le modèle est entraîné autant de fois qu'il y a de combinaisons d'hyperparamètres à tester.
Le message signifie qu'une combinaison d'hyperparamètres ne permet pas de converger. Ça veut simplement dire que ces hyperparamètres sont trop mauvais pour permettre d'entraîner le modèle. Du moment que l'une au moins des combinaisons d'hyperparamètres permet de converger, peu importe l'avertissement : ce que tu recherches, c'est seulement les meilleurs hyperparamètres ! Les mauvais n'auront pas d'incidence sur les bons.
Donc si le message n'apparaît qu'une fois, pas de panique. Tu as réussi.
En effet, ils ne font pas mieux en termes d'erreur quadratique.
Leur intérêt est surtout de limiter le poids des coefficients, ce qui permet :
- de se limiter à seulement quelques variables qui représentent bien l'ensemble de la variance (Ridge), ce qui est un gain important de mémoire et de temps de calcul puisque la plupart des variables auront un coefficient nul et ne seront donc pas utilisées ;
- d'éviter un surapprentissage par l'affectation d'un coefficient excessivement important à quelques variables au détriment des autres (LASSO). Cela évite que le modèle soit trop dépendant de certaines variables pas forcément représentatives de la variance.
Évidemment, il n'y a pas une des trois méthodes qui est meilleure que les autres. Ça dépend des données et du temps de calcul et de la marge d'erreur que tu t'autorises.
- de se limiter à seulement quelques variables qui représentent bien l'ensemble de la variance (Ridge), ce qui est un gain important de mémoire et de temps de calcul puisque la plupart des variables auront un coefficient nul et ne seront donc pas utilisées ;
- d'éviter un surapprentissage par l'affectation d'un coefficient excessivement important à quelques variables au détriment des autres (LASSO). Cela évite que le modèle soit trop dépendant de certaines variables pas forcément représentatives de la variance.
Bonjour @Zachee54, je crois que tu as confondu Ridge et Lasso. Ridge restreint "l'amplitude des poids." (je cite le cours), alors que Lasso "peut directement supprimer les variables et mettre leur poids à zéro".
lorsque je lance le code du TP2 "Entraînez une régression logistique et une SVM linéaire" pour entrainer la régression logistique, j'ai un warning (comme tout le monde ici, j'ai l'impression) "
C:\ProgramData\Anaconda3\lib\site-packages\sklearn\svm\_base.py:976: ConvergenceWarning: Liblinear failed to converge, increase the number of iterations. warnings.warn("Liblinear failed to converge, increase "
Ce warning se répète 13 fois sur les 10 itérations de la crosse-validation. En plus, les meilleurs paramètres qui en résultent sont {'C': 100.0, 'penalty': 'l1'} alors que dans le cours le résultat est le suivant : {'penalty': 'l2', 'C': 1000.0}. J'ai supposé que cela est dû au pas défini pour la recherche de meilleur C. Dans la vidéo, c'est : np.logspace(-3, 3, 10), alors que dans le text de tp c'est np.logspace(-3, 3, 7). J'ai aussi testé avec 10 est le résultat est
{'C': 215.44346900318823, 'penalty': 'l1'}
Les résultats, sont-ils complètement aléatoires ?
- Edité par IrinaMaslowski 23 avril 2021 à 16:27:27
Je vois que je ne suis pas le seul à avoir eu quelques problèmes sur le TP "Entraînez une régression logistique et une SVM linéaire". Je ne reviens pas donc sur la courbe roc finale. Je propose juste une solution qui m'a paru bonne pour récupérer un vecteur de probabilité (y_proba) de sorte que la courbe ait plus de sens en utilisant le module CalibratedClassifierCV (importer depuis sklearn.calibration) en complément de LinearSVC.
et ça m'a permis de sortir une courbe ROC comparable à celles des régressions logistiques précédentes.
Je ne sais pas si c'est une bonne procédure dans notre cas. De ce que j'ai compris le "Platt scaling" utilise une régression logistique comme postprocessing de nos résultats de classification par svm linéaire. Si ça peut aider quelqu'un.
- Edité par adneneguessoum1 22 juin 2021 à 13:14:41
Bonjour, voici une methode plus simple: Au rang 2, il faut réduire les variables, cela permet de toujours avoir une solution sauf si Cov(X1, X2) =1 ou-1. Pour les rangs supérieurs il n'y a pas toujours de solution mais presque. Sinon on peut étidier les Cov(Xi²,Y) plutot que les Cov(Xi,Y) i allant de 1 a n voire avec Xi au cube ou... On fini toujours par trouver une solution.
toujours pas de correction pour l'éval, des incohérence entre les vidéos et le texte du cours, pas de mise a jour par rapport au lib donc du code qui génère masse de warning. Tout a refaire sur ce cours totalement indigeste.
Ce cours est très formel, ce que je rejette pas, bien au contraire, car c'est ce qui permet une compréhension en profondeur des principes sous-jacents des algorithmes essentiels à maîtriser.
Les explications contiennent l'implicite constant de la maîtrise de notions formelles pointues, comme la convexité, les formes quadratiques, etc.
Or, aucun renvoi vers une sélection de ressources permettant de s'actualiser (cela fait partie du travail d'ingénierie pédagogique).
J'avoue être déçu de la qualité pédagogique de ce cours, et me reporter de plus en plus sur des ressources externes à OC.
Bonjour, il faut installer Anaconda. Les notebooks jupiter viennent avec. Sinon, vous pouvez utiliser les notebooks en ligne, tels que Kaggle ou Google Colab.
Дорогу осилит идущий
Дорогу осилит идущий
Apprendre, apprendre et apprendre encore
Dr Pepper
Дорогу осилит идущий