Skip to content

Commit

Permalink
Improves
Browse files Browse the repository at this point in the history
  • Loading branch information
Jaden ACHAIN committed Dec 5, 2024
1 parent dc90887 commit ec3ee2c
Show file tree
Hide file tree
Showing 9 changed files with 199 additions and 54 deletions.
2 changes: 1 addition & 1 deletion _includes/footer.html
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,7 @@ <h5 class="has-text-grey-lighter">{{site.author-name}}</h5>
</div>
</div>
<div class="has-background-black has-text-centered has-text-white" id="credits">
<i class="fa fa-copyright"></i> {{ "now" | date: "%Y" }} | <a href="https://github.com/thedevslot/WhatATheme" target="_blank" rel="noopener noreferrer">WhatATheme</a> - A Theme made with <i class="fa fa-heart has-text-danger"></i> by <a href="https://www.twitter.com/thedevslot" target="_blank" rel="noopener noreferrer">TheDevsLot</a> Powered by <a href="https://jekyllrb.com/" target="_blank">Jekyll</a> with <a href="https://pixabay.com/" target="_blank" rel="noopener noreferrer">Pixabay</a> photos
<i class="fa fa-copyright"></i> {{ "now" | date: "%Y" }} | <a href="https://github.com/thedevslot/WhatATheme" target="_blank" rel="noopener noreferrer">WhatATheme</a> - A Theme made with <i class="fa fa-heart has-text-danger"></i> by <a href="https://thedevslot.github.io/" target="_blank" rel="noopener noreferrer">TheDevsLot</a> Powered by <a href="https://jekyllrb.com/" target="_blank">Jekyll</a> with <a href="https://pixabay.com/" target="_blank" rel="noopener noreferrer">Pixabay</a> photos
</div>
</footer>
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/fork-awesome@1.2.0/css/fork-awesome.min.css" integrity="sha256-XoaMnoYC5TH6/+ihMEnospgm0J1PM/nioxbOUdnM8HY=" crossorigin="anonymous">
80 changes: 76 additions & 4 deletions _posts/2024-11-10-machine-learning-python.md
Original file line number Diff line number Diff line change
Expand Up @@ -24,11 +24,83 @@ Tout d'abord les différents outils utilisés

### Date

Import : `from datetime import datetime`
Formatage de date : `datetime.datetime.now().strftime("%m/%d/%Y %H:%M:%S")`
`from datetime import datetime`

Formatage de date : `datetime.now().strftime("%m/%d/%Y %H:%M:%S")`
Intervale en secondes : `interval_seconds = interval.total_seconds()`

### Lambda

Map : `array = [r for r in tab]`
Filtrer:
```
tab_filtered = list(
filter(
lambda c: c not in ['value'],
tab
)
)
```

### Manipulation de fichiers

```
import os
if os.path.exists(file_path):
file.write('')
df.to_csv('data.csv', index=False)
```

### Requètes d'API

```
import requests
response = requests.get(
'',
params={},
headers={
'Authorization': '',
'Content-Type': 'application/json'
}
)
if response.status_code == 200:
json = response.json()
binary = response.text
```

## Jupyter

### Virtual environment

Créer un env dans une version spécifique de python :
`python3.10 -m venv .venv-3-10`
Activer un environnement :
`. .venv-3-10/bin/activate`


### Kernel

Créer un kernel :
```
.venv-3-10/bin/activate
pip install ipykernel
python -m ipykernel install --name 3-10 --display-name "Python 3.10" --user
```

L

### Packages

### Tableau
```
.venv-3-10/bin/activate
Filtrer: `tab_filtered = list(filter(lambda c: c not in ['value'], tab)) `
pip install jupyterlab ipympl pandas scikit-learn plotly ipywidgets seaborn pycaret
jupyter labextension install @jupyter-widgets/jupyterlab-manager
jupyter labextension install jupyter-matplotlib
```
``
92 changes: 59 additions & 33 deletions _posts/2024-11-12-machine-learning-donnees.md
Original file line number Diff line number Diff line change
Expand Up @@ -11,31 +11,7 @@ categories:

## Récupération des données

Les données peuvent être récupéré par json `df = pd.read_csv('data.csv')`

Ou par des requètes d'api

```
import requests
response = requests.get('', params={}, headers={'Authorization': '', 'Content-Type': 'application/json'})
if response.status_code == 200:
json = response.json()
binary = response.text
```

## Manipulation de fichiers

```
import os
if os.path.exists(file_path):
file.write('')
df.to_csv('data.csv', index=False)
```

Les données peuvent être récupéré par json `df = pd.read_csv('data.csv')`

## Typage des données

Expand Down Expand Up @@ -81,20 +57,70 @@ Les 2 en même temps :

Tri des colonnes : `df_sorted = df[sorted(df.columns)]`

## Opérations sur les données
Selection aléatoire d'un nombre de lignes : `df_sample = df.sample(100)`
Selection aléatoire d'une portion: `f_sample = df.sample(frac=0.1)`

Valeur null : `df_filtered = df['col1'].isnull()`
Valeur non null : `df_filtered = df['col1'].notnull()`

Group by : `df_grouped = df.groupby(['col1', 'col2]).mean()`
Merge : `df_mergd = pd.merge(df1, df2, left_on="id", right_on="id", how="left")`
Where :
```
df['result'] = np.where(
df['condition'],
df['true'],
df['false']
)
```

## Transformation des données

Group by : `df_grouped = df.groupby(['col1', 'col2]).mean()`

Grouper par une partie d'une date :
```
df_grouped = df.set_index('datetime')\
.resample('D')\
.median()\
.reset_index()
```

Merge :
```
df_mergd = pd.merge(
df1,
df2,
left_on="id",
right_on="id",
how="left"
)
```

Pivot (regroupe un tableau par une caractéristique et applique une fonction sur les valeurs) :
`
df_pivot = pd.pivot_table(df, values=['col2', 'col3'], index = ['col1'], aggfunc="mean",)
`
```
df_pivot = pd.pivot_table(
df,
values=['col2', 'col3'],
index = ['col1'],
aggfunc="mean"
)
```

Melt (aplati un tableau, et donne une ligne pour chaque index/colonne avec l'index, la colonne et la valeur) :
`df_melt = pd.melt(df, id_vars=['date'], value_vars=['T'],value_name="mean_temp")`
```
df_melt = pd.melt(
df,
id_vars=['date'],
value_vars=['T'],
value_name="mean_temp"
)
```

## Changer l'affichage des données

Trier par l'index : `df.sort_index()`
Trier par des colonnes : `df.sort_values(by=['col1', 'col2'])`

Grouper par une partie d'une date : `df_grouped = df.set_index('datetime').resample('D').median().reset_index()`
Changer l'index : `df.index = df['date'].values`

## Création de dataframe

Expand Down
49 changes: 34 additions & 15 deletions _posts/2024-11-18-machine-learning-time-series.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
title: Machine Learning - Time series
layout: post
post-image: "/assets/images/ia/time.jpg"
description: ""
description: "Modèle de Time Series"
categories:
- Fiche
---
Expand All @@ -12,22 +12,24 @@ categories:
## Classique

```
from sktime.forecasting.model_selection import temporal_train_split
from sktime.forecasting.model_selection import temporal_train_test_split
df['date'] = pd.to_datetime(df['date'])
df.index = df['date'].values
df.index = df.index.to_period()
df.index = df.index.to_period('M') # D / M / W / W-MON
df_train, df_test = temporal_train_test_split(df, test_size=12)
# test_size = dernière nombre de step, ex: derniers 12 mois / dernières 52 semaines, ...
df_train, df_test = temporal_train_test_split(df, test_size=12)
```

### Modèle saisonnier naif

Répercute la dernière période pour prédire le futur
Modèle le plus simple, répercute la dernière période pour prédire le futur

```
from sktime.forecasting.naive import NativeForecaster
from sktime.forecasting.naive import NaiveForecaster
forecaster = NaiveForecaster(sp=12) # saisonnalité : 12 mois dans un an
forecaster = NaiveForecaster(sp=12) # saisonnalité : 12 mois dans un an ou 52 si en semaine
```

### Holt-Winters / Lissage exponentiel
Expand All @@ -40,9 +42,11 @@ Prend en compte :
Ne prend pas en compte les jours fériés

```
from sktime.forecasting.naive import ExponentialSmoothing
from sktime.forecasting.exp_smoothing import ExponentialSmoothing
forecaster = ExponentialSmoothing(trend="add", seasonal="add")
# trend : tendance sur toutes les données
# seasonal : tendance sur un cycle (12 mois / 52 semaines / ...)
```

### ARIMA
Expand Down Expand Up @@ -70,18 +74,33 @@ y_pred = forecaster.predict(fh=horizon)
### Métriques

```
from sktime.perforemance_metrics.forecasting import mean_absolute_error, mean_absolute_percentage_error, mean_absolute_scaled_error
from sktime.performance_metrics.forecasting import mean_absolute_error, mean_absolute_percentage_error, mean_absolute_scaled_error
MSE = mean_absolute_error(y_true=y_true, y_pred=y_pred)
MAPE = mean_absolute_percentage_error(y_true=y_true, y_pred=y_pred, symetric=False)
SMAPE = mean_absolute_percentage_error(y_true=y_true, y_pred=y_pred, symetric=True)
MAE = mean_absolute_error(y_true=y_true, y_pred=y_pred)
MAPE = mean_absolute_percentage_error(y_true=y_true, y_pred=y_pred, symmetric=False)
sMAPE = mean_absolute_percentage_error(y_true=y_true, y_pred=y_pred, symmetric=True)
MASE = mean_absolute_scaled_error(y_true=y_true, y_pred=y_pred, y_train=y_train)
```

Mean absolute error, MAE

- Symmetric mean percentage error, SMAPE
- Mean absolute error, MAE (à réduire)
- Equivalent à l'erreur de prédiction de **y**
- Mean absolute percentage error, MAPE (à réduire)
- Equivalent à l'erreur de prédiction de **y** en pourcentage
- Avantages
- Permet de detecter des outliers
- Inconvénient
- Ne marche pas avec des valeurs proche de zero
- Symmetric mean percentage error, sMAPE-
- Equivalent à l'erreur de prédiction de **y** en pourcentage
- Avantages
- Moins sensible aux valeurs proches de zéro, car il utilise la moyenne des valeurs réelles et prédites dans le dénominateur.
- Pénalise de manière équilibrée les sous-estimations et les surestimations.
- Inconvénient
- Peut être difficile à interpréter directement si les prédictions sont parfois très éloignées des valeurs réelles.
- Mean absolute scaled error, MASE
- MASE = 1 : même chose qu'un modèle naif
- 0 < MASE < 1 : meilleur qu'un modèle naif
- MASE > 1 : moins performant qu'un modèle naif

## Prophet / Silverkite / Greykite

Expand Down
14 changes: 14 additions & 0 deletions _posts/2024-11-19-machine-learning-computer-vision.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
---
title: Machine Learning - Computer Vision
layout: post
post-image: "/assets/images/ia/eye.png"
description: "Expérimentations d'apprentissage d'un modèle de Computer Vision"
categories:
- Fiche
---

Durées

| Modèle | Dataset Train / Val /Test | Entrainement | Compilation HEF pour Hailo8L |
|:----------|:--------------------------:|-------------:|-----------------------------:|
| yolov8n | 7000 / 2000 / 1000 | 7.5h | 2.5h |
7 changes: 7 additions & 0 deletions assets/css/style.css

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion assets/css/style.css.map

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

7 changes: 7 additions & 0 deletions assets/css/style.scss
Original file line number Diff line number Diff line change
Expand Up @@ -44,6 +44,11 @@ a.navbar-item.is-active {
background: #F4F5F6;
}

pre.highlight{
background: rgba(48,92,222, 0.2);
margin-bottom: 15px;
}

#hero {
background: rgb(0, 0, 0);
background: -moz-linear-gradient(0deg, rgba(0, 0, 0, 1) 0%, rgba(0, 0, 0, 0.75) 100%);
Expand Down Expand Up @@ -91,6 +96,7 @@ a.navbar-item.is-active {

.container {
margin: 1.5rem auto;
width: 100%;
}

#results-container:not(:empty) + div {
Expand Down Expand Up @@ -292,6 +298,7 @@ a.navbar-item.is-active {
margin: 2.5rem auto;
word-break: break-word;
max-width: -webkit-fill-available;
width: 100%;
}

#disqus_thread {
Expand Down
Binary file added assets/images/ia/eye.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.

0 comments on commit ec3ee2c

Please sign in to comment.