어떤 이유로 공변량의 순서는 scikit-learn에서 LogisticRegression
분류 자와 관련이있는 것으로 보입니다. 이상하게 보입니다. 나는 9 개의 공변량과 2 진 출력을 가지고 있는데, 열의 순서를 바꾸고 fit()
을 호출 한 다음 predict_proba()
을 호출하면 출력이 달라집니다.LogisticRegression scikit는 훈련에 관한 공변량 (열) 순서 문제를 배웁니다.
logit_model.fit(df['column_1','column_2'],df['target'])
logit_model.predict_proba(df['column_1','column_2'])
array([[ 0.26117794, 0.73882206], ..])
이 나에게 놀라운 보이지만 어쩌면의 내부에 대한 지식의 내 부족 이잖아 다음
logit_model.fit(df['column_2','column_1'],df['target'])
logit_model.predict_proba(df['column_2','column_1'])
array([[ 0.27387109, 0.72612891] ..])
다음
logit_model = LogisticRegression(C=1e9, tol=1e-15)
아래 장난감 예는 다른 결과로를 제공 알고리즘 및 적합 방법.
무엇이 누락 되었습니까?
편집 : 여기에 전체 코드 및 데이터입니다
데이터 :이 다른 결과를 제공하기 때문에 https://s3-us-west-2.amazonaws.com/gjt-personal/test_model.csv
import pandas as pd
from sklearn.linear_model import LogisticRegression
df = pd.read_csv('test_model.csv',index_col=False)
columns1 =['col_1','col_2','col_3','col_4','col_5','col_6','col_7','col_8','col_9']
columns2 =['col_2','col_1','col_3','col_4','col_5','col_6','col_7','col_8','col_9']
logit_model = LogisticRegression(C=1e9, tol=1e-15)
logit_model.fit(df[columns1],df['target'])
logit_model.predict_proba(df[columns1])
logit_model.fit(df[columns2],df['target'])
logit_model.predict_proba(df[columns2])
이 tol=1e-15
함께 할 수있는 그 무엇인가를 밝혀졌습니다.
LogisticRegression(C=1e9, tol=1e-15)
그러나 이것은 동일한 결과를 제공합니다.
LogisticRegression(C=1e9)
Grr yeh thats 내가 생각하고 있었지만 문서에는 다음과 같이 표시되어 있습니다 : "Used solver == 'sag'또는 'liblinear'일 때. " 그래서 나는'newton-cg'을 사용했다. http://scikit-learn.org/stable/modules/generated/sklearn.linear_model.LogisticRegression.html –
흠'logit_model = LogisticRegression (random_state = 0)'으로 재실행하면 출력은 동일하지만 LogisticRegression (fit_intercept = True, C = 1e9, tol = 1e-15, solver = 'newton-cg', random_state = 0)을 실행하면 LogisticRegression() 그것도 동일합니다 –
그럴 경우 newton-cg를 더 이상 사용하지 않습니다. – Grr