sklearn을 사용한 로지스틱 회귀 소개
로지스틱 회귀란 무엇입니까
로지스틱 회귀는 이진 분류 문제에 사용되는 방법입니다. 즉, 데이터를 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으로 증가시켰습니다. 이 값을 증가시키면 단순히 데이터의 작은 섭동을 조정하기 위해 매개변수의 크기가 증가할 가능성이 높아집니다. 나는 이 값을 가지고 놀면서 그것이 당신의 예측을 어떻게 바꾸는지 볼 것을 제안합니다.
Reference
이 문제에 관하여(sklearn을 사용한 로지스틱 회귀 소개), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://dev.to/trossii/intro-to-logistic-regression-with-sklearn-2gf6
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
로지스틱 함수는 방정식 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으로 증가시켰습니다. 이 값을 증가시키면 단순히 데이터의 작은 섭동을 조정하기 위해 매개변수의 크기가 증가할 가능성이 높아집니다. 나는 이 값을 가지고 놀면서 그것이 당신의 예측을 어떻게 바꾸는지 볼 것을 제안합니다.
Reference
이 문제에 관하여(sklearn을 사용한 로지스틱 회귀 소개), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://dev.to/trossii/intro-to-logistic-regression-with-sklearn-2gf6
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
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)))
Reference
이 문제에 관하여(sklearn을 사용한 로지스틱 회귀 소개), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/trossii/intro-to-logistic-regression-with-sklearn-2gf6텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)