0

로지스틱 회귀를 사용하여 다양한 sklearn 코드를 작성하여 값을 예측했습니다. 내가 vals의 값을 예측하려는로지스틱 회귀를 사용하여 매개 변수 값 예측

https://gist.github.com/anonymous/563591e0395e8d988277d3ce63d7438f

date hr_of_day vals 
01/05/2014 9 929 
01/05/2014 10 942 
01/05/2014 11 968 
01/05/2014 12 856 
01/05/2014 13 835 
01/05/2014 14 885 
01/05/2014 15 945 
01/05/2014 16 924 
01/05/2014 17 914 
01/05/2014 18 744 
01/05/2014 19 377 
01/05/2014 20 219 
01/05/2014 21 106 

난 그냥

인 분류를 검증하기 위해 훈련 데이터에서 처음 8 개 항목을 선택한 - 같은

교육 데이터 보인다 , 데이터를 테스트 할 때 나는 0으로 입력했습니다. 그 맞습니까?

date hr_of_day vals 
2014-05-01 0 0 
2014-05-01 1 0 
2014-05-01 2 0 
2014-05-01 3 0 
2014-05-01 4 0 
2014-05-01 5 0 
2014-05-01 6 0 
2014-05-01 7 0 

내 모델 코드가 올바르게 작동합니다. 하지만 내 결과는 어둡다. 나는 결과에서 vals의 가치를 기대하고 있었다. 그보다는 모든 요소 값이 0.00030676 인 큰 행렬을 얻고 있습니다.

누군가가 세부 정보를 제공하거나이 결과로 더 잘 게임 할 수 있도록 도와 주시면 감사하겠습니다.

import pandas as pd 
from sklearn import datasets 
from sklearn import metrics 
from sklearn.linear_model import LogisticRegression 
from datetime import datetime, date, timedelta 
Train = pd.read_csv("data_scientist_assignment.tsv", sep='\t', parse_dates=['date']) 
Train['timestamp'] = Train.date.values.astype(pd.np.int64) 
x1=["timestamp", "hr_of_day"] 
test=pd.read_csv("test.tsv", sep='\t', parse_dates=['date']) 
test['timestamp'] = test.date.values.astype(pd.np.int64) 
print(Train.columns) 
print(test.columns) 
model = LogisticRegression() 
model.fit(Train[x1], Train["vals"]) 
print(model) 
print model.score(Train[x1], Train["vals"]) 
print model.predict_proba(test[x1]) 

결과는 다음과 같습니다

In [92]: print(model) 
LogisticRegression(C=1.0, class_weight=None, dual=False, fit_intercept=True, 
      intercept_scaling=1, max_iter=100, multi_class='ovr', n_jobs=1, 
      penalty='l2', random_state=None, solver='liblinear', tol=0.0001, 
      verbose=0, warm_start=False) 

In [93]: print model.score(Train[x1], Train["vals"]) 
0.00520833333333 

In [94]: 

In [94]: print model.predict_proba(test[x1]) 
[[ 0.00030676 0.00030676 0.00030676 ..., 0.00030889 0.00030885 
    0.00030902] 
[ 0.00030676 0.00030676 0.00030676 ..., 0.00030889 0.00030885 
    0.00030902] 
[ 0.00030676 0.00030676 0.00030676 ..., 0.00030889 0.00030885 
    0.00030902] 
..., 
[ 0.00030676 0.00030676 0.00030676 ..., 0.00030889 0.00030885 
    0.00030902] 
[ 0.00030676 0.00030676 0.00030676 ..., 0.00030889 0.00030885 
    0.00030902] 
[ 0.00030676 0.00030676 0.00030676 ..., 0.00030889 0.00030885 
    0.00030902]] 
+0

입니다 너 이해하지 못해? "나는 이해하지 못한다"는 질문을하지 않습니다. – Julien

+0

@JulienBernu : 질문을 편집했습니다. 결과적으로 실제 결과에서'vals'의 값을 예측해야합니다. 그러면 모든 값을'0.00030676'으로 설정 한 큰 행렬을 얻게됩니다 – user123

+1

predict_proba를 사용하고 있습니다. 이것이 예상 확률을 얻는 이유입니다. 대신 model.predict()를 사용해보십시오. –

답변

3
  1. 당신은 predict_proba() 클래스 확률을 제공합니다, 해당의 당신이 예측 사용해야을 사용하는() 기능을 .
  2. 잘못된 모델을 사용하고 있습니다. 데이터의 대상 변수는 연속 데이터이므로 선형 회귀을 사용해야합니다. 로지스틱 회귀은 실제로 분류 자 ​​으로 작동하며 분류 작업에 별도의 데이터가 필요합니다 (고정 된 수의 라벨과 같이). 다음 코드
1

사용을 예측하려면 라벨 :

predicted_labels= model.predict(test[x1]) 
또한

sklearn에 로지스틱 회귀 분석을 이해하기 위해 예를 들어 다음과 같은 시도 :

# Logistic Regression 
from sklearn import datasets 
from sklearn import metrics 
from sklearn.linear_model import LogisticRegression 
# load the iris datasets 
dataset = datasets.load_iris() 
# fit a logistic regression model to the data 
model = LogisticRegression() 
model.fit(dataset.data, dataset.target) 
print(model) 
# make predictions 
expected = dataset.target 
predicted = model.predict(dataset.data) 
# summarize the fit of the model 
print(metrics.classification_report(expected, predicted)) 
print(metrics.confusion_matrix(expected, predicted)) 

예제 소스 : 그것은 무엇 http://machinelearningmastery.com/get-your-hands-dirty-with-scikit-learn-now/

관련 문제