@ -28,10 +28,10 @@ AI Plot data: https://machinelearningmastery.com/visualize-machine-learning-data
- [ ] Compare prediction with y_test that were false
## Dataset
Nous avons décidé de prendre un dataset sur le site Kaggle, il contient 100 000 lignes qui réprésentent
chacune un objet stellaire observé en lui attribuant plusieurs caractéristiques comme sa declinaison,
les couleurs observées et autres valeurs scientifiques.
Chaque ligne est donc associée à une classe qui peut-être "QSO" un quasar, "Galaxy" ou "Star".
Nous avons décidés de prendre un dataset sur le site Kaggle, il contient 100 000 lignes qui réprésentent
chacune un objet stellaire observé en lui attribuant plusieurs caractéristiques comme son inclinaison,
les longueurs d'ondes observées et autres valeurs scientifiques.
Chaque ligne est donc associée à une classe qui peut-être "QSO" un quasar, "Galaxy" ou "Star" une étoile.
Notre première étape à été de regarder le dataset pour savoir si certaines données sont manquantes.
En utilisant `df.info()` nous pouvons avoir certaines informations sur les données, il ne manque aucune valeur.
@ -40,16 +40,14 @@ Nous pouvons maintenant regarder la répartition des classes, celle-ci est assez
~21.000 étoiles et ~19000 quasar. Nous pouvons en déduire que les galaxies sont plus communes mais cela
pourrait-il avoir une incidence sur la précision de notre modèle ?
Après avoir tester avec un nombre égal de Galaxie, Etoiles et Quasar les résultats sont moins bon qu'en utilisant
le dataset de base. La précision n'est donc pas impacté par le grand nombre de Galaxie.
Après avoir testé avec un nombre égal de Galaxies, Etoiles et Quasars, les résultats sont moins bon qu'en utilisant
le dataset de base. La précision n'est donc pas impactée par le grand nombre de galaxies.
## Plot
J'ai la flemme d'analyser les plots que j'ai fait.
## Choix des données d'entrainement
Pour entrainer des modèles nous devons d'abord diviser notre dataset en deux parties, les caractéristique
Pour entrainer des modèles nous devons d'abord diviser notre dataset en deux parties, les caractéristiques
de chaque objet (x) ainsi que la classe à laquelle il est associé (y). La valeur (x) ne représente pas
forcément toutes des caractéristiques, nous avons d'abord du effectuer un tri.
forcément toutes des caractéristiques pertinantes, nous avons d'abord du effectuer un tri.
Voici la liste des colonnes avec leurs descriptions:
@ -72,15 +70,15 @@ Voici la liste des colonnes avec leurs descriptions:
17) **MJD** = Modified Julian Date, used to indicate when a given piece of SDSS data was taken
18) **fiber_ID** = fiber ID that identifies the fiber that pointed the light at the focal plane in each observation
Plusieurs colonnes n'ont enfait aucun rapport avec l'astre en lui-meme mais plutot sont plutot des informations sur
l'équipement utilsé pendant les observations. Nous les avons donc enlevé de (x) car leurs présence ne fait que
baisser la précision des modèles entrainé.
Plusieurs colonnes n'ont enfait aucun rapport avec l'astre en lui-meme, mais sont plutôt des informations sur
l'équipement utilisé pendant les observations. Nous les avons donc enlevées de (x) car leurs présence ne fait que
baisser la précision des modèles entrainés.
## Entrainement
Nous avons testé plusieurs modèle au cours de ce projet dans le but de trouver celui qui est le plus précis
pour prédire la catégorie d'un astre grace à ses caractéristique. Au début de manière aléatoire en jouant
avec les hyper-paramètres puis nous avons utilisé [l'arbre de choix de sklearn](https://scikit-learn.org/stable/tutorial/machine_learning_map/index.html).
Nous voulons prédire une catgorie il faut donc utiliser un *Classifier* et nous avons 100.000 lignes, vu que la conditions est "<100K"nousavonsutilisé
Nous avons testés plusieurs modèles au cours de ce projet dans le but de trouver celui qui est le plus précis
pour prédire la catégorie d'un astre grace à ses caractéristiques. Au début de manière aléatoire en jouant
avec les hyper-paramètres, puis nous avons utilisés [l'arbre de choix de sklearn](https://scikit-learn.org/stable/tutorial/machine_learning_map/index.html).
Nous voulons prédire une catégorie, il faut donc utiliser un *Classifier* et nous avons 100.000 lignes, vu que la conditions est "<100K"nousavonsutilisés
les modèles pour <et> à 100.000 lignes:
- KNN
@ -88,25 +86,25 @@ les modèles pour < et > à 100.000 lignes:
- Linear SVC
- Random Forest
Mais aussi d'autre modèle pour tester leurs efficacité:
Mais aussi d'autre modèles pour tester leurs efficacité:
- Multi-Layer Perceptron
- Nearest Centroid
- SGD
Pour entrainer est tester nos modèles il nous faut faire plusieurs groupe de donnée, celles d'entrainement
**Xtrain** et **Xtest**, pour les test **Ytrain** et **Ytest**. C'est groupe ont été généré en utilisant
Pour entrainer et tester nos modèles, il nous faut faire plusieurs groupes de données, celles d'entrainement
**Xtrain** et **Xtest**, pour les test **Ytrain** et **Ytest**. Ces groupes ont été générés en utilisant
`train_test_split(x, y,test_size=0.25, random_state=0)`, *test_size* défini le % du dataset à utiliser pour les tests.
L'ajout du paramètre `stratified=y` qui doit garder une répartition égale dans les groupes de test et train n'a pas
augmenté la précision de nos modèles pour autant.
Maintenant il ne reste plus qu'a utiliser la méthode `fit(Xtrain, Ytrain)` des modèles en utilisant **Xtrain** et **Ytrain**.
Maintenant il ne reste plus qu'à utiliser la méthode `fit(Xtrain, Ytrain)` des modèles en utilisant **Xtrain** et **Ytrain**.
Ensuite il nous faut tester le modèle en lui faisant prédire les classes des données **Ytrain** en utilisant
`predictions = model.predict(Xtest)` et enfin récupérer la précision du modèle en comparant nos prédictions
avec **Ytest**: `accuracy_score(Ytest, predictions).`
## Résultat
Le meilleur modèle pour notre dataset est d'après nos expérimentation le **RandomForestClassifier** avec une précision
Le meilleur modèle pour notre dataset est d'après nos expérimentations le **RandomForestClassifier** avec une précision
de 98%.
Voici les résultats obtenu sur l'ensemble des modèles: