딥러닝은 여러 층의 레이어(Layer)를 쌓아 데이터 속에 숨겨진 복잡한 패턴을 찾아내는 기술이다.
로지스틱 회귀는 직선으로만 판단하지만, 딥러닝은 은닉층을 통해 매우 복잡한 경계선을 그릴 수 있다.
import pandas as pd
from sklearn.neural_network import MLPClassifier
from sklearn.model_selection import train_test_split
from sklearn.metrics import accuracy_score, confusion_matrix
class DeepLearningPredictor:
def __init__(self, file_path: str):
self.df = pd.read_csv(file_path)
self.features = ['time_input', 'total_class_count', 'is_multi_learner', 'job']
self.target = 'completed'
self.df = self.df[self.features + [self.target]].dropna()
def run_neural_network(self):
encoded_df = pd.get_dummies(self.df, columns=['job'])
X = encoded_df.drop(columns=[self.target])
y = encoded_df[self.target]
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
model = MLPClassifier(hidden_layer_sizes=(16, 8), max_iter=1000, random_state=42)
model.fit(X_train, y_train)
y_pred = model.predict(X_test)
print(f"--- 딥러닝(MLP) 분석 결과 ---")
print(f"전체 정확도(Accuracy): {accuracy_score(y_test, y_pred): .4f}")
print("\n[혼동 행렬(Confusion Matrix)]")
matrix = confusion_matrix(y_test, y_pred)
print(matrix)
actual_positive_hits = matrix[1, 1]
print(f"\nAI가 실제로 찾아낸 수료자 수: {actual_positive_hits}명")
# --- 실행부 ---
predictor = DeepLearningPredictor('train.csv')
predictor.run_neural_network()

MLPClassifier는 단순한 직선 형태의 분류를 넘어, 여러 층의 뉴런을 통해 데이터 간의 복잡한 비선형 관계를 학습하는 인공신경망의 기초 모델이다.