Logistic Regression 은 주로 이진 분류(binary classification) 문제에 사용되는 머신러닝 알고리즘 중 하나이다. 이 알고리즘은 선형 회귀 모델을 기반으로 하지만, 출력을 범주형 값(0 또는 1)으로 변환하여 확률을 예측하는 데 사용된다.
이메일 클릭을 할 사람과 안할 사람으로 분류할 것이다. 빨간점이 바로 데이터이며, 액션의 0과 1이 바로 레이블이다.
레이블이 있다는 것은 수퍼바이저드 러닝 이라는 뜻이다.
"슈퍼바이저드 러닝" 은 기계 학습의 한 유형으로, 모델이 입력과 해당 출력 간의 관계를 학습하는 방법이다. 이러한 관계는 레이블된(labelled) 데이터셋에서 관찰된다. 각 입력에는 해당 출력에 대한 "정답"이 제공된다. 이러한 방식으로 모델은 주어진 입력에 대해 적절한 출력을 예측하는 방법을 학습한다.
- 나이와 연봉으로 분석해서, 물건을 구매할지 안할지를 분류하자.
유저 ID, 성별, 나이, 급여 물건을 샀는지에 대한 여부가 있는 데이터 프라임이 있다.
여기서 필요한 정보만 추출해서 물건을 구매할지 안할지 분석할 수 있다.
y=df['Purchased']
구매 할지 안할지에대해 예측해야함으로 Purchased를 y로 둔다.
X=df.loc[:,'Age':'EstimatedSalary']
나이와 연봉을 x로 둔다.
피처스케일링
피처 스케일링은 데이터의 스케일(scale)을 조정하는 과정으로, 머신 러닝에서 중요한 전처리 단계 중 하나이다. 이를 통해 모델의 성능을 향상시킬 수 있다.
from sklearn.preprocessing import StandardScaler, MinMaxScaler
scaler_X = StandardScaler()
scaler_X.fit_transform(X)
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)
- StandardScaler와 MinMaxScaler를 import힌다. 이들은 각각 표준화와 최소-최대 스케일링을 수행하는 데 사용된다.
- StandardScaler 객체를 생성하고, fit_transform() 메서드를 사용하여 입력 데이터(X)를 표준화한다.
- train_test_split() 함수를 사용하여 입력 데이터(X)와 레이블(y)을 훈련 데이터와 테스트 데이터로 분할한다. 분할된 데이터는 각각 X_train, X_test, y_train, y_test에 저장된다.
LogisticRegression 학습
from sklearn.linear_model import LogisticRegression
classifier = LogisticRegression()
classifier.fit(X_tarin,y_train)
LogisticRegression 모델을 import해서 X_tarin,y_train 을 사용하여 학습한 모델을 만든다
테스트
y_pred=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, 1, 0, 1, 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, 1, 1, 1, 0, 0, 1, 1, 0, 0, 0], dtype=int64)
비교
원래값이 y_test와 모델이 예측한 y_pred 값을 비교하여 정확도를 측정한다.
df=y_test.to_frame()
df['y_pred']=y_pred
from sklearn.metrics import accuracy_score
accuracy_score(y_test,y_pred)
#출력값
0.84
accuracy_score를 사용하여 정확도를 예측했더니 0.84가 나온걸 볼 수 있다.
'AI > Machine Learning' 카테고리의 다른 글
[Python]머신러닝 용어 정리 supervised, unsupervised 차이점, 종류 (0) | 2024.04.22 |
---|---|
[Python]머신러닝 Machine Learning MSE(평균 제곱 오차,Mean Squared Error ) 를 쓰는 이유 (1) | 2024.04.12 |
[Python]머신러닝 Machine Learning supervised Regression mse(평균 제곱 오차) (1) | 2024.04.12 |