Maison >développement back-end >tutoriel php >Comment utiliser PHP pour le prétraitement des données et l'ingénierie des fonctionnalités

Comment utiliser PHP pour le prétraitement des données et l'ingénierie des fonctionnalités

WBOY
WBOYoriginal
2023-07-29 15:34:53859parcourir

Comment utiliser PHP pour le prétraitement des données et l'ingénierie des fonctionnalités

Le prétraitement des données et l'ingénierie des fonctionnalités sont des étapes très importantes dans la science des données. Ils peuvent nous aider à nettoyer les données, à gérer les valeurs manquantes, à effectuer l'extraction et la transformation des fonctionnalités et à préparer l'apprentissage automatique et la saisie. données requises par les modèles d’apprentissage profond. Dans cet article, nous expliquerons comment effectuer le prétraitement des données et l'ingénierie des fonctionnalités avec PHP et fournirons quelques exemples de code pour vous aider à démarrer.

  1. Importation de données
    Tout d'abord, nous devons importer des données à partir d'une source de données externe. Selon la situation, vous pouvez charger des données à partir d'une base de données, d'un fichier CSV, d'un fichier Excel ou d'une autre source de données. Ici, nous prenons le fichier CSV comme exemple et utilisons la fonction fgetcsv de PHP pour lire les données du fichier CSV.
$csvFile = 'data.csv';
$data = [];

if (($handle = fopen($csvFile, 'r')) !== false) {
    while (($row = fgetcsv($handle)) !== false) {
        $data[] = $row;
    }
    fclose($handle);
}

// 打印数据
print_r($data);
  1. Nettoyage des données
    Le nettoyage des données fait partie du prétraitement des données, qui comprend le traitement des valeurs manquantes, des valeurs aberrantes et des valeurs en double. Vous trouverez ci-dessous quelques opérations courantes de nettoyage de données et des exemples de code PHP correspondants.
  • Gestion des valeurs manquantes : gérez les valeurs manquantes en déterminant si une fonctionnalité est nulle ou vide, et effectuez les opérations de remplissage ou de suppression correspondantes.
foreach ($data as &$row) {
    for ($i = 0; $i < count($row); $i++) {
        if ($row[$i] === null || $row[$i] === '') {
            // 填充缺失值为0
            $row[$i] = 0;
        }
    }
}
  • Gérer les valeurs aberrantes : remplacez les valeurs aberrantes par la moyenne, la médiane ou le mode, etc. en définissant un seuil.
foreach ($data as &$row) {
    for ($i = 0; $i < count($row); $i++) {
        if ($row[$i] < $lowerThreshold || $row[$i] > $upperThreshold) {
            // 替换异常值为平均值
            $row[$i] = $meanValue;
        }
    }
}
  • Gérer les valeurs en double : déterminez si les données sont dupliquées et supprimez-les.
$newData = [];
$uniqueKeys = [];

foreach ($data as $row) {
    $key = implode('-', $row);
    if (!in_array($key, $uniqueKeys)) {
        $newData[] = $row;
        $uniqueKeys[] = $key;
    }
}

// 更新数据
$data = $newData;
  1. Extraction et transformation de fonctionnalités
    L'extraction et la transformation de fonctionnalités font partie de l'ingénierie de fonctionnalités, qui peut nous aider à extraire des fonctionnalités efficaces à partir de données brutes pour faciliter la formation et la prédiction des modèles. Vous trouverez ci-dessous quelques opérations courantes d'extraction et de conversion de fonctionnalités et des exemples de code PHP correspondants.
  • Encodage de fonctionnalités discrètes : convertissez les fonctionnalités discrètes en codage numérique pour faciliter le traitement du modèle.
$categories = ['cat', 'dog', 'rabbit'];
$encodedData = [];

foreach ($data as $row) {
    $encodedRow = [];
    foreach ($row as $value) {
        if (in_array($value, $categories)) {
            // 使用数字编码离散特征值
            $encodedRow[] = array_search($value, $categories);
        } else {
            // 原样保留其他特征值
            $encodedRow[] = $value;
        }
    }
    $encodedData[] = $encodedRow;
}
  • Standardisation des fonctionnalités : mettez à l'échelle les données des fonctionnalités selon certaines règles pour faciliter la formation et la prédiction du modèle.
$normalizedData = [];

foreach ($data as $row) {
    $mean = array_sum($row) / count($row); // 计算平均值
    $stdDev = sqrt(array_sum(array_map(function ($value) use ($mean) {
        return pow($value - $mean, 2);
    }, $row)) / count($row)); // 计算标准差

    $normalizedRow = array_map(function ($value) use ($mean, $stdDev) {
        // 标准化特征值
        return ($value - $mean) / $stdDev;
    }, $row);
    $normalizedData[] = $normalizedRow;
}
  1. Préparation des données et formation des modèles
    Après le prétraitement des données et l'ingénierie des fonctionnalités, nous pouvons préparer les données et utiliser des modèles d'apprentissage automatique ou d'apprentissage profond pour la formation et la prédiction. Ici, nous utilisons l'algorithme de clustering K-Means de la bibliothèque PHP-ML comme exemple pour entraîner le modèle.
require 'vendor/autoload.php';

use PhpmlClusteringKMeans;

$clusterer = new KMeans(3); // 设定聚类数为3
$clusterer->train($normalizedData);

$clusterLabels = $clusterer->predict($normalizedData);

// 打印聚类结果
print_r($clusterLabels);

Ce qui précède est un exemple simple de la façon d'utiliser PHP pour le prétraitement des données et l'ingénierie des fonctionnalités. Bien entendu, il existe de nombreuses autres opérations et techniques de prétraitement des données et d'ingénierie des fonctionnalités, et la sélection et la mise en œuvre spécifiques peuvent être déterminées en fonction de problèmes et de besoins spécifiques. J'espère que cet article pourra vous aider à vous lancer dans le prétraitement des données et l'ingénierie des fonctionnalités, et à établir une base solide pour vous permettre de former des modèles d'apprentissage automatique et d'apprentissage profond.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn