Je ne comprends pas pourquoi j'ai cette résultat de theta [[-283.37836117][ 40.97116431]] alors que je n'ai rien changé au niveau des données.
Je me posais la même question que toi. Si tu regardes les autres postes du forum, tu verras que le code indiqué dans le cours n'est pas exactement celui que le prof a utilisé pour obtenir ses résultats. La différence existe car le prof a fait un filtrage des loyers trop élevés.
Son poste est sur la première page. Je le reporte ici.
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
# Import des donnees
house_data_raw = pd.read_csv('house.csv')
house_data = house_data_raw[house_data_raw['loyer'] < 7000]
# Affichage des observations
plt.plot(house_data['surface'], house_data['loyer'], 'ro', markersize=4)
plt.show()
# Creation des matrices de travail
X = np.matrix([np.ones(house_data.shape[0]), house_data['surface']]).T
y = np.matrix(house_data['loyer']).T
# Calcul du coefficient de regression
theta = np.linalg.inv(X.T.dot(X)).dot(X.T).dot(y)
theta.item(0) + 50 * theta.item(1)
# Affichage de la droite de regression
plt.plot(house_data['surface'], house_data['loyer'], 'ro', markersize=4)
plt.plot([0, 250], [theta.item(0), theta.item(0) + 250 * theta.item(1)])
plt.show()
Concernant le TP des KNN, je rencontre des problèmes avec les données récupérées avec MNIST.
Les données sont correctement récupérées, cependant chaque image est de taille 780 (et non 784). Cela ne correspond pas à 28*28, le format aurait il changé ? (26*30 par exemple). Par ailleurs, il est indiqué dans le TP que les niveaux de gris sont compris entre 0 et 16, mais c'est en fait entre 0 et 255.
De plus, les données sont représentées sous forme de matrices creuses. Il faut donc utiliser la fonction todense() décrite ici.
from sklearn.model_selection import train_test_split
xtrain, xtest, ytrain, ytest = train_test_split(data, target, test_size=0.2)
#On transforme la matrice creuse en matrice dense.
denseXTEST = xtest.todense()
#On reforme les matrices pour qu'elles aient un format compatible avec l'affichage d'images
images = []
for i in 0,denseXTEST.shape[0]-1:
images.append(denseXTEST[i].reshape((-1,26,30)))
#Attention, images n'est plus une matrice de matrices, mais une liste de matrices.
Par ailleurs, pourrait-on me dire si j'aurais dû procéder autrement pour utiliser reshape ? Ca me dérange un peu de casser la matrice initiale pour la transformer en liste, mais je n'ai pas réussi à utiliser reshape autrement... (la fonction s'applique sur la matrice entière plutôt que chaque élément de la matrice).
J'ai finalement réussi à afficher les images avec ce reshape 26,30. Mais il est clair que ce n'est pas le bon format vu l'apparence des images.
Je pense que le TP aurait besoin d'une petite mise à jour :)
J'ai terminé le cour à 100% et j'ai eu 5/7 (en moyenne) à l'activité. J'ai échoué le quizz n°1 à deux reprises et je ne peut plus recommencer. Je n'ai aucune possibilité pour obtenir le certificat ? En vous remerciant.
Pour commencer ce post, je souhaite mentionner que j’apprécie beaucoup le contenu des cours proposés par Openclassroom. Je me permets toutefois de faire remarquer plusieurs erreurs et/ou confusions qui ne semblent pas avoir été soulevées jusqu’à présent. Dans la section « TP: Décomposez l’apprentissage d’une régression linéaire », plusieurs éléments mathématiques sont donnés aux lecteurs, plus précisément dans les sous-sections « Reformuler le problème dans l'espace d’hypothèse : une droite », « Définir la fonction loss » et « Apprentissage : trouver le thetaoptimal ». Je suis partisan du fait qu’il est primordial de définir correctement toutes les notions et notations mathématiques que l’on souhaite utiliser. Sinon, cela reste une série de symboles incompréhensibles pour le lecteur non initié. Etant donné que l’auteur de ce cours a ajouté ces quelques équations, je suppose qu’il estime quelles apportent une informations supplémentaires pour le lecteur désireux d’avoir quelques détails techniques. J’ai remarqué plusieurs grosses erreurs dans les équations ainsi que des erreurs de notation. N’ayant pas accès à LaTeX pour formater les équations correctement, je vais essayer de faire comme je peux: l’underscore _ pour définir un indice (x_1), le chapeau ^ pour définir une notation avec exposant (x^{(2)} est le second x, comme on aurait pu l’écrire par x_2), la notation Python/numpy .T pour appliquer l’opérateur transposé. C’est parti:
(1) La première équation de la sous-section « Reformuler le problème dans l'espace d’hypothèse : une droite » est incorrecte: « ychapeau = theta.T x avec x = (1, x_1, x_2, …, x_N), ychapeau = (ychapeau_1, ychapeau_2, …, ychapeau_N) ». Premièrement, si l’auteur a pris la peine de mentionner qu’il faut appliquer l’opérateur transposé au vecteur theta, c’est qu’il différencie les notions de vecteur ligne (par exemple (a, b, c, …)) et vecteur colonne (le même mais « écrit à la vertical », avec c en dessous de b, lui-même en dessous de a). Je suis tout à fait d’accord avec lui sur ce point. Dans ces conditions, le produit de deux vecteurs n’est défini qu’entre un vecteur ligne par un vecteur colonne: `a b` est par définition le produit du vecteur ligne `a` par le vecteur colonne `b`. C’est une convention mathématique à la base même du calcul matriciel. Dans le cours, x est défini comme un vecteur ligne, ce qui rend d’ores et déjà le produit indéfini. Etant donné qu’il est indiqué, à la fin de cette sous-section, que theta = (theta_0, theta_1) (lorsqu’on réduit le problème à une seule dimension), le vecteur theta est donc un vecteur ligne, ce qui implique donc que theta.T est un vecteur colonne. Le produit n’aurait donc de sens que sous la forme `x theta.T` au lieu de `theta.T x`. Deuxièmement, quand bien même nous utiliserions `x theta.T`, le résultat de ce produit est nécessairement un scalaire, autrement dit une simple valeur, et non pas un vecteur comme c’est indiqué par ychapeau = (ychapeau_1, ychapeau_2, …, ychapeau_N). Cette équation n’a donc aucun sens. Il semble que l’auteur ait extrait cette équation de l’article qu’il donne en référence dans un cadre bleu un peu plus loin (lien cliquable sur la phrase « par exemple ici (en anglais) »), mais en transposant de façon erronée les notations.
(2) Une autre erreur manifeste dans cette première équation est l’utilisation du `N` dans les définitions de x et ychapeau. Le `N` a été défini plus tôt dans la section comme étant « Notre training set est un ensemble de N = 545 observations de surface et leur loyer associé … ». Je pense donc que l’auteur a confondu le nombre d’observations avec la dimensionalité du problème. Ceci expliquerait les erreurs expliquées au point (1) de ce post. Cela est d’autant plus clair que l’auteur mentionne dans la phrase suivante: « Dans notre cas, puisqu’on est en une dimension, … ». Ceci veut bien dire que la première équation discutée ci-dessus est une généralisation du problème abordé. La dimension du vecteur x (et celle de ychapeau et theta aussi) doit donc être indépendante du nombre d’observations. Une conséquence immédiate de cette erreur est que la notation utilisée à l’équation qui suit la précédente: « … on peut écrire pour un point x_i, ychapeau_i = theta_0 + theta_1 x_i » laisse penser que les x_i peuvent être un des éléments du vecteur x = (1, x_1, x_2, …, x_N) définit précédemment. Par exemple, on pourrait croire que pour i = 5, x_5 dans cette seconde équation est le même que celui dans x = (1, x_1, …, *x_5*, x_6, …, x_N). Or ce n’est *pas* le cas. Toutes les valeurs que le x_i de cette seconde équation peuvent prendre sont des réalisations de la variable « surface », qui peut être représenté uniquement par le x_1 (et uniquement lui, car la dimension de notre cas est 1) dans la première équation. Cette dernière phrase montre bien la confusion dans la notation x_i et (x_1, x_2, ….). Je propose une version correct plus bas.
(3) Malheureusement, les erreurs décrites ci-dessus se propagent à la sous-section « Définir la fonction loss », notamment dans la définition du risque empirique. Cette définition est, selon moi, erronée. La somme couvre les N observations, ce qui implique que pour un i donné, x_i est une simple valeur (en l’occurence, la surface correspondant à la i-th observation). Dans ce cas, que peut bien représenter la quantité `theta.T x_i` qui est le produit d’un vecteur par un scalaire? Certainement pas l’estimation, donnée par le modèle, du loyer associé à la i-th surface. De même, l'expression `theta.T x_i - y_i` représente la différence d'un vecteur avec un scalaire, ce qui n'a pas de sens mathématique. Quant à la définition de la distance euclidienne, quel est l’intérêt de l’ajouter si la notation n’est pas définie? || . ||_2 représente la norme l_2 d’un vecteur?
(4) Dans la sous-section « Apprentissage : trouver le thetaoptimal », quitte à mettre la solution exacte, pourquoi ne pas indiquer ce que X représente, à savoir (dans le problème abordé) une matrice Nx2 dont la première colonne est remplie de 1, et la seconde est remplie avec les N observations de surface. Chaque ligne est donc un vecteur (1, x_i) avec x_i la i-th valeur de surface.
Au vu de ce qui a été dit, je pense qu’une version correcte de la première équation serait:
ychapeau(x) = x theta.T
avec theta = (theta_0, theta_1, …, theta_D), x = (1, x_1, x_2, …, x_D), et D >= 1 est un entier représentant la dimension du problème. Ainsi, ychapeau(x) représente une fonction du vecteur x, à valeur réelle. Dans notre problème surface-loyer, cette dimension se réduit à D=1. Cela implique que le vecteur theta se réduit à deux composantes: theta = (theta_0, theta_1). De même, le vecteur x se réduit à x = (1, x_1) où x_1 représente une variable dont une réalisation correspond à une valeur de la surface. La j-th réalisation définit un vecteur x^{(j)} = (1, x_1^{(j)}), où ^{(j)} est une notation pour différencier les réalisations de la variable x_1. Si on collecte l’ensemble de ces N = 545 réalisations, l’ensemble des vecteurs x^{(j)} pour j = 1, …, N peut se condenser dans une matrice de dimension Nx2, dont la j-th ligne est définie par x^{(j)} = (1, x_1^{(j)}). Cette nouvelle matrice X est précisément la matrice X présentée dans le cours à la première équation de la sous-section « Apprentissage : trouver le thetaoptimal », à savoir thetachapeau = (X.T X)^{-1} X.T y.
Pour conclure, les erreurs mentionnées ne sont pas que de simples typos, ou erreurs de notation. Comme écrites dans le cours, ces quelques équations mélangent le nombre d’observations avec la dimensionalité du problème, ce qui rend la compréhension très difficile pour quelqu’un n’ayant pas un bagage mathématique suffisant. Pour les personnes parlant anglais, le lien fourni par l’auteur dans le cadre « Détails de la solution » renvoi vers une démonstration rigoureuse et très bien expliquée de la solution exacte. De plus, les différentes quantités (vecteurs et matrices) y sont définies clairement.
En espérant que ce post soit utile, je vous (nous) souhaite bonne continuation.
Svp, est-qu'il y a des idées pour résoudre l'activité:Allez plus loin... ?
Je comprend pas bien est qu'on doit chercher améliorations avec régression linéaire ou bien d'autres méthodes!!
Des pistes pour résoudre l'activité !!
Merci
Bonjour. Un première amélioration est de tenir compte des arrondissements en plus de la surface, ce qui peut se faire par une régression linéaire en dimension 2. Personnellement, j'ai également effectué 5 régressions linéaires, chacune étant basée sur des données liées à un et un seul arrondissement. Chacune de ces régressions produit un modèle prédictif qui n'est utilisable uniquement que pour l'arrondissement sur lequel il a été construit.
Je ne suis qu'un élève en plein apprentissage, et mon avis ne veut pas celui d'un expert. Mais comme tu l'auras remarqué, la dernière réponse d'un membre du staff sur cette partie du forum date d'un an environ...
Tu as raison, il y a effectivement une erreur. Ton message étant très dense, je vais tenter de clarifier un peu pour que ça soit bien compréhensible.
Commençons par le point 2):
Le `N` a été défini plus tôt dans la section comme étant « Notre training set est un ensemble de N = 545 observations de surface et leur loyer associé … ». Je pense donc que l’auteur a confondu le nombre d’observations avec la dimensionalité du problème.
et
La dimension du vecteur x (et celle de ychapeau et theta aussi) doit donc être indépendante du nombre d’observations..
On touche le coeur de l'erreur déjà. Ce qui se passe c'est un mélange entre deux notions et deux notations.
Commençons par définir une variable X = (x_1, x_2, ... x_N) qui contient l'ensemble de notre échantillon. Avec cette définition, N = 545est correct, il s'agit du nombre d'appartement dans notre dataset.
Maintenant, définissons un x_i. Un x_i est un individu (ici un appartement), c'est à dire une variable qui définit plusieurs features. Ici, il n'y en a qu'une, c'est le loyer, mais il pourrait y en avoir d'autre. On verra plus tard dans le cours l'arrondissement par exemple, on pourrait penser à l'âge de l'immeuble, le nombre de chambres, etc.
Ces features sont représentées par un vecteur de taille k (pour k features): x_1 = (f_1, f_2, ..., f_k).
Pour des raisons liées au calcul matriciel, nous allons ajouter la valeur 1 dans notre vecteur (ça sert à calculer l'ordonnée à l'origine. On a maintenant:
x_1 = (1, f_1, f_2, ..., f_k)
C'est là que le cours fait une confusion entre X et les x_i.
Si x est une variable alors on doit écrire x = (1, f_1, ..., f_k), c'est un vecteur.
Si x est l'échantillon alors on doit écrire x = (x_1, ..., x_n), c'est un vecteur de vecteurs, soit une matrice.
Mais x = (1, x_1, ..., x_n) c'est faux
Donc pour être clair partons sur:
des individusx_i = (1, f_i1, f_i2, ... f_ik) qui sont des vecteurs
un échantillon X = (x_1, x_2, ... x_N) qui est une matrice de dimension (N, k+1), soit un vecteur de N vecteurs de taille k+1 (nos N individus).
Puisque nous sommes dans un cas de dimension 1, on aura donc
x_i = (1, s_i)
avec s_i la surface du logement i.
On va garder ŷ = (ŷ_1, ..., ŷ_N), le vecteur contenant les N loyers.
Pour rappel, on cherche l'équation d'une droite affine de la forme y = ax + b.
Ou, comme écrit dans le cours ŷ_i = theta_1 * x_i + theta_0 .
ça c'est le résultat du calcul de l'estimation de 1 loyer, pour le logement i.
Maintenant, pour résoudre le problème pour nos N logements, nous allons utiliser le calcul matriciel et donc on va pouvoir utiliser une formule de la forme
ŷ = theta_T * X
theta = (theta_0, theta_1) (vecteur de dimension (2, 1)
X notre échantillons (une matrice de dimension (N, 2)
ŷ l'estimation de l'ensemble des loyer (un vecteur de taille N)
Avec une formulation différente, on peut écrire:
E l'erreur que l'on ignore.
Rappel, le produit de matrice d'après Wikipedia:
On a donc une matrice X de taille (N, 2) multipliant un vecteur A de dimension (2, 1), ce qui doit nous donner un vecteur ŷ de dimension (N, 1).
Je crois que c'est ce à quoi tu arrives comme conclusion.
Pour écrire la formule comme dans le cours, il suffit de se souvenir que:
Le code python fait d'ailleurs ce même calcul en créant la matrice X.
En fait on a une matrice (2, N) avec une première rangée de 1, ce que fait le professeur avec le code python:
X = np.matrix([np.ones(house_data.shape[0]), house_data['surface'].as_matrix()]).T
y = np.matrix(house_data['loyer']).T
Voilà, je pense que j'ai bien expliqué où était l'erreur j'espère que c'est clair pour tout le monde et que le cours sera corrigé.
- Edité par QuentinLeguay 7 janvier 2019 à 0:22:13
Je me permets de vous exposer mon problème car je bloque sur l'import du dataset MNIST et j'ose espérer avoir un coup de pouce pour pouvoir continuer le cours. Je précise que je suis sur python3
je beugue au niveau tu TP : Allez plus loin.... , est ce que quelqu'un a pu avancer là dessus, j'ai divisé les données en 2 mais ensuite j'ai pas su est ce qu'il faut revenir vers la regression ou bien continuer avec le KNN?
je beugue au niveau tu TP : Allez plus loin.... , est ce que quelqu'un a pu avancer là dessus, j'ai divisé les données en 2 mais ensuite j'ai pas su est ce qu'il faut revenir vers la regression ou bien continuer avec le KNN?
Merci D'avance.
Bonjour je suis exactement au même point ! J'envisage de creuser la piste de la Regression Multiple et peut être un KNN bi dimension si c'est possible I don't know ! Help :)
Si quelqu'un peut nous donner un indice pour nous débloquer ! J'ai du mal à saisir ec qu'il faut faire.
Salut j'ai une question, j'aimerais savoir comment faire pour réaliser un réseau de neurones qui traite du texte? Mon problème est que je ne sais pas comment faire un réseau à entrées variables ... Merci
@SwordBlade57 : Ta question est HS dans ce sujet qui concerne le cours d'initiation au machine learning, tu devrais plutôt poser un nouveau sujet.
@BelgiCamera & Kazon : fecth_mldtataest obsolète, il faut remplacer cette partie par
from sklearn.datasets import fetch_openml
mnist = fetch_openml(name='mnist_784')
(en cas de problème de mémoire, on peut choisir un autre jeu de données, par exemple gina_prior, qui classe les chiffres selon qu'ils sont pairs ou impairs).
Avis à tous : pensez aux autres étudiants qui doivent corriger vos TPs, mettez des commentaires et des explications PARTOUT SVP, et idéalement présentez le TP sous la forme d'un notebook (Jupyter), c'est tellement plus lisible qu'un bout de code non commenté qui n'affiche aucun résultat ! Franchement des fois ça donne envie de mettre un zéro et de passer au suivant (ne pas le faire, hein ! )… A contrario ça fait plaisir de corriger un notebook bien présenté avec des explications.
Sinon pour le TP sur les loyers, je trouve aussi que l'énoncé n'est pas très clair sur ce qui est attendu (note aux enseignants : c'est dommage que les critères de notation ne soient pas toujours donnés dans l'énoncé, c'est parfois difficile de savoir à quoi s'en tenir).
En fait il faut revenir quelques chapitres en arrière, les pistes sont données explicitement à la fin du premier TP :
Que se passe-t-il si :
on change l’hypothèse de linéarité (une droite) et qu’on en prend une autre (un polynôme du second degré par exemple) ?
on teste le modèle avec d’autres types d’erreurs que la distance euclidienne ?
on ajoute des features (dimensions) supplémentaires en entrée ?
au fur et à mesure que la surface augmente, les données on l'air d'être de plus en plus "éparses", comment intégrer ce comportement dans ma modélisation ?
Question subsidiaire : le numéro de l'arrondissement est-il une variable quantitative ?
Je pense que l'activité encourage une grossière erreur de raisonnement. Je suis très sceptique sur l'approche suggérée par l'énoncé, et plus encore par la correction (sans vouloir la dévoiler). Ou alors c'est que je n'ai rien compris et ce serait sympa qu'on m'explique !
En effet, quand l'énoncé parle d'ajouter une feature, et de "meilleures performances que la baseline (régression linéaire avec une seule feature)", il pousse naturellement les étudiants à tester une régression linéaire sur les deux features [surface, arrondissement]. Ce n'est pas un secret. C'est d'ailleurs ce qui a été fait dans tous les devoirs que j'ai corrigés.
Techniquement, c'est très bien. Mais sur le raisonnement, ça me paraît complètement insensé : contrairement aux surfaces, il n'existe aucune relation linéaire entre les loyers et les numéros d'arrondissements. Cela reviendrait à dire que dans le 3ème arrondissement, vous êtes plus influencé par les loyers du 1er arrondissement que par les loyers du 10ème. Cela pourrait se comprendre s'il y avait une proximité géographique, mais en l'occurrence ce n'est pas nécessairement le cas.
Plus choquant : si, dans la régression obtenue, les loyers prédits sont 10% moins chers dans le 2ème arrondissement par rapport au 1er arrondissement (ce qui peut se concevoir, non ?), alors ils devraient être 90% moins chers dans le 10ème arrondissement ( 10%x(10-1)/(2-1) ), et négatifs dans le 20ème. Cela n'a pas de sens !
Pour s'en convaincre encore, il suffit de faire un plot avec les arrondissements en abscisses et les loyers en ordonnées (ce qu'ont fait 2 des devoirs que j'ai corrigés) pour voir que la répartition n'est pas du tout linéaire en fonction du numéro d'arrondissement.
L'un des devoirs que j'ai corrigés proposait une méthode supplémentaire qui n'était pas une régression linéaire, mais qui était aussi basée en grande partie sur la différence entre les numéros d'arrondissements. Là encore, le scoring était bon mais c'est irréaliste.
Ce n'est pas parce qu'on obtient de bons résultats que le modèle est bon, et encore moins que l'étudiant a compris comment faire des choix judicieux. C'est pourtant une bonne moitié des compétences attendues, si j'ai bien suivi ?
Cela pourrait en rester là si la correction n'en rajoutait pas une couche. Ceux qui l'ont lue comprendront de quoi je veux parler.
Je propose de modifier la correction sur ce point, et d'inciter les étudiants dans l'énoncé à se poser la question de la vraisemblance des modèles choisis. Pourquoi ne pas les aiguiller vers certains types de modèles, parce qu'en l'état il faut aller chercher au-delà de ce qui est décrit dans le cours et on est un peu largués dans la nature.
Bonjour Zachee54, c'est absolument vrai. C'est une erreur grossière de ce cours de ne pas l'aborder. Vous pouvez trouver davantage de détails dans le cours sur la préparation des données.
La solution ici est de transformer chaque arrondissement en variable booléenne indépendante puisqu'il n'y a pas de relation linéaire comme cela existe pour la surface.
arr_1, arr_2, arr_3, etc.... Chaque appartement ne pouvant évidemment être que dans un arrondissement à la fois.
Il est aussi possible d'encoder toutes les variables en une, on appelle ça le one hot encoding. En reprenant l'exemple ci-dessus:
Surface Arrondissement Prix
Appartement_1 40 [0, 0, 1, 0, 0] ....
Appartement_2 24 [0, 1, 0, 0, 0] ....
Appartement_3 15 [0, 0, 0, 0, 1] ....
Appartement_4 30 [0, 1, 0, 0, 0] ....
Pour en revenir à l'exercice, je l'ai déjà signalé il y a plusieurs mois. Ce n'est pas la seule erreur (voir plus haut) mais rien n'a changé et des étudiants continuerons à apprendre des âneries puisque la correction par les pairs n'est en rien un gage de qualité ici.
Je vous encourage à contacter hello@openclassrooms.com pour leur faire part de votre retour, apparemment ils adorent les feedbacks. Moi je vais les relancer. Peut-être qu'ils se bougeront cette fois.
pour information j'ai réussi une réponse d'OpenClassrooms concernant ce cours:
J'ai pu avoir un retour sur le cours "initiez-vous au machine learning" et celui-ci fera l'objet d'une mise à jour d'ici la fin de mois.
Ces changements prennent du temps donc nous n'avons pas eu trop de nouvelles ces dernières semaines mais ce cours sera donc bientôt bien à jour.
Ouvrez l'oeil donc, je n'ai pas encore d'informations sur la communication autour de la mise à jour de ce cours. Il sera peut-être annoncé aux personnes suivant le cours !
Donc à priori il y a bien des erreurs dans le cours et ça prend un peu (trop) de temps pour le corriger.
Si vous avez des doutes ou trouvez des erreurs, signalez les directement via hello@openclassrooms.com plutôt que dans le forum car personne chez eux ne va le consulter.
J'essaie de faire le premier TP sur les loyers mais je me heurte au fait que dans le tableau de données fourni certaines valeurs sont manquantes pour le prix. Resultat: des [nan]... Est-ce une erreur dans les données? ou un test? Dois-je automatiser l'élimination des lignes avec des valeurs manquantes ou puis-je le faire à la main?
Serait-il possible d'avoir les critères d'évaluation pour l'activité sur le loyer ?
Merci d'avance et bonne journée.
Je précise que le cours a été mis à jour depuis que je l'ai fait. Je ne sais pas si l'activité a changé aussi.
Quand je l'ai passée, les critères d'évaluation correspondaient exactement aux objectifs énoncés.
À ce stade, on ne vous demande pas de savoir trouver "le" bon modèle, mais d'essayer plusieurs modèles ou plusieurs approches et d'en tirer des conclusions simples. C'est dans la dernière partie, puis dans d'autres cours, que vous verrez quelques critères pour choisir un bon modèle.
L'activité pousse un peu à faire des choix qui n'ont pas de sens (cf. mon post du 13/04/19) ; ce n'est pas ce qui est évalué ici, donc ne vous inquiétez pas. Mais tant qu'à faire, en creusant un peu on peut quand même trouver des approches intelligentes.
J'ai le même problème que MoBo2, si quelqu'un pouvait lui répondre ce serait cool
MoBo2 a écrit:
Bonjour à tous, j'ai globalement compris tout le TP de régression linéaire à l'exception de la définition de la matrice X :
# On décompose le dataset et on le transforme en matrices pour pouvoir effectuer notre calcul
X = np.matrix([np.ones(house_data.shape[0]), house_data['surface'].as_matrix()]).T
y = np.matrix(house_data['loyer']).T
En effet, j'ai bien compris qu'il fallait une ordonnée à l'origine, mais le reste ne me parait pas clair, pourquoi avoir besoin d'avoir un vecteur constitué de 1 (le fameux np.ones...)
alors que pour la matrice y, il suffit de la définir de manière classique y = np.matrix(house_data['loyer']) ?
N'aurait-on pas pu tout simplement définir X = np.matrix(house_data['surface']) ?
Merci pour votre aide, au passage, cours très bien expliqué à l'exception de ce petit passage.
- Edité par MoBo2 7 mars 2018 à 17:10:49
Ça y est j'ai compris !
Notre matrice X doit avoir en première colonne des 1, et la colonne doit faire la taille de notre colonne Y
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
Le savant ce n'est pas celui qui a le plus appris mais c'est celui qui a le plus compris.