[c++] C++를 사용한 데이터 정규화 및 표준화

데이터 분석 및 머신 러닝 알고리즘을 사용할 때, 데이터 세트를 준비하는 과정이 매우 중요합니다. 이 과정에서 데이터 정규화표준화는 가장 기본적인 단계입니다. 이 두 과정을 통해 데이터를 일반화하고 표준화하여 모델의 학습 과정을 개선할 수 있습니다.

데이터 정규화

데이터 정규화는 데이터의 값을 일정한 범위로 변환하는 과정입니다. 일반적으로 최솟값과 최댓값을 이용하여 데이터를 0과 1 사이의 값으로 변환합니다. 데이터 정규화를 수행하는 이유는 모든 입력 변수가 동일한 척도에 맞게 되어 모델의 성능을 향상시키기 위함입니다.

아래는 C++를 사용하여 데이터를 정규화하는 간단한 예제입니다.

#include <iostream>
#include <vector>
#include <algorithm>

void normalizeData(std::vector<double>& data) {
    double minVal = *std::min_element(data.begin(), data.end());
    double maxVal = *std::max_element(data.begin(), data.end());
    for (double& val : data) {
        val = (val - minVal) / (maxVal - minVal);
    }
}

int main() {
    std::vector<double> inputData = {3.0, 6.0, 9.0, 12.0, 15.0};
    normalizeData(inputData);

    for (const auto& val : inputData) {
        std::cout << val << " ";
    }

    return 0;
}

위의 예제는 normalizeData 함수를 사용하여 입력된 데이터를 정규화하는 간단한 방법을 보여줍니다.

데이터 표준화

데이터 표준화는 데이터를 평균이 0이고 표준 편차가 1인 값으로 변환하는 과정입니다. 특히, 변수 간 척도가 크게 다른 경우에 데이터를 표준화함으로써 특정 변수가 예측 모델에 미치는 영향을 동등하게 만들어 줍니다.

C++를 사용하여 데이터를 표준화하는 과정은 아래와 같이 수행될 수 있습니다.

#include <iostream>
#include <vector>
#include <numeric>
#include <cmath>

void standardizeData(std::vector<double>& data) {
    double mean = std::accumulate(data.begin(), data.end(), 0.0) / data.size();
    double variance = 0.0;
    for (const auto& val : data) {
        variance += (val - mean) * (val - mean);
    }
    variance /= data.size();
    double stddev = std::sqrt(variance);

    for (double& val : data) {
        val = (val - mean) / stddev;
    }
}

int main() {
    std::vector<double> inputData = {3.0, 6.0, 9.0, 12.0, 15.0};
    standardizeData(inputData);

    for (const auto& val : inputData) {
        std::cout << val << " ";
    }

    return 0;
}

위의 예제에서 standardizeData 함수는 입력된 데이터를 표준화하는 방법을 보여줍니다.

결론

데이터 분석 및 머신 러닝 알고리즘을 적용하기 전에 데이터를 정규화하고 표준화하는 것은 모델의 성능을 향상시키는 중요한 단계입니다. C++를 사용하여 이러한 데이터 전처리를 구현하는 방법을 익혀두면 향후 프로젝트에 도움이 될 것입니다.

참고 자료