DL/Basic

Tabular Data 확인, 전처리, 모델링

scone 2024. 7. 13. 13:40

출처 링크

데이터 확인

df = pd.read_csv('파일 경로')
df.head(n)
df.tail(n)
df.columns
df.shape
df.info()  # 열 정보, Null 개수, 열 타입, 사이즈 등의 데이터 프레임 정보
df.describe()  # 수치형 변수에 대한 통계 정보
df.isnull().sum()  # Null 데이터 확인
df[열 이름].value_counts(normalize = False/True)  # 범주형 변수에 대한 각 범주별 빈도수
df.select_dtypes(type)  # 해당하는 열만 데이터 프레임 형태로 확인

 

 

데이터 전처리

df.drop(axis=0/1, inplace = False/True)
df.replace({'바꾸고자 하는 값': '바뀌는 값'}, inplace = False/True)
df['열이름'].fillna('바뀌는 값', inplace = False/True)  # 결측값 대체
df['열이름'] = df['열이름'].astype(type)  # 데이터 프레임 열 타입 변환

 

# 그룹 집계
# by: 그룹의 기준이 되는 열로 여러 열을 기준으로도 할 수 있다.
# as_index = bool: 그룹 기준 열을 인덱스화 할지 여부를 선택할 수 있다.
# 집계함수: sum(합), mean(평균), count(개수) 등의 집계함수
df.groupby(by=['그룹기준 열'])['집계 대상 열'].집계함수()

 

# 정규화/표준화 (스케일링)
from sklearn.preprocessing import MinMaxScaler

mms = MinMaxScaler()

X_train = mms.fit_transform(X_train)
X_test = mms.transform(X_test)

 

# 라벨 인코딩
from sklearn.preprocessing import LabelEncoder

le = LabelEncoder()

df['범주형 열'] = le.fit_transform(df['범주형 열'])

 

# 원-핫 인코딩
# drop_first=True: 첫번째 범주는 제외하고 원-핫 인코딩 적용.
df = pd.get_dummies(df, columns=['범주형 열'], drop_first=True)

 

 

모델링 및 성능 평가

from sklearn.model_selection import train_test_split

X_train, X_test, y_train, y_test = train_test_split(X, y, train_size=.8, stratify=y, random_state=2023)

model.fit(X_train, y_train)

model.score(X_test, y_test)

model.predict(X_test)

 

# 모델 검증
from sklearn.metrics import * # 모든 함수 로드

# 분류 모델 평가 지표
from sklearn.metrics import accuracy_score 		# 정확도
from sklearn.metrics import precision_score 	# 정밀도
from sklearn.metrics import recall_score 		# 재현율
from sklearn.metrics import f1_score 			# f1 score
from sklearn.metrics import confusion_matrix 	# 혼동행렬
from sklearn.metrics import accuracy_score 		# 모든 지표 한번에

# 회귀 모델 평가 지표
from sklearn.metrics import r2_score			# R2 결정계수
from sklearn.metrics import mean_squared_error	# MSE
from sklearn.metrics import mean_absolute_error	# MAE

 

# Heat Map
y_pred = model.predict(X_test) # 모델 예측값 저장
cf_matrix = confusion_matrix(y_test, y_pred)
print(cf_matrix) # 혼동 행렬

# 히트맵으로 시각화
sns.heatmap(
      cf_matrix, 	# 혼동 행렬
      annot=True, # 주석
      fmt='d') 	# 주석 포맷
plt.show()

 

 

머신러닝  모델링

  • 로지스틱 회귀
from sklearn.linear_model import LogisticRegression
lg = LogisticRegression(C=1.0, max_iter=1000)
lg.fit(X_train, y_train)
lg.score(X_test, y_test)

 

  • 의사결정 나무
from sklearn.tree import DecisionTreeClassifier # 분류
from sklearn.tree import DecisionTreeRegressor # 회귀

dt = DecisionTreeClassifier(max_depth=5, random_state=2023)
dt.fit(X_train, y_train)
dt.score(X_test, y_test)

 

  • XGBoost
#!pip install xgboost

from xgboost import XGBClassifier # 분류
from xgboost import XGBRegressor # 회귀

xgb = XGBClassifier(n_estimators=100)
xgb.fit(X_train, y_train)
xgb.score(X_test, y_test)

 

 

  • Light GBM
# !pip install lightgbm

from lightgbm import LGBMClassifier # 분류
from lightgbm import LGBMegressor # 회귀

lgbm = LGBMClassifier(n_estimators=100)
lgbm.fit(X_train, y_train)
lgbm.score(X_test, y_test)