Zero부터 시작하는 지도학습

이현준·2025년 12월 20일

정리노트

목록 보기
3/4
post-thumbnail

❇️ import 지도학습


🎯 데이터 분리


▶️ train_test_split


from sklearn.model_selection import train_test_split
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42) 
# 훈련 80 : 테스트 20 

🎯 회귀


▶️ LinearRegression


# 선형 회귀
from sklearn.linear_model import LinearRegression

reg = LinearRegression() # 객체 생성
reg.fit(X_train, y_train) # 학습
y_pred = reg.predict(X_test) # 예측

reg.coef_ # 기울기
reg.intercept_ # y 절편

▶️ SGDRegressor


# 경사 하강법

from sklearn.linear_model import SGDRegressor 

sr = SGDRegressor(max_iter=5000, eta0=1e-3, random_state=42, verbose=1)
sr.fit(X_train, y_train)

# SGD : Stochastic Gradient Descent 확률적 경사 하강법

# max_iter : 훈련세트 반복 횟수 (Epoch 횟수)
# eta0 : 학습률 지수 표기 법 사용가능 보통 (0.001)
# verbose : 학습하는거를 출력할지 여부

# 지수 표기법
# 1e-3 : 0.001 (10^-3)
# 1e-4 : 0.0001 (10^-4)
# 1e+3 : 1000 (10^3)
# 1e+4 : 10000 (10^4)

▶️ PolynomialFeatures


# 다항회귀
from sklearn.preprocessing import PolynomialFeatures
poly_reg = PolynomialFeatures(degree=2) # 2차
X_poly = poly_reg.fit_transform(X)

# degree 내가 몇차 방정식의 선을 그어서 값을 예측할지
# degree=2, 2차 방정식
# x가 3이라면 [x^0 ,x^1 ,x^2] => [1, 3, 9] 이런 식으로 요소가 추가 됨

# 이러고 선형회귀를 적용하면 다항회귀

🎯 분류


▶️ LogisticRegression


from sklearn.linear_model import LogisticRegression
classifier = LogisticRegression()

classifier.fit(X_train, y_train)

classifier.predict(X_test) # 예측
classifier.predict_proba(X_test) # 예측 (확률)

🎯 인코딩


▶️ OneHotEncoder


from sklearn.compose import ColumnTransformer
from sklearn.preprocessing import OneHotEncoder
ct = ColumnTransformer(transformers=[('encoder', OneHotEncoder(drop='first'), [2])], remainder='passthrough')

X = ct.fit_transform(X) 

# transformers : 1번째 인자 'encoder' 어떤 것을 진행 할것인지
            	# 2번째 인자 OneHotEncoder(drop='first') 구체적으로 어떤 것을 할 것인지 그리고 다중 공산성 문제 때문에 컬럼 1개 제거
            	# 3번째 인자 어떤 컬럼에 적용할지 
# remainder : 남아 있는 컬럼은 어떻게 할 것인지 'passthrough' 로 하면 그냥 놔두기

🎯 회귀 모델 평가 지표


▶️ MAE


# MAE (Mean Absolute Error) : (실제 값과 예측값) 차이의 절대 값의 평균

from sklearn.metrics import mean_absolute_error
mean_absolute_error(y_test, y_pred) # 실제 값, 예측 값 

▶️ MSE


# MSE (Mean Squared Error) : (실제 값과 예측값) 차이의 제곱의 평균

from sklearn.metrics import mean_squared_error
mean_squared_error(y_test, y_pred) #실제 값, 예측 값

▶️ RMSE


# RMSE (Root Mean Squared Error) : (실제 값과 예측값) 차의의 제곱의 평균에 다가 루트

from sklearn.metrics import root_mean_squared_error
root_mean_squared_error(y_test, y_pred)

▶️ R2


# R2 : 결정계수

from sklearn.metrics import r2_score
r2_score(y_test, y_pred)

🎯 분류 모델 평가 지표


▶️ confusion_matrix


# 혼동행렬

from sklearn.metrics import confusion_matrix
cm = confusion_matrix(y_test, y_pred)

# TRUE NEGATIVE (TN)   | FALSE POSITIVE (FP)
# 불합격일거야 (예측)    | 합격일거야(예측)
# 불합격 (실제)         | 불합격(실제)
# ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ
# FLASE NEGATIVE (FN)  | TRUE POSITIVE (TP)
# 불합격일거야 (예측)    | 합격일거야 (예측)
# 합격 (실제)           | 합격(실제)

▶️ classification_report


# 회귀모델 리포트

from sklearn.metrics import classification_report
print(classification_report(y_test, y_pred))

profile
Re: 제로부터 시작하는 데이터분석

0개의 댓글