Logo elodees  elodees

Une IA bien-veillante pour un monde meilleur













Seuls les caractères alphabétiques accentués ou non ainsi que l'espace sont acceptés

Logo IA




Modèles de distribution





Pas encore de compte ?

Inscrivez-vous pour accéder à tous les contenus




La modélisation de la distribution de données trouve les paramètres de la loi de distribution de probabilité ou de plusieurs lois candidates qui correspond aux données que l’on cherche à modéliser.

Les données peuvent suivre une loi normale, une loi gamma, ou toute autre distribution ainsi que les paramètres attachés à la loi.



Testé sous Anaconda et Python 3.7

# -*- coding: utf-8 -*-
"""
Created on Fri Jul  8 10:47:17 2022
 
@author: https://www.stat4decision.com/fr/distribution-donnees-python/
"""
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import scipy
import scipy.stats
import time
 
# Nombre de valeurs à générer
length = 30000
bins=500
 
### Génération des données
data = np.random.gamma(2,1, length)
 
### Histogramme des données
y, x = np.histogram(data, bins=bins, density=True)
# Milieu de chaque classe
x = (x + np.roll(x, -1))[:-1] / 2.0
 
plt.figure(figsize=(12,8))
plt.hist(data, bins=500, density=True)
plt.title("Montant des paiements effectués (K€)")
plt.show()
 
dist_name = "gamma"
 
# Paramètres de la loi
dist = getattr(scipy.stats, dist_name)
 
# Modéliser la loi
param = dist.fit(data)
 
loc = param[-2]
scale = param[-1]
arg = param[:-2]
 
pdf = dist.pdf(x, loc=loc, scale=scale, *arg)
 
plt.figure(figsize=(12,8))
plt.plot(x, pdf, label=dist_name, linewidth=3) 
plt.plot(x, y, alpha=0.6)
plt.legend()
plt.show()
 
sse = np.sum((y - pdf)**2)
 
dist_names = ['norm', 'beta','gamma', 'pareto', 't', 'lognorm', 'invgamma', 'invgauss',  'loggamma', 'alpha', 'chi', 'chi2']
 
sse = np.inf
sse_thr = 0.10
 
# Pour chaque distribution
for name in dist_names:
 
	# Modéliser
	dist = getattr(scipy.stats, name)
	param = dist.fit(data)
 
	# Paramètres
	loc = param[-2]
	scale = param[-1]
	arg = param[:-2]
 
	# PDF
	pdf = dist.pdf(x, *arg, loc=loc, scale=scale)
	# SSE
	model_sse = np.sum((y - pdf)**2)
 
	# Si le SSE est ddiminué, enregistrer la loi
	if model_sse < sse :
		best_pdf = pdf
		sse = model_sse
		best_loc = loc
		best_scale = scale
		best_arg = arg
		best_name = name
 
	# Si en dessous du seuil, quitter la boucle
	if model_sse < sse_thr :
		break
 
plt.figure(figsize=(12,8))
plt.plot(x, y, label="Données")
plt.plot(x, best_pdf, label=best_name, linewidth=3)
plt.legend(loc='upper right')
plt.show()
 
# Détails sur la loi sélectionnée
print("Selected Model : ", best_name)
print("Loc. param. : ", best_loc)
print("Scale param. : ", best_scale)
print("Other arguments : ", best_arg)
print("SSE : ", sse)
 
y = y + np.random.randn(bins)/50
 
 

Source : https://www.stat4decision.com/fr/distribution-donnees-python/



Image gratuite et libre de droits fournie par pexel.com

Image gratuite et libre de droits fournie par pexel.com

Image gratuite et libre de droits fournie par pexel.com


Selected Model : beta
Loc. param. : 0.0018915993986550882
Scale param. : 244.81434016832407
Other arguments : (1.9738879264605056, 240.907229255242)
SSE : 0.05013791654188759





Application Web Interactive


Testé sous Anaconda et Python 3.7



pip install streamlit

streamlit run dist.py



Modéliser une distribution avec Python - dist.py - GitHub



Image gratuite et libre de droits fournie par pexel.com








La distribution gamma

La distribution t de Student

Distribution prédictive pour la régression linéaire bayésienne


Ingénierie des données


Apprentissage profond

Apprentissage automatique












Bienvenu, je m’appelle Eric Soupet et je suis l'administrateur du site elodees.com. elodees.com est un état de l'art de l'Intelligence Artificielle et se veut collaboratif, vous pouvez dès à présent proposer du contenu tels que des articles, des événements, des tutoriels, ... alors n'hésitez pas !

Crédit des images de la plate-forme : Pixabay - Pixabay License | Pexels - Pexels License