분류 (스팸 메일)
회귀 (가격)
클러스터링 (고객 세그먼트)
차원 축소 (변수의 수를 줄임)
모델 선택 (모델 튜닝 평가)
데이터 전처리 (데이터 가공 / 변환)


data.loc[2,'원산지'] = '미국'
df = data[['가격', '호수', '칼로리', '원산지', '살찔까요']].copy()
데이터 형식이 숫자가 아닌 범주형으로 되어 있으면 학습이 진행이 되지 않음
M/L을 사용하기 위해 범주형 >> 숫자형으로 변경해야 함
from sklearn.preprocessing import LabelEncoder
le = LabelEncoder()
df['원산지'] = le.fit_transform(df['원산지'])

cols = ['원산지', '살찔까요']
from sklearn.preprocessing import LabelEncoder
for col in cols:
le = LabelEncoder()
df[col] = le.fit_transform(df[col])
df

cols = df.select_dtypes(include = 'object').columns
from sklearn.preprocessing import OneHotEncoder
ohe = OneHotEncoder(sparse_output=False) # Array형태로 반환해줌
cat = ohe.fit_transform(df[['원산지']])
cat

주의! Df형태로 입력을 받기에 대괄호 2번 써줘야함
ohe.categories_

ohe.get_feature_names_out()

df_cat = pd.DataFrame(cat, columns = ohe.get_feature_names_out())
df = pd.concat([df, df_cat], axis = 1)
df

df = df.drop(['원산지'], axis = 1)
cols = df.select_dtypes(include = 'object').columns
ohe = OneHotEncoder(sparse_output = False)
cat = ohe.fit_transform(df[cols])
df_cat = pd.DataFrame(cat, columns = ohe.get_feature_names_out())
df = pd.concat([df, df_cat], axis = 1)
df = df.drop(cols, axis = 1)
생각보다 엄청 간단하다
df = pd.get_dummies(df)
df

True, False는 Colab에서 진행 하였기에 상관 x