새소식

KT AIVLE SCHOOL

KT AICE Asso 자격증을 위한 코드 정리

  • -

 

AICE ASSO 

라이브러리 호출 

# Scikit Learn : 머신러닝 학습을 위한 최고의 파이썬 패키지

import sklearn as sk 

 

# Pandas : 데이터 처리를 위한 파이썬 패키지 

import pandas as pd 

 

# Numpy : 행렬 연산을 위한 파이썬 패키지 

import numpy as np 

 

# Matplotlib : 데이터 시각화를 위한 파이썬 패키지 

import matplotlib.pyplot as plt 

 

# Seaborn : 데이터 시각화를 위한 파이썬 패키지 

import seaborn as sns 

 

데이터 호출 

# CSV 파일 

## index_col : 특정 열을 인덱스로 지정 

## header : 헤더(컬럼) 행 설정 -> 주로 데이터에 첫 줄이 헤더가 아닌

## encoding : 파일 인코딩 형식 지정하여 호출 

df = pd.read_csv('example.csv', index_col=0, header=None, e)

# excel 파일 

## header : 헤더(컬럼) 행 설정 

## index_col : 특정 열을 인덱스로 지정 

## sheat : 파일 시트 지정하여 호출 

df = pd.read_excel('example.xlsx', index_col=0, header=None)

 

AICE ASSO 1 

# JSON 파일 

## orient : 특정 객체로 직접 변환 

df = pd.read_json('example.json', orient='records') 

 

# SQL 데이터베이스 파일 

## connection : 연결한 데이터베이스의 테이블 

## index_col : 특정 열을 인덱스로 지정 

import sqlite3 

connection = sqlite3.connect('example.db') 

df = pd.read_sql_query("SELECT * FROM example_table", conne 

 

# HTML 테이블 파일 

df = pd.read_html('http://example.com', header=1) 데이터 전처리 

 

# 데이터 타입 변경 

df = df.astype({'col': 'dtype'}) # int, float, ... 

# 데이터 값 변경 

df.replace({'col' : {'value1': 'value2'}}, inplace = True) 

 

# 중복 데이터 제거 

df = df.drop_duplicates() 

 

# 데이터 결측치 및 이상치 확인 및 처리 

df.isna().sum() # 결측치 확인 

df = df.dropna(axis=0) # 결측행 삭제 

 

## 특정 값 이상의 데이터 삭제 

df = df.drop(df[df['col'] > 'value'].index) 

 

# df = df[df['Speed_Per_Hour'] < 300] 

# 데이터 삭제 

## Axis : 1이면 컬럼, 0이면 행 삭제 

df.drop(['col'], axis=1, inplace=True)

 

AICE ASSO 2 

# Label Encoding 

from sklearn.preprocessing import LabelEncoder 

enc = LabelEncoder() 

cat_cols = df.select_dtypes(include='object').columns 

for col in cat_cols: 

 df[col] = enc.fit_transform(df[col]) 

 

# One-Hot Encoding 

## Pandas get_dummies() 

### columns : 변환하고자 하는 컬럼 선택 

### dummy_na : Nan을 생성하여 결측값도 인코딩 처리 

### prefix : 생성할 dummy variable의 column 이름 앞에 붙을 pref ### prefix_sep : prefix와 범주 사이의 separate 지정(default : _ ### drop_first : k개의 범주에서 k-1개로 dummy variable을 만들 때 df = pd.get_dummies(df, columns=[]) 

## Scikit Learn OneHotEncoder 

from sklearn.preprocessing import OneHotEncoder enc = OneHotEncoder(sparse=False) 

df_enc = enc.fit_transform(df) 

## Keras to_categorical -> 단 데이터가 정수형이여야만 한다. df_enc = to_categorical(df) 

# Standard Scaler 

scaler = StandardScaler() 

X_train_sc = scaler.fit_transform(X_train) 

X_valid_sc = scaler.transform(X_valid) 

# Min-Max Scaler 

scaler = MinMaxScaler() 

X_train_sc = scaler.fit_transform(X_train) 

X_valid_sc = scaler.transform(X_valid) 

데이터 시각화

AICE ASSO 3 

TIP! matplotlib seaborn의 공식 홈페이지에서 파라미터 확인! (정말 생소한 파라미터가 출제될 수도 있다!) 

코드 

# Bar 

## pandas 

df['col'].value_counts().plot(kind='bar') 

# Line 

## pandas 

df['col'].value_counts().plot(kind='line') 

# Box 

## pandas 

df['col'].value_counts().plot(kind='box') 

# Pie 

## pandas 

df['col'].value_counts().plot(kind='pie') 

# Scatter 

## pandas 

df['col'].value_counts().plot(kind='scatter') 

# Joint 

## seaborn 

sns.jointplot(data=df, x='col', y='col', kind='scatter') 

# Hist 

## seaborn 

sns.histplot(data=df, x='col') 

# KDE 

## seaborn 

sns.kdeplot(data=df, x='col') 

# Count 

sns.countplot(data=df, x='col')

AICE ASSO 4 

# Heatmap 

sns.heatmap(data=df.corr(), x='col', annot=True) 

데이터 분할 

# 라이브러리 호출 

from sklearn.model_selection import train_test_split 

target = 'Target' 

X = df_preset.drop([target], axis=1

y = df_preset[target

## test_size : Test 데이터로 가져가고자 하는 비율 

## random_state : 랜덤 시드 값 

## stratify : 지정한 데이터에 대해서 비율에 맞게 나누는 옵션 X_train, X_valid, y_train, y_valid = train_test_split(X, ytest_  rando  strat 

ML 모델링 

TIP! 모델의 파라미터는 scikit learn 공식 문서를 참고할 것

Classification 

# 분류 

## Logistic Regression 

from sklearn.linear_model import LogisticRegression 

model = LogisticRegression() 

model.fit(X_train, y_train) 

score = model.score(X_valid, y_valid) 

## KNeighbors Classifier 

from sklearn.neighbors import KNeighborsClassifier

AICE ASSO 5 

model = KNeighborsClassifier(n_neighbors=5) model.fit(X_train, y_train) 

score = model.score(X_valid, y_valid) 

## Decision Tree Classifier 

from sklearn.tree import DecisionTreeClassifier 

model = DecisionTreeClassifier(max_depth=10,random_state model.fit(X_train, y_train) 

score = model.score(X_valid, y_valid) 

## Random Forest Classifier 

from sklearn.ensemble import RandomForestClassifier 

model = RandomForestClassifier(n_estimators=3, random_st model.fit(X_train, y_train) 

score = model.score(X_valid, y_valid) 

## XGBoost 

from xgboost import XGBClassifier 

model = XGBClassifier(n_estimators=3, random_state=42) model.fit(X_train,y_train) 

score = model.score(X_valid, y_valid) 

## LightGBM 

# 여기에 답안코드를 작성하세요.(lightgbm) 

from lightgbm import LGBMClassifier 

model = LGBMClassifier(n_estimators=3, random_state=42) model.fit(X_train, y_train.values.ravel()) score = model.score(X_valid, y_valid) 

# 분류 평가 

from sklearn.metrics import classification_report, confu cm = confusion_matrix(y_valid, y_pred) 

plt.figure(figsize=(8, 6)) 

 sns.heatmap(cm, annot=True, fmt='d', cmap='Blues', cba

AICE ASSO 6 

 plt.title(f'Confusion Matrix') 

 plt.xlabel('Predicted Label') 

 plt.ylabel('True Label') 

 plt.show() 

  

print(classification_report(y_valid, y_pred)) 

Regression 

# 회귀 

## Linear Regression 

from sklearn.linear_model import LinearRegression 

model = LinearRegression() 

model.fit(X_train, y_train) 

score = model.score(X_valid, y_valid) 

y_pred = model.predict(X_valid) 

## Decision Tree Regression 

from sklearn.tree import DecisionTreeRegressor model = DecisionTreeRegressor(max_depth=5, 

model.fit(X_train, y_train) 

score = model.score(X_valid, y_valid) 

y_pred = model.predict(X_valid) 

## Random Forest 

from sklearn.ensemble import RandomForestRegressor 

model = RandomForestRegressor(max_depth=12,n_estimators= model.fit(X_train, y_train) 

score = model.score(X_valid, y_valid) 

y_pred = model.predict(X_valid) 

## XGBoost 

from xgboost import XGBRegressor

AICE ASSO 7 

model = XGBRegressor(n_estimators=100) 

model.fit(X_train, y_train) 

score = model.score(X_valid, y_valid) 

y_pred = model.predict(X_valid) 

## LightGBM 

from lightgbm import LGBMRegressor 

model = LGBMRegressor() 

model.fit(X_train, y_train) 

score = model.score(X_valid, y_valid) 

y_pred = model.predict(X_valid) 

# 회귀 평가 

from sklearn.metrics import mean_absolute_error, mean_sq 

mae = mean_absolute_error(y_valid, y_pred) 

mse = mean_squared_error(y_valid, y_pred) 

DL 모델링 

TIP! 문제의 형태에 따른 출력층의 활성화 함수 설정

회귀 : linear 

이진 분류 : sigmoid 

다중 분류 : softmax 

TIP! 문제의 유형과 타겟의 형태에 따른 손실함수 설정

회귀 : mse 

이진 분류 : binary_crossentropy 

다중 분류(원핫) : categorical_crossentropy 

다중 분류(정수) : sparse_categorical_crossentropy 

import tensorflow as tf 

from tensorflow.keras.models import Sequential, load_model from tensorflow.keras.layers import Dense, Activation, Drop from tensorflow.keras.callbacks import EarlyStopping, Model

AICE ASSO 8 

from tensorflow.keras.utils import to_categorical tf.random.set_seed(1) 

# DL 모델 구성 

model = Sequential([ 

 Input(shape=(X_train.shape[1],)), 

 Dense(64), 

 BatchNormalization(), 

 Activation('relu'), 

  

 Dense(128), 

 BatchNormalization(), 

 Activation('relu'), 

  

 Dropout(0.2), 

 Dense(128), 

 BatchNormalization(), 

 Activation('relu'), 

  

 Dense(1) 

]) 

model.compile(optimizer='adam',loss='mae',metrics=['mae', ' 

# 콜백함수 정의 

es = EarlyStopping(monitor='val_loss', mode='min', restore_ mc = ModelCheckpoint('navi_model_cp.keras', monitor='val_lo  verbose=1, save_best_only=True) 

# 모델 학습하며, 로그를 history에 저장 

history = model.fit(X_train, y_train, 

 epochs=30, 

 batch_size=16, 

 validation_split=.2, 

 callbacks=[es, mc]) 

# 모델 저장 

model.save('navi_model.h5')

AICE ASSO 9 

# 그래프를 그리기 위한 데이터 추출 

epochs = range(1, len(history.history['mse']) + 1) train_mse = history.history['mse'] 

validation_mse = history.history['val_mse'] 

# MSE 그래프 그리기 

plt.figure(figsize=(8, 5)) 

plt.plot(epochs, train_mse, 'bo-', label='mse') # 'bo-'는 파 plt.plot(epochs, validation_mse, 'go-', label='val_mse') # plt.title('Model MSE') 

plt.xlabel('Epochs') 

plt.ylabel('MSE') 

plt.legend() 

plt.grid(True) 

plt.show()

AICE ASSO 10 



Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.