0

많은 범주 형 칼럼이있는 비디오 게임 데이터 세트가 있습니다. 모든 열을 이진화했습니다. 이제 Logistic Regression으로 열 (등급이라고 함)을 예측하려고하지만이 열은 실제로 4 개의 열 (Rating_Everyone, Rating_Everyone10 +, Rating_Teen 및 Rating_Mature)으로 이진화됩니다. 그래서, 나는 로지스틱 회귀 네 번을 적용하고 여기에 내 코드 : Rating_Teen 및 Rating_Mature에 대한 등등파이썬으로 이진 클래스 로지스틱 회귀를 병합하는 방법

y = df2['Rating_Everyone10'].values 
df2 = df2.drop(['Rating_Everyone'], axis=1) 
df2 = df2.drop(['Rating_Everyone10'], axis=1) 
df2 = df2.drop(['Rating_Teen'], axis=1) 
df2 = df2.drop(['Rating_Mature'], axis=1) 
X = df2.values 
Xtrain, Xtest, ytrain, ytest = train_test_split(X, y, test_size=0.20) 

log_reg = LogisticRegression(penalty='l1', dual=False, C=1.0, fit_intercept=False, intercept_scaling=1, 
          class_weight=None, random_state=None, solver='liblinear', max_iter=100, 
          multi_class='ovr', 
          verbose=0, warm_start=False, n_jobs=-1) 
log_reg.fit(Xtrain, ytrain) 
y_val_l = log_reg.predict(Xtest) 
ris = accuracy_score(ytest, y_val_l) 

print("Logistic Regression Rating_Everyone accuracy: ", ris) 

그리고 :

df2 = pd.read_csv('../MQPI/docs/Video_Games_Sales_as_at_22_Dec_2016.csv', encoding="utf-8") 
y = df2['Rating_Everyone'].values 
df2 = df2.drop(['Rating_Everyone'], axis=1) 
df2 = df2.drop(['Rating_Everyone10'], axis=1) 
df2 = df2.drop(['Rating_Teen'], axis=1) 
df2 = df2.drop(['Rating_Mature'], axis=1) 
X = df2.values 
Xtrain, Xtest, ytrain, ytest = train_test_split(X, y, test_size=0.20) 

log_reg = LogisticRegression(penalty='l1', dual=False, C=1.0, fit_intercept=False, intercept_scaling=1, 
          class_weight=None, random_state=None, solver='liblinear', max_iter=100, 
          multi_class='ovr', 
          verbose=0, warm_start=False, n_jobs=-1) 
log_reg.fit(Xtrain, ytrain) 
y_val_l = log_reg.predict(Xtest) 
ris = accuracy_score(ytest, y_val_l) 

print("Logistic Regression Rating_Everyone accuracy: ", ris) 

그리고 다시. 이 4 가지 결과를 모두 하나의 결과로 병합하는 방법을 말해 줄 수 있습니까? 아니면 여러 가지 로지스틱 회귀 문제를 더 잘 수행하려면 어떻게해야합니까? LogisticRegression 모델은 본질적이다

답변

1

는 멀티 클래스 문제를 처리 : 아래

가 지원하는 분류를 요약 한 것입니다 scikit 배우기 전략별로 그룹화; 본질적으로 멀티 클래스 : 당신이 이들 중 하나를 사용하는 경우 사용자 정의

행동 멀티 클래스 원하지 않는다면 당신은이 클래스 에서 메타 추정량이 필요하지 않습니다 나이브 베이 즈, LDA와 QDA, 의사 결정 나무, 임의의 숲을, 가장 가까운 이웃, sklearn.linear_model.LogisticRegression에서 multi_class = 'multinomial'설정. multi_class='multinomial'을 설정하고 멀티 클래스 문제를 지원하는 다른 해법의 'lbfgs' 또는 1 에 해결사를 변경 (당신이 샘플이 평가를 통해 균형되지 않을 수 있습니다으로 수행해야 할 수 있습니다로) 클래스 가중치가없는 기본 모델로서

: 멀티 클래스 문제 만 '뉴턴-CG', '처짐'과 'lbfgs'핸들 다항 손실을

; 'liblinear'는 one-versus-rest 스킴으로 제한됩니다.

따라서 데이터 세트를 분할하지 않아도됩니다. 대신 원본 평점 열을 레이블로 제공하십시오.

X = np.random.randn(10, 10) 
y = np.random.randint(1, 4, size=10) # 3 classes simulating ratings 
lg = LogisticRegression(multi_class='multinomial', solver='lbfgs') 
lg.fit(X, y) 
lg.predict(X) 

편집 : 코멘트에 응답

여기에 최소한의 예입니다.

td; lr : 모델에서 해당 상호 작용을 학습 할 것으로 기대합니다. 그렇지 않은 경우 해당 정보를 기능으로 인코딩 할 수 있습니다. 따라서 입니다. 클래스를 이진화해야합니다.

나는 영화의 특징을 가지고 있고 레이블 (예측하려는)로 영화에 대한 MPAA 등급을 가지고 있다는 것을 이해합니다. 이것은 로지스틱 회귀 (이것을 알고 있습니다)를 사용하여 모델링을 시작할 수있는 여러 문제입니다. 이것은 위에서 제안한 모델입니다.

이제 클래스 간 암시 적 거리가 있음을 알았습니다. 이 정보를 사용하는 방법은 모델의 기능입니다.그러나, 나는 처음에 그 모델을 보게 될 것입니다.

+0

먼저 답변 해 주셔서 감사합니다. 다음과 같은 정보가 있습니다. '데이터 집합을 기존 방식대로 분할 할 필요가 없습니다. 대신 원래의 등급 열을 레이블로 제공하십시오. ' 등급 클래스 (E, E10 +, T 및 M) 사이에 암시 적 링크를 제공하지 마십시오. 여기서 E는 E10 +에 가장 가깝지만 M (기타.)? 다시 한 번 감사합니다. – Falkons

+0

내 편집 된 답변보기 – putonspectacles

관련 문제