개발학습일지

[AI] 머신 러닝 피처 스케일링, train test 만들기, LogisticRegression 모델링 본문

AI/Machine Learning

[AI] 머신 러닝 피처 스케일링, train test 만들기, LogisticRegression 모델링

처카푸 2024. 4. 15. 13:59

시작하기 전 임폴트!

# Importing the libraries
import numpy as np
import matplotlib.pyplot as plt
import pandas as pd
import seaborn as sb

이번 포스팅에서 사용 할 데이터 df

df = pd.read_csv('Social_Network_Ads.csv')
df.head()

 

나이와 연봉으로 분석해서, 물건을 구매할지 안할지를 분류해보자

1. 데이터에 NaN이 있는지 확인해야한다

df.isna().sum()
>>>
    User ID            0
    Gender             0
    Age                0
    EstimatedSalary    0
    Purchased          0
    dtype: int64

 

2. X와 y 값 분리해주기

- 내가 구하고 싶은 곳은 'Purchased' 이고 예측하기 위해 사용 할 데이터는 'Age', 'EstimatedSalary' 이다

y = df['Purchased']
X = df.loc[ : , ['Age', 'EstimatedSalary'] ]

 

3. 로지스틱 리그레션은 피처 스케일링을 해주어야 한다

-  StandardScaler와 MinMaxScaler 2가지 종류가 있다

from sklearn.preprocessing import StandardScaler, MinMaxScaler

- 사용 방법은 같고 이번엔 StandardScaler 를 사용했다

scaler_X = StandardScaler()
X = scaler_X.fit_transform(X)

 

4. 인공지능에 넣어 줄 train과 test를 만들어주자

- train_test_split(X, y, test_size= * , random_state= * ) 사용한다

from sklearn.model_selection import train_test_split
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.25, random_state= 1)
X_train.shape
# (300, 2)
X_test.shape
# (100, 2)

 

5. 모델링을 선택하여 인공지능 만들기

- 이번 학습에선 분류의 모델링을 사용해야한다

- 기본적으로 LogisticRegression() 의 변수 이름은 classifier 로 설정하여 사용한다

- classifier.fit() 으로 학습시킨다 

from sklearn.linear_model import LogisticRegression
classifier = LogisticRegression()
classifier.fit(X_train, y_train)

# predict 하면 자동으로 기준을 만들어 구분하여 0, 1로 예측 한다
classifier.predict(X_test)
>>>
    array([0, 0, 1, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 1, 1, 1, 0, 0, 1, 0, 1,
           1, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0,
           1, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 1, 0, 0, 1,
           0, 0, 1, 0, 1, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0,
           0, 0, 0, 1, 0, 0, 0, 1, 1, 0, 0, 0], dtype=int64)

- 자동으로 기준은 만드는게 싫으면 predict_proba()를 써서 [0일 확률, 1일 확률] 을 보면 된다

classifier.predict_proba(X_test)
>>>
    array([[0.86288917, 0.13711083],
           [0.70574277, 0.29425723],
           [0.49025346, 0.50974654],
           ...
           [0.67473982, 0.32526018],
           [0.72758505, 0.27241495],
           [0.86402151, 0.13597849]])