군침이 싹 도는 코딩
Logistic Regression 본문

해당 데이터 프레임으로 구매여부를 예측하는
로지스틱 리그레이션을 만들어보자
로지스틱 리그레이션은 분류예측을 할때 사용되는 인공지능이다.
코딩방식은 리니어 리그레이션과 비슷하므로 다른점만 # 로 후술한다
1. nan 을 찾는다
df.isna().sum()
>>> User ID 0
Gender 0
Age 0
EstimatedSalary 0
Purchased 0
dtype: int64
2.카테고리컬 데이터인 Purchased 데이터를 정렬해준다
df['Purchased'].unique()
>>> array([0, 1], dtype=int64)
3.X,y를 나눈다
X = df.loc[:,'Age':'EstimatedSalary']
y = df['Purchased']
4. 피쳐 스케일링을 한다
from sklearn.preprocessing import MinMaxScaler
scaler_X = MinMaxScaler()
X = scaler_X.fit_transform(X)
# 리니어 리그레이션과 다르게 로지스틱 리그레이션은 피쳐 스케일링을 해주지 않으므로
따로 해야 한다 y는 이미 0과 1이므로 따로 피쳐 스케일링 할 필요가없다
5. 트레이닝과 테스트셋으로 나눈다
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)
6.모델링 및 학습을 시킨다
from sklearn.linear_model import LogisticRegression
classifier = LogisticRegression(random_state=1)
classifier.fit(X_train, y_train)
LogisticRegression 에 import 한다
LogisticRegression 을 변수 classifier 저장
fit 함수를 사용해 학습시킨다

# 인공지능 관련 학습하라는 함수 fit은 전부 통일이므로 fit을 사용하면 된다
7. 테스트를 해본다
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로 통일되어있으므로 predict를 사용하면 된다
로지스틱 인공지능은 분류 예측을 하는 인공지능이므로 사용된 데이터프레임의 구매여부를 판단하는거기때문에
출력값이 0과 1로 나왔다
# 번외로 0과 1이 어떤식으로 출력되었는지를 알고싶다면 predict_proba 를 사용한다
classifier.predict_proba(X_test)
# 0 1
>>> array([[0.86288917, 0.13711083],
[0.70574277, 0.29425723],
[0.49025346, 0.50974654],
[0.38383672, 0.61616328],
[0.75287835, 0.24712165],
[0.71129842, 0.28870158],
[0.97386557, 0.02613443],
# 수치가 더 높은쪽으로 결과값이 출력되는데 왼쪽이 0 오른쪽이 1이다
따라서 첫번째 값은 0 두번째 0 세번째는 1로 나온것이다
8. 검증
로지스틱 리그레이션은 리니어 리그레이션과 다른방법으로 검증한다
로지스틱 리그레이션은 confusion_matrix 라는것을 사용한다
from sklearn.metrics import confusion_matrix,accuracy_score,classification_report
cm = confusion_matrix(y_test,y_pred)
cm
>>> array([[52, 6],
[14, 28]], dtype=int64)
accuracy_score(y_test,y_pred)
>>> 0.8
# cm 이라고 저장한 컨퓨전 매트릭스의 행 부분은 y_test (실제값) 열 부분은 y_pred(예측값) 을 넣어준것이다
1행 1열은 실제값도 0 예측값도 0 이 52개라는 뜻이고
2행 2열은 실제값이 1 예측값도 1 이 28개 있다는 뜻이다
이 두개를 더한 값을 전체값으로 나눈것이 이 인공지능의 정확도인데
이것을 구해주는것이 accuracy_score 이다
'Python > Machine Learning' 카테고리의 다른 글
up sampling (0) | 2022.12.02 |
---|---|
인공지능 학습 데이터 전처리중 nan 처리 방법 (replace) (0) | 2022.12.02 |
LinearRegression (1) | 2022.12.01 |
데이터셋을 트레이닝용과 테스트용으로 나누는법 (train_test_split) (0) | 2022.12.01 |
피쳐 스케일링 (0) | 2022.12.01 |