>  기사  >  백엔드 개발  >  데이터 전처리 및 기능 엔지니어링에 PHP를 사용하는 방법

데이터 전처리 및 기능 엔지니어링에 PHP를 사용하는 방법

WBOY
WBOY원래의
2023-07-29 15:34:53832검색

데이터 전처리 및 기능 엔지니어링에 PHP를 사용하는 방법

데이터 전처리 및 기능 엔지니어링은 데이터 정리, 누락된 값 처리, 기능 추출 및 변환 수행, 기계 학습 및 입력 준비에 도움이 될 수 있습니다. 딥러닝 모델에 필요한 데이터입니다. 이 기사에서는 PHP를 사용하여 데이터 전처리 및 기능 엔지니어링을 수행하는 방법에 대해 설명하고 시작하는 데 도움이 되는 몇 가지 코드 예제를 제공합니다.

  1. 데이터 가져오기
    먼저 외부 데이터 소스에서 데이터를 가져와야 합니다. 상황에 따라 데이터베이스, CSV 파일, Excel 파일 또는 기타 데이터 소스에서 데이터를 로드할 수 있습니다. 여기서는 CSV 파일을 예로 들어 PHP의 fgetcsv 함수를 사용하여 CSV 파일의 데이터를 읽습니다.
$csvFile = 'data.csv';
$data = [];

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

// 打印数据
print_r($data);
  1. 데이터 정리
    데이터 정리는 누락된 값, 이상값 및 중복 값 처리를 포함하는 데이터 전처리의 일부입니다. 다음은 몇 가지 일반적인 데이터 정리 작업과 해당 PHP 코드 예제입니다.
  • 누락된 값 처리: 특성이 null인지 비어 있는지 확인하여 누락된 값을 처리하고 해당 채우기 또는 삭제 작업을 수행합니다.
foreach ($data as &$row) {
    for ($i = 0; $i < count($row); $i++) {
        if ($row[$i] === null || $row[$i] === '') {
            // 填充缺失值为0
            $row[$i] = 0;
        }
    }
}
  • 이상값 처리: 임계값을 설정하여 이상값을 평균, 중앙값 또는 모드 등으로 대체합니다.
foreach ($data as &$row) {
    for ($i = 0; $i < count($row); $i++) {
        if ($row[$i] < $lowerThreshold || $row[$i] > $upperThreshold) {
            // 替换异常值为平均值
            $row[$i] = $meanValue;
        }
    }
}
  • 중복 값 처리: 데이터가 중복되었는지 확인하고 삭제합니다.
$newData = [];
$uniqueKeys = [];

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

// 更新数据
$data = $newData;
  1. 특성 추출 및 변환
    특성 추출 및 변환은 특성 엔지니어링의 일부로, 원시 데이터에서 효과적인 특성을 추출하여 모델 훈련 및 예측을 촉진하는 데 도움이 됩니다. 다음은 몇 가지 일반적인 기능 추출 및 변환 작업과 해당 PHP 코드 예제입니다.
  • 이산 특성 인코딩: 이산 특성을 디지털 인코딩으로 변환하여 모델 처리를 용이하게 합니다.
$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;
}
  • 특성 표준화: 특정 규칙에 따라 특성 데이터의 크기를 조정하여 모델 훈련 및 예측을 용이하게 합니다.
$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. 데이터 준비 및 모델 훈련
    데이터 전처리 및 특성 엔지니어링 후에 데이터를 준비하고 훈련 및 예측을 위해 기계 학습 또는 딥 러닝 모델을 사용할 수 있습니다. 여기서는 모델 학습을 위한 예로 PHP-ML 라이브러리의 K-Means 클러스터링 알고리즘을 사용합니다.
require 'vendor/autoload.php';

use PhpmlClusteringKMeans;

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

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

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

위는 데이터 전처리 및 기능 엔지니어링에 PHP를 사용하는 방법에 대한 간단한 예입니다. 물론 데이터 전처리 및 기능 엔지니어링을 위한 다른 많은 작업과 기술이 있으며 구체적인 선택과 구현은 특정 문제와 요구 사항에 따라 결정될 수 있습니다. 이 기사가 데이터 전처리 및 기능 엔지니어링을 시작하고 기계 학습 및 딥 러닝 모델을 훈련하기 위한 견고한 기반을 마련하는 데 도움이 되기를 바랍니다.

위 내용은 데이터 전처리 및 기능 엔지니어링에 PHP를 사용하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.