Skip to content

Commit 9eb0956

Browse files
author
Jaden ACHAIN
committed
Improves
1 parent dc90887 commit 9eb0956

8 files changed

+198
-53
lines changed

_posts/2024-11-10-machine-learning-python.md

+76-4
Original file line numberDiff line numberDiff line change
@@ -24,11 +24,83 @@ Tout d'abord les différents outils utilisés
2424

2525
### Date
2626

27-
Import : `from datetime import datetime`
28-
Formatage de date : `datetime.datetime.now().strftime("%m/%d/%Y %H:%M:%S")`
27+
`from datetime import datetime`
28+
29+
Formatage de date : `datetime.now().strftime("%m/%d/%Y %H:%M:%S")`
2930
Intervale en secondes : `interval_seconds = interval.total_seconds()`
3031

32+
### Lambda
33+
34+
Map : `array = [r for r in tab]`
35+
Filtrer:
36+
```
37+
tab_filtered = list(
38+
filter(
39+
lambda c: c not in ['value'],
40+
tab
41+
)
42+
)
43+
```
44+
45+
### Manipulation de fichiers
46+
47+
```
48+
import os
49+
50+
if os.path.exists(file_path):
51+
file.write('')
52+
53+
df.to_csv('data.csv', index=False)
54+
```
55+
56+
### Requètes d'API
57+
58+
```
59+
import requests
60+
61+
response = requests.get(
62+
'',
63+
params={},
64+
headers={
65+
'Authorization': '',
66+
'Content-Type': 'application/json'
67+
}
68+
)
69+
70+
if response.status_code == 200:
71+
json = response.json()
72+
binary = response.text
73+
```
74+
75+
## Jupyter
76+
77+
### Virtual environment
78+
79+
Créer un env dans une version spécifique de python :
80+
`python3.10 -m venv .venv-3-10`
81+
Activer un environnement :
82+
`. .venv-3-10/bin/activate`
83+
84+
85+
### Kernel
86+
87+
Créer un kernel :
88+
```
89+
.venv-3-10/bin/activate
90+
91+
pip install ipykernel
92+
python -m ipykernel install --name 3-10 --display-name "Python 3.10" --user
93+
```
94+
95+
L
96+
97+
### Packages
3198

32-
### Tableau
99+
```
100+
.venv-3-10/bin/activate
33101
34-
Filtrer: `tab_filtered = list(filter(lambda c: c not in ['value'], tab)) `
102+
pip install jupyterlab ipympl pandas scikit-learn plotly ipywidgets seaborn pycaret
103+
jupyter labextension install @jupyter-widgets/jupyterlab-manager
104+
jupyter labextension install jupyter-matplotlib
105+
```
106+
``

_posts/2024-11-12-machine-learning-donnees.md

+59-33
Original file line numberDiff line numberDiff line change
@@ -11,31 +11,7 @@ categories:
1111

1212
## Récupération des données
1313

14-
Les données peuvent être récupéré par json `df = pd.read_csv('data.csv')`
15-
16-
Ou par des requètes d'api
17-
18-
```
19-
import requests
20-
21-
response = requests.get('', params={}, headers={'Authorization': '', 'Content-Type': 'application/json'})
22-
23-
if response.status_code == 200:
24-
json = response.json()
25-
binary = response.text
26-
```
27-
28-
## Manipulation de fichiers
29-
30-
```
31-
import os
32-
33-
if os.path.exists(file_path):
34-
file.write('')
35-
36-
df.to_csv('data.csv', index=False)
37-
```
38-
14+
Les données peuvent être récupéré par json `df = pd.read_csv('data.csv')`
3915

4016
## Typage des données
4117

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

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

84-
## Opérations sur les données
60+
Selection aléatoire d'un nombre de lignes : `df_sample = df.sample(100)`
61+
Selection aléatoire d'une portion: `f_sample = df.sample(frac=0.1)`
62+
63+
Valeur null : `df_filtered = df['col1'].isnull()`
64+
Valeur non null : `df_filtered = df['col1'].notnull()`
8565

86-
Group by : `df_grouped = df.groupby(['col1', 'col2]).mean()`
87-
Merge : `df_mergd = pd.merge(df1, df2, left_on="id", right_on="id", how="left")`
66+
Where :
67+
```
68+
df['result'] = np.where(
69+
df['condition'],
70+
df['true'],
71+
df['false']
72+
)
73+
```
8874

75+
## Transformation des données
76+
77+
Group by : `df_grouped = df.groupby(['col1', 'col2]).mean()`
78+
79+
Grouper par une partie d'une date :
80+
```
81+
df_grouped = df.set_index('datetime')\
82+
.resample('D')\
83+
.median()\
84+
.reset_index()
85+
```
86+
87+
Merge :
88+
```
89+
df_mergd = pd.merge(
90+
df1,
91+
df2,
92+
left_on="id",
93+
right_on="id",
94+
how="left"
95+
)
96+
```
97+
8998
Pivot (regroupe un tableau par une caractéristique et applique une fonction sur les valeurs) :
90-
`
91-
df_pivot = pd.pivot_table(df, values=['col2', 'col3'], index = ['col1'], aggfunc="mean",)
92-
`
99+
```
100+
df_pivot = pd.pivot_table(
101+
df,
102+
values=['col2', 'col3'],
103+
index = ['col1'],
104+
aggfunc="mean"
105+
)
106+
```
93107

94108
Melt (aplati un tableau, et donne une ligne pour chaque index/colonne avec l'index, la colonne et la valeur) :
95-
`df_melt = pd.melt(df, id_vars=['date'], value_vars=['T'],value_name="mean_temp")`
109+
```
110+
df_melt = pd.melt(
111+
df,
112+
id_vars=['date'],
113+
value_vars=['T'],
114+
value_name="mean_temp"
115+
)
116+
```
117+
118+
## Changer l'affichage des données
119+
120+
Trier par l'index : `df.sort_index()`
121+
Trier par des colonnes : `df.sort_values(by=['col1', 'col2'])`
96122

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

99125
## Création de dataframe
100126

_posts/2024-11-18-machine-learning-time-series.md

+34-15
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
title: Machine Learning - Time series
33
layout: post
44
post-image: "/assets/images/ia/time.jpg"
5-
description: ""
5+
description: "Modèle de Time Series"
66
categories:
77
- Fiche
88
---
@@ -12,22 +12,24 @@ categories:
1212
## Classique
1313

1414
```
15-
from sktime.forecasting.model_selection import temporal_train_split
15+
from sktime.forecasting.model_selection import temporal_train_test_split
1616
1717
df['date'] = pd.to_datetime(df['date'])
1818
df.index = df['date'].values
19-
df.index = df.index.to_period()
19+
df.index = df.index.to_period('M') # D / M / W / W-MON
2020
21-
df_train, df_test = temporal_train_test_split(df, test_size=12)
21+
# test_size = dernière nombre de step, ex: derniers 12 mois / dernières 52 semaines, ...
22+
df_train, df_test = temporal_train_test_split(df, test_size=12)
2223
```
2324

2425
### Modèle saisonnier naif
2526

26-
Répercute la dernière période pour prédire le futur
27+
Modèle le plus simple, répercute la dernière période pour prédire le futur
28+
2729
```
28-
from sktime.forecasting.naive import NativeForecaster
30+
from sktime.forecasting.naive import NaiveForecaster
2931
30-
forecaster = NaiveForecaster(sp=12) # saisonnalité : 12 mois dans un an
32+
forecaster = NaiveForecaster(sp=12) # saisonnalité : 12 mois dans un an ou 52 si en semaine
3133
```
3234

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

4244
```
43-
from sktime.forecasting.naive import ExponentialSmoothing
45+
from sktime.forecasting.exp_smoothing import ExponentialSmoothing
4446
4547
forecaster = ExponentialSmoothing(trend="add", seasonal="add")
48+
# trend : tendance sur toutes les données
49+
# seasonal : tendance sur un cycle (12 mois / 52 semaines / ...)
4650
```
4751

4852
### ARIMA
@@ -70,18 +74,33 @@ y_pred = forecaster.predict(fh=horizon)
7074
### Métriques
7175

7276
```
73-
from sktime.perforemance_metrics.forecasting import mean_absolute_error, mean_absolute_percentage_error, mean_absolute_scaled_error
77+
from sktime.performance_metrics.forecasting import mean_absolute_error, mean_absolute_percentage_error, mean_absolute_scaled_error
7478
75-
MSE = mean_absolute_error(y_true=y_true, y_pred=y_pred)
76-
MAPE = mean_absolute_percentage_error(y_true=y_true, y_pred=y_pred, symetric=False)
77-
SMAPE = mean_absolute_percentage_error(y_true=y_true, y_pred=y_pred, symetric=True)
79+
MAE = mean_absolute_error(y_true=y_true, y_pred=y_pred)
80+
MAPE = mean_absolute_percentage_error(y_true=y_true, y_pred=y_pred, symmetric=False)
81+
sMAPE = mean_absolute_percentage_error(y_true=y_true, y_pred=y_pred, symmetric=True)
7882
MASE = mean_absolute_scaled_error(y_true=y_true, y_pred=y_pred, y_train=y_train)
7983
```
8084

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

86105
## Prophet / Silverkite / Greykite
87106

Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
---
2+
title: Machine Learning - Computer Vision
3+
layout: post
4+
post-image: "/assets/images/ia/eye.png"
5+
description: "Expérimentations d'apprentissage d'un modèle de Computer Vision"
6+
categories:
7+
- Fiche
8+
---
9+
10+
Durées
11+
12+
| Modèle | Dataset Train / Val /Test | Entrainement | Parse to HEF |
13+
|:----------|:--------------------------:|-------------:|-------------:|
14+
| yolov8n | 7000 / 2000 / 1000 | 7.5h | |

assets/css/style.css

+7
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

assets/css/style.css.map

+1-1
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

assets/css/style.scss

+7
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,11 @@ a.navbar-item.is-active {
4444
background: #F4F5F6;
4545
}
4646

47+
pre.highlight{
48+
background: rgba(48,92,222, 0.2);
49+
margin-bottom: 15px;
50+
}
51+
4752
#hero {
4853
background: rgb(0, 0, 0);
4954
background: -moz-linear-gradient(0deg, rgba(0, 0, 0, 1) 0%, rgba(0, 0, 0, 0.75) 100%);
@@ -91,6 +96,7 @@ a.navbar-item.is-active {
9196

9297
.container {
9398
margin: 1.5rem auto;
99+
width: 100%;
94100
}
95101

96102
#results-container:not(:empty) + div {
@@ -292,6 +298,7 @@ a.navbar-item.is-active {
292298
margin: 2.5rem auto;
293299
word-break: break-word;
294300
max-width: -webkit-fill-available;
301+
width: 100%;
295302
}
296303

297304
#disqus_thread {

assets/images/ia/eye.png

385 KB
Loading

0 commit comments

Comments
 (0)