sklearn을 사용한 로지스틱 회귀 소개

3314 단어

로지스틱 회귀란 무엇입니까



로지스틱 회귀는 이진 분류 문제에 사용되는 방법입니다. 즉, 데이터를 0 또는 1로 분류합니다. LR이 사용되는 사례의 몇 가지 예로는 이메일이 스팸인지 여부, 누군가 투표할 것인지 또는 질병 발병 위험까지 감지하는 것이 포함됩니다. 이를 위해 LR은 Logistic Function을 사용하므로 Logistic Regression이라는 이름을 사용합니다.

물류 기능



로지스틱 함수는 방정식 1/e^-x를 갖는 s자형 곡선입니다. 아래에서 볼 수 있듯이 실제 숫자를 0과 1 사이의 값으로 매핑할 수 있지만 이러한 제한 자체는 아닙니다.

예시



Kaggle에서 데이터 세트 다운로드: https://www.kaggle.com/c/titanic/data?select=train.csv

그런 다음 필요한 라이브러리와 데이터 세트를 가져옵니다.

import pandas as pd
from sklearn.linear_model import LogisticRegression
from sklearn.model_selection import train_test_split
from sklearn.metrics import mean_squared_error, mean_squared_log_error

df = pd.read_csv('../../Downloads/train.csv')
df.head()



다음으로 범주 데이터를 지표 변수로 변경하고 사람들의 이름과 같이 필요하지 않은 기능을 제거할 것입니다.

x_feats = ['Pclass', 'Sex', 'Age', 'SibSp', 'Fare', 'Cabin', 'Embarked']
X = pd.get_dummies(df[x_feats], drop_first=True)
y = df['Survived']
X.head()



마지막으로 모델을 구축하기 전에 누락된 값을 채우고 데이터를 정규화할 것입니다. 이렇게 하면 로지스틱 회귀에는 필요하지 않지만 모델을 더 빠르게 실행할 수 있습니다.

# Fill missing values
X = X.fillna(value=0) 
for col in X.columns:
    # Subtract the minimum and divide by the range forcing a scale of 0 to 1 for each feature
    X[col] = (X[col] - min(X[col]))/ (max(X[col]) - min(X[col])) 

이제 실제로 데이터를 분할하고 모델을 추가할 수 있습니다.


X_train, X_test, y_train, y_test = train_test_split(X, y, random_state=0)

logreg = LogisticRegression(fit_intercept=False, C=100, solver='liblinear')
model_log = logreg.fit(X_train, y_train)
model_log

그런 다음 마지막으로 모델의 성능을 확인할 수 있습니다.

print('Training r^2:', logreg.score(X_train, y_train))
print('Test r^2:', logreg.score(X_test, y_test))
print('Training MSE:', mean_squared_error(y_train, logreg.predict(X_train)))
print('Test MSE:', mean_squared_error(y_test, logreg.predict(X_test)))



테스트에서 78%, 누군가가 타이타닉에서 살아남았는지 여부를 예측하기에는 너무 초라하지 않습니다. 모델을 생성한 단계에서 볼 수 있듯이 C를 기본값 1에서 1000으로 증가시켰습니다. 이 값을 증가시키면 단순히 데이터의 작은 섭동을 조정하기 위해 매개변수의 크기가 증가할 가능성이 높아집니다. 나는 이 값을 가지고 놀면서 그것이 당신의 예측을 어떻게 바꾸는지 볼 것을 제안합니다.

좋은 웹페이지 즐겨찾기