본문 바로가기

Information/통계강의

1.3 데이터 스케일링 (예제 풀이)

반응형

사용된 데이터 파일:

heart.csv
0.01MB

 

예제 1.10

heart 데이터를 읽어낸 후, 'age' 칼럼 데이터에 대해서 정규화한 후 그 평균을 소수점 2째 자리까지 구하시오. (소수점 3째 자리에서 반올림)

 

df = pd.read_csv('heart.csv')
df

from sklearn.preprocessing import MinMaxScaler
scaler = MinMaxScaler()
scaler.fit(df[['age']])
arr = scaler.transform(df[['age']])
arr
df1 = pd.DataFrame(arr, columns=['age'])
df1

 

df1['age'].mean()

0.5284653465346535

 

type(arr)

numpy.ndarray

 

import numpy as np
np.mean(arr)

0.5284653465346535

 

답: 0.53

 


예제 1.11

heart.csv 파일을 읽어낸 후, 아래 지정한 수치형 칼럼 데이터를 모두 표준화(Standardization)하고, 나머지 칼럼 데이터를 포함해서 df1이라는 DataFrame으로 만드시오.

  • 변환할 수치형 칼럼: age, trestbps, chol, thalach, oldpeak
df = pd.read_csv('heart.csv')
df

df_tgt = df[[ 'age', 'trestbps', 'chol', 'thalach', 'oldpeak']]
from sklearn.preprocessing import StandardScaler
scaler = StandardScaler()
scaler.fit(df_tgt)
arr = scaler.transform(df_tgt)
df1 = pd.DataFrame(arr, columns=df_tgt.columns)
df1
df1 = pd.concat([df1,df[['sex','cp','fbs','restecg','exang','slope', 'ca','thal','target']]], axis=1)
df1


예제 1.12

heart.csv 파일을 읽어내고, 'age', 'trestbps' 칼럼에 대해서 아래 식을 적용해서 값을 변경하고, 원래의 'target'칼럼을 합쳐서 새로운 DataFrame을 만드시오 (최종 칼럼은 ['age', 'tresbps', 'target'] 이 됨)

 

수식: 

 

 $ \frac{(X - Median)}{IQR} $

 

sklearn.preprocessing.RobustScaler를 사용해도 됨

df = pd.read_csv('heart.csv')
from sklearn.preprocessing import RobustScaler
scaler = RobustScaler()
scaler.fit(df[['age','trestbps']])
arr = scaler.transform(df[['age','trestbps']])
arr
df1 = pd.DataFrame(arr, columns=['age','trestbps'])
df1['target']=df['target']
df1

 


예제 1.13

heart.csv 파일을 읽어낸 후, 아래 지정한 수치형 칼럼 데이터를 아래의 식으로 변환하고, 'target' 칼럼과 합쳐서 새로운 DataFrame을 만드시오.

 

수식: $ \frac{(X - Mean)}{IQR} $

 

  • 변환할 수치형 칼럼: age, trestbps, chol, thalach, oldpeak
  • 최종 완성된 DataFrame의 칼럼: age, trestbps, chol, thalach, oldpeak, target
df = pd.read_csv('heart.csv')
df1 = df[[ 'age', 'trestbps', 'chol', 'thalach', 'oldpeak']]

def convert(s):
    return (s-s.mean()) / (s.quantile(0.75)-s.quantile(0.25))

dic = {}
for col in df1.columns:
    dic[col] = convert(df1[col])
df2 = pd.DataFrame(dic)
df2['target'] = df['target']
df2

-끝-

 

다음 글: 2. 분포 및 가설검정

반응형

'Information > 통계강의' 카테고리의 다른 글

2.1 분포 (이론)  (0) 2021.02.14
2. 분포 및 가설검정  (0) 2021.02.14
1.3 데이터 스케일링 (이론)  (0) 2021.02.13
1.2 산포 (이론, 예제 풀이)  (0) 2021.02.12
1.1 대푯값 (예제 풀이)  (0) 2021.02.12