[데이터 전처리] 범주형 변수 전처리
Y
Yerim
- ML
- DataAnalysis
from sklearn.preprocessing import LabelEncoder
city = ['Bonn', 'Zomba', 'Paris', 'Tokyo', 'Seoul', 'Lagos', 'Bangul']
# 레이블 인코딩 수
encoder = LabelEncoder()
encoder.fit(city)
labels = encoder.transform(city)
print('인코딩 변환값:',labels)# 데이터가 많은 경우
print('인코딩 클래스: ', encoder.classes_)# 디코딩
print('디코딩 원본값: ', encoder.inverse_transform([4, 6, 0, 3, 5, 4, 4, 2, 4, 6, 0]))# 타이타닉 데이터 실습
from sklearn.preprocessing import LabelEncoder
import seaborn as sns
df = sns.load_dataset('titanic')
df_sns = df[['sex', 'embarked', 'class']]
df_encoded = pd.DataFrame()
for col in df_sns.columns:
encoder = LabelEncoder()
encoder = encoder.fit(df_sns[col])
labels = encoder.transform(df_sns[col].values.ravel())
df_temp = pd.DataFrame(labels, columns=[col])
df_encoded = pd.concat([df_encoded, df_temp], axis=1)
df_encodeddf_tt = pd.concat([df, df_encoded], axis=1)
df_tt.head()from sklearn.preprocessing import OneHotEncoder
import numpy as np
city = ['Bonn', 'Zomba', 'Paris', 'Tokyo', 'Seoul', 'Lagos', 'Bangul']
# 2차원 ndarray로 변환
city = np.array(city).reshape(-1, 1)
# 원핫인코딩
oh_encoder = OneHotEncoder()
oh_encoder.fit(city)
oh_labels = oh_encoder.transform(city)
print('원-핫 인코딩 데이터')
print(oh_labels.toarray())
print('원-핫 인코딩 데이터 차원')
print(oh_labels.shape)# 타이타닉 데이터 실습
import seaborn as sns
from sklearn.preprocessing import OneHotEncoder
df = sns.load_dataset('titanic')
df_sns = df[['sex', 'embarked', 'class']]
df_encoded = pd.DataFrame()
for col in df_sns.columns:
encoder = OneHotEncoder()
encoder = encoder.fit(df_sns[[col]])
labels = encoder.transform(df_sns[[col]])
labels_dense = labels.toarray().astype(int)
col_names = [f"{col}_{value}" for value in encoder.categories_[0]]
df_temp = pd.DataFrame(labels_dense, columns=col_names)
df_encoded = pd.concat([df_encoded, df_temp], axis=1)
df_encodeddf_tt = pd.concat([df, df_encoded], axis=1)
df_tt.head()import pandas as pd
df = pd.DataFrame({'수도': ['Bonn', 'Zomba', 'Paris', 'Tokyo', 'Seoul', 'Lagos', 'Bangul']})
pd.get_dummies(df)# 타이타닉 데이터 실습
import pandas as pd
import seaborn as sns
df = sns.load_dataset('titanic')
df_sns = df[['sex', 'embarked', 'class']]
df_encoded = pd.get_dummies(df_sns)
df_tt = pd.concat([df, df_encoded], axis=1)
df_tt.head()sklearn.preprocessing.KBinsDiscretizer(n_bins=5, *, encode='onehot',
strategy='quantile', dtype=None, subsample=200000, random_state=None) from sklearn.preprocessing import KBinsDiscretizer
data = [[1, 2, 3, 4],
[11, 12, 13, 14],
[21, 22, 23, 24],
[31, 32, 33, 34]]
est=KBinsDiscretizer(n_bins= 15, encode='ordinal', strategy ='uniform')
est.fit(data)
est.transform(data)