데이터 확인
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)
'DL > Basic' 카테고리의 다른 글
CNN으로 MNIST 분류하기 (0) | 2024.07.13 |
---|---|
Cross Entropy 맛보기 (0) | 2024.05.09 |
Optimizer (1) | 2024.05.08 |
가중치 초기화 (Weight Initialization) (0) | 2024.05.07 |
1 x 1 Conv (1) | 2023.12.06 |