AIVLE School DX 3기

[에이블스쿨 6주차] 머신러닝3

김보통김보름 2023. 3. 8. 16:03
728x90
반응형

🤔특정한 글자만 찾고 싶어요

정규표현식을 이용합시다!
data['Title'] = data['Name'].str.extract('([A-Za-z]+)\.')
dot(.)앞에 있는 알파벳만 추출한다는 뜻입니다.

 


알고리즘

Linear Regression
K-Nearest Neighbor
Decision Tree
Logistic Regression
Support Vector Machine
기본 알고리즘 정리

Linear Regression

종속 변수 y와 한 개 이상의 독립 변수 (또는 설명 변수) X와의 선형 상관 관계를 모델링하는 회귀분석 기법

 

절편과 기울기

 

선형회귀

  • 데이터는 최선의 직선을 긋기가 쉽지 않음
  • 가장 최선의 직선이 무엇인가?(혹은 그린 직선이 최선의 직선일까?)
  • y = ax+b에서 최선의 기울기 a와 y 절편 b를 결정하는 방법이 필요
  • 직선을 회귀선이라 부름

 

최적의 회귀 모델

: 전체 오차 제곱의 합이 최소

 

 

 

단순회귀 

  • x값이 하나 인 것
  • y = [편향절편] + [가중치] * x

단순 회귀의 회귀 계수

print(list(x_train[feaures]))
print(model.coef_) # 가중치(기울기)
print(model.intercept_) # 편향(절편)

 

 

다중회귀

  • x값이 여러개 인 것
  • 여러 요인들(독립변수)로 인해 값(종속변수)가 결정 됨.

다중 회귀의 회귀 계수

#회귀계수 확인
print(list(x_train[features]))
print(model.coef_)       # 가중치
print(model.intercept_)  # 편향

 

선은 학습데이터에 대한 최적의 회귀선

regplot는 선형회귀그래프를 그려주는 함수

 

⭐stratify=y

train_test_split()함수 내의 매개변수
매개변수에 타깃 데이터(y)를 전달하면 클래스 비율에 맞게 데이터를 나누게 됨

⭐테스트 세트의 개수가 훈련 세트에 비해 터무니없이 작을 때 샘플링 편향이 발생할 수 있음
# 모듈 불러오기
from sklearn.model_selection import train_test_split

# 7:3으로 분리
x_train, x_test, y_train, y_test = train_test_split(x, y, test_size=0.3,stratify=y, random_state=1)

 

 

🤔다중공선성이 뭐죠? 그리고 왜 제거해야 되나요?

다중공선성이란,
독립 변수의 일부가 다른 독립 변수의 조합으로 표현될 수 있는 경우

각 독립변인들이 영향을 줘서 회귀식의 회계계수 변동성이 심해집니다!
그래서 회계게수를 종속변수에 대한 상대적인 설명력으로 이해하기 어려워집니다.

R^2가 높으면 다른 변수들로 설명이 가능하니 제거하는 것이 좋습니다!

KNN

k-Nearest Neighbor : k 최근접 이웃

맨하튼 거리는 유클리도 거리보다 항상 크거나 같다.

 

 

 

⭐Scalling이 필요하다

방법 1) Normalization 👈 실습 때 우리가 사용하는 것

방법 2) Standariztion

 

from sklearn.preprocessing import MinMaxScaler
scaler = MinMaxScaler()

scaler.fit(x_train)
x_train = scaler.transform(x_train)
x_test = scaler.transform(x_test)

🤔정규화를 할 때 왜 전체 데이터를 쓰지 않나요?

❌❌절대 안 됩니다❌❌
어느 데이터가 test 데이터로 갈지 모르기 때문에 train데이터와 test데이터를 분리 후 정규화 작업을 해줘야 합니다.

1. 규칙을 만들 때 미래의 데이터에 영향이 가면 안 됩니다.
2. 미래의 데이터에 따라 규칙이 변하면 안 됩니다.

가변수 한 것도 정규화하기!!!!

 

정규화 이전 값 확인

# 정규화 이전 값 확인
scaler.inverse_transform(x_train)

 

🤔표준화와 정규화가 뭐가 다른가요?

표준화(Standardization)와 정규화(Normalization)는 데이터 전처리 과정에서 사용되는 방법들 중 하나입니다. 이 두 방법은 데이터의 스케일을 조정하는 것이 목적입니다.

표준화는 데이터의 평균과 표준편차를 이용하여 데이터를 변환하는 방법입니다. 표준화를 통해 데이터의 평균은 0, 표준편차는 1이 되도록 스케일링됩니다. 표준화는 이상치(outlier)가 있는 데이터에 대해서도 적용하기 쉽습니다. 예를 들어, 나이와 소득 데이터가 있을 때, 표준화를 통해 나이와 소득 데이터를 동일한 스케일로 변환할 수 있습니다.

정규화는 데이터의 최솟값과 최댓값을 이용하여 데이터를 변환하는 방법입니다. 정규화를 통해 데이터의 최솟값은 0, 최댓값은 1이 되도록 스케일링됩니다. 정규화는 데이터의 분포가 균등하게 분포되어 있는 경우에 사용하기 적합합니다. 예를 들어, 이미지 데이터에서 각 픽셀의 값을 0~255 범위에서 0~1 범위로 정규화할 수 있습니다.

따라서, 표준화와 정규화의 차이점은 데이터를 스케일링하는 방식에 있습니다. 표준화는 평균과 표준편차를 이용하여 스케일링하며, 정규화는 최솟값과 최댓값을 이용하여 스케일링합니다.

이상치가 큰 경우 표준화
이상치가 작은 경우 정규화 

 

728x90