728x90
반응형
정규화 Normalization
정규화는 통계학에서 여러가지의 의미를 가지고 있으며 주로 서로 다른 척도를 가진 것들에 대해서 공통의 척도를 갖도록 조정 하는 것으로 사용 된다. 보통 평균화 이전에 사용하며 교육 평가 점수를 정규화 하는 경우 분포를 정규분포로 맞추기 위해서 사용을 한다.
날짜 | 주식 A | 주식 B |
2010-01-01 | 10,000 | 10,000 |
2011-01-01 | 9,000 | 50,000 |
2012-01-01 | 11,000 | 100,000 |
2013-01-01 | 15,000 | 150,000 |
주식 A 종목과 주식 B 종목의 데이터 셋을 가지고 있다고 가정해보자. 각 주식 종목들의 범위는 [9000~15000], [10000~150000] 을 알 수 있다. 주식 A 종목에 비해서 주식 B 종목의 범위가 휠씬 넓다. 따라서 두개의 주식 종목은 서로 다른 척도를 가지고 있다는 것을 알 수 있다.
Formula
Min-max feature scailing
Feature scaling은 [0,1] 의 범위를 갖도록 해준다. 2차원 데이터로 한다면 X축과 Y축 모두 0과 1 사이의 영역 범위 안에 포함 된다.
[a, b] 범위를 가지게 한다면 주어진 공식에서 `* (b-a) + a`를 포함하여 계산하여 구할 수 있다.
Pandas Dataframe
def normalize(
df: pd.DataFrame, range_a: float = 0.0, range_b: float = 1.0
) -> pd.DataFrame:
"""
정규화 https://sanggi-jayg.tistory.com/entry/%ED%86%B5%EA%B3%84-%EC%A0%95%EA%B7%9C%ED%99%94Normalization%EC%99%80-%ED%91%9C%EC%A4%80%ED%99%94Standardization
[Default formula]
Normalized Value = (raw value - min) / (max - min)
[If you want specific range, apply this formula]
Normalized Value = (raw value - min) / (max - min) * (range_b - range_a) + range_a
:return: 정규화 df
:rtype: pd.DataFrame
"""
df["Price"] = pd.to_numeric(df["Price"])
max_ax, min_ax = df.max(axis=0), df.min(axis=0)
normalized_value = (df["Price"] - min_ax["Price"]) / (
max_ax["Price"] - min_ax["Price"]
)
return normalized_value * (range_b - range_a) + range_a
df = pd.DataFrame(
[p.price_close for p in stock_prices],
index=[p.date for p in stock_prices],
columns=["Price"],
)
df = normalize(df)
표준화 Standardization (Standard Score)
표준화는 통계학에서 원시 값에 대해 표준 편차의 표준 점수를 조정하는 것이다. 계산 방법은 각 원시 값에서 모집단 평균을 뺀 후 모집단 표준편 차로 나누어 구할 수 있다.
Formula
원시 값 X의 Standard Score는 다음을 통해 구해낼 수 있다.
- μ 는 평균
- σ 는 표준 편차
Pandas Dataframe
def standardize(df: pd.DataFrame) -> pd.DataFrame:
"""
표준화 https://sanggi-jayg.tistory.com/entry/%ED%86%B5%EA%B3%84-%EC%A0%95%EA%B7%9C%ED%99%94Normalization%EC%99%80-%ED%91%9C%EC%A4%80%ED%99%94Standardization
Standard Score = (raw value - mean) / std
:return: 표준화 df
:rtype: pd.DataFrame
"""
df["Price"] = pd.to_numeric(df["Price"])
mean, std = df.mean(axis=0), df.std(axis=0)
return (df["Price"] - mean["Price"]) / std["Price"]
df = pd.DataFrame(
[p.price_close for p in stock_prices],
index=[p.date for p in stock_prices],
columns=["Price"],
)
df = standardize(df)
Ref
https://en.wikipedia.org/wiki/Normalization_(statistics)
https://en.wikipedia.org/wiki/Standard_score
728x90
반응형
'IT' 카테고리의 다른 글
멱등성 (Idempotence)와 HTTP API 설계 (0) | 2024.08.01 |
---|---|
[Jetbrains] Intellij 인텔리제이 Live Template 사용 방법 (1) | 2024.02.26 |
[Kubernetes] OpenLens 설치 (0) | 2023.01.09 |
API, 서비스, 도메인 테스트 및 TDD 에서의 기어비 (0) | 2022.12.24 |
알림 서비스 디자인 (0) | 2022.10.08 |