Retour à l'accueil

Statistiques sans ML : méthodes clés en Python

L'article décrit les méthodes statistiques comme alternative à ML : moyenne pondérée, corrélation, distributions de Poisson et binomiale. Exemples de code Python avec numpy et pandas pour tâches métier. Adapté à l'analyse rapide sans modèles complexes.

Statistiques au lieu de ML : outils Python pour les données
Advertisement 728x90

# Méthodes statistiques pour l'analyse de données sans apprentissage automatique

Les outils statistiques permettent d'évaluer rapidement les données sans modèles complexes d'apprentissage automatique. Les moyennes pondérées tiennent compte de l'importance des observations, l'écart-type et la variance révèlent l'hétérogénéité, tandis que les distributions de Poisson et binomiale prévoient les événements rares. Ces méthodes utilisant Python avec numpy et pandas sont idéales pour les développeurs intermédiaires/seniors analysant des métriques métier.

Moyenne pondérée : Correction des distorsions dues aux valeurs aberrantes

La moyenne ordinaire est vulnérable aux valeurs aberrantes. Avec des salaires de 10 $ (directeur) et 0,10 $ (agent d'entretien, poids 10), la moyenne est de 5,05 $, ce qui ne reflète pas la réalité. La moyenne pondérée résout cela :

import numpy as np

salary = np.array([10.0, 0.10])
weight = np.array([1, 10])

result = np.sum(salary * weight) / np.sum(weight)
print(f"Weighted average: ${result:.2f}")

Sortie : 1,00 $. Applications :

Google AdInline article slot
  • Analyse des revenus par canaux de vente en tenant compte du trafic.
  • Évaluation de métriques avec des fréquences d'événements variables.
  • Groupement des clients par segments avec des poids.

Écart-type et variance : Évaluation de la stabilité

L'écart-type mesure la dispersion autour de la moyenne. Pour les salaires [500, 400, 450, 550, 5000] :

import pandas as pd
import numpy as np

data = {
    "Employee": ["Ivan", "Maria", "Oleg", "Anna", "CEO"],
    "Salary": [500, 400, 450, 550, 5000]
}

df = pd.DataFrame(data)
n = len(df['Salary'])
mean_ = df['Salary'].mean()
s = np.sqrt(np.sum((df['Salary'] - mean_) ** 2) / (n - 1))

print(f"Standard deviation: {s:.2f}")

Résultat : 2024,41 — indicateur d'une forte valeur aberrante. La variance (carré de l'écart-type) est utile pour comparer des ensembles de données :

import numpy as np

sales = np.array([90, 95, 92, 93, 91, 200, 210])
mean_sales = np.mean(sales)
dispersion = np.sum((sales - mean_sales) ** 2) / (len(sales) - 1)

print("Variance:", dispersion)

La dispersion par jours (jours de semaine vs week-ends) nécessite une segmentation des données.

Google AdInline article slot

Corrélation de Pearson : Relations linéaires sans causalité

Le coefficient de corrélation de Pearson évalue la dépendance linéaire. Formule :

import numpy as np

X = np.array([1, 2, 3, 4, 5])  # study hours
Y = np.array([50, 55, 60, 65, 70])  # test scores

x_mean = np.mean(X)
y_mean = np.mean(Y)

corXY = np.sum((X - x_mean) * (Y - y_mean))
corr_sqrt = np.sqrt(np.sum((X - x_mean)**2) * np.sum((Y - y_mean)**2))

res = corXY / corr_sqrt
print(f"Pearson correlation: {res:.2f}")

r=1,00 — corrélation parfaite. Le carré (r²) donne la proportion de variation expliquée (en régression — coefficient de détermination). Souvenez-vous : corrélation ≠ causalité (exemple : golf et mortalité chez les personnes âgées).

Test du Chi-deux : Vérification des attentes vs réalité

Le chi-deux compare les valeurs observées (O) et attendues (E) :

Google AdInline article slot
import numpy as np

O = np.array([1, 2, 3, 4, 7, 9, 11, 13, 14])  # observed
E = np.array([1, 2, 3, 4, 5, 6, 7, 8, 9])    # expected

xi = np.sum((O - E) ** 2 / E)
print(f"Chi-square statistic: {xi:.2f}")

Conditions : même longueur, E > 0. Valeur plus grande — plus grande divergence. Utilisé pour valider les prévisions.

Distribution de Poisson : Modélisation des événements rares

Pour des événements à intensité constante λ (moyenne par intervalle). Probabilité de k événements :

import math

λ = 3   # srednesutochnoe count requests
k = 5   

prob = (λ ** k) * math.exp(-λ) / math.factorial(k)
print(f"Probability 5 requests: {prob:.4f}")

Résultat : 0,1008. Hypothèses : indépendance, probabilité constante, un événement à la fois. Applications :

  • Prévision des appels de support.
  • Estimation des commandes sur site web.
  • Analyse des incidents de sécurité.
  • Risques en finance.

Distribution binomiale : Succès dans des essais

Pour n essais avec probabilité de succès p. Probabilité de k succès :

import math

n = 100
k = 70
p = 0.7

b_coef = math.factorial(n) / (math.factorial(k) * math.factorial(n - k))
prob = b_coef * (p ** k) * ((1 - p) ** (n - k))
print(f"Probability 70 otkrytiy: {prob:.6f}")

Exemples : ouvertures d'emails, tests A/B, contrôle qualité.

Distribution exponentielle : Intervalles jusqu'aux événements

Probabilité d'un événement après un temps x à λ :

import math

lambd = 4    # vyzovov/hour
x = 1 / 3    # 20 min

prob = lambd * math.exp(-lambd * x)
print(f"Probability vyzova cherez 20 min: {prob:.4f}")

Pour les files d'attente, temps d'arrêt des équipements.

Points clés

  • Moyenne pondérée et écart-type détectent les distorsions sans apprentissage automatique.
  • Corrélation évalue les relations, r² — variation expliquée.
  • Poisson et binomiale — pour prévoir les événements en métier.
  • Chi-deux valide les hypothèses avec données minimales.
  • Toutes les méthodes implémentables avec numpy/pandas, pas de GPU nécessaire.

— Editorial Team

Advertisement 728x90

Lire ensuite