2016-11-21 4 views
0

내가이 분야에서 새로운 오전 숙제이 경우 https://github.com/auduno/Kaggle-Acquire-Valued-Shoppers-Challenge/blob/master/generate_submission.py이 케이스는 위의 예측을 어떻게 혼합하고 모든 열차 데이터를 두 부분으로 나누는가?

을 수행하는 몇 가지 코드를 읽으려고, 프로그래머는 두 부분으로 전체 훈련 데이터를 분할하고 오직 훈련과 다른 부분을 예측 한 부분을 사용합니다. 나는 이것에 대해 시험 부분과 함께 혼란스러워한다.

test_data = pd.io.parsers.read_csv("./features/test/all_features.csv", sep=" ") 
train_data = pd.io.parsers.read_csv("./features/train/all_features.csv", sep=" ") 

split = ShuffleSplit(train_data.shape[0], n_iter = 1, test_size=0.10) 
for tr, te in split: 
    train1, train2 = tr, te 

또한 블렌드 부분에서 모든 예측 데이터를 함께 처리하는 과정을 이해할 수 없습니다. pred_trainpred_test은 모두 예측 된 데이터이지만 다시 훈련하는 데 사용합니까? 그것에 대해 설명해 주시겠습니까? 고마워.

############### BLEND 


dtrain2 = xgb.DMatrix(pred_train, label=train2_label.values) 
dtest = xgb.DMatrix(pred_test) 

print "training blend : xgb trees booster logistic regression, max depth 2" 
param = {'bst:max_depth':2, 'bst:eta':0.1, 'silent':1, 'objective':'binary:logistic', 'nthread' : 8, 'eval_metric':'auc' } 
num_round = 50 
bst = xgb.train(param, dtrain2, num_round) 

pred_label_test = bst.predict(dtest) 

print "training blend : xgb linear booster logistic regression" 
param = {'booster_type':1, 'bst:lambda':0, 'bst:alpha':0, 'bst:lambda_bias':0, 'silent':1, 'objective':'binary:logistic', 'nthread' : 8, 'eval_metric':'auc' } 
num_round = 25 
bst = xgb.train(param, dtrain2, num_round) 

pred_label = bst.predict(dtest)  

mean_pred = (pred_label + pred_label_test)/2. 

predictions[r] = mean_pred 
+0

강사에게 왜 묻지 않으시겠습니까? 이것은 실제로 스택 오버 플로우 –

+0

에 대한 주제가 아닙니다. 그러면 더 관련성이 있습니까? – fourth

답변

0

기계 학습에서 공통적 인 문제는 오버 피팅입니다. 트레이닝에 사용하는 것과 동일한 세트로 분류 품질을 확인하면 알고리즘은 특정 세트에 대해 학습하는 경향이 있습니다. 그들은 그 세트에 대해서만 특정한 특징을 배웁니다. 따라서 일반적인 연습은 훈련에 사용 된 집합과 해당 분류가 올바른지 확인하는 데 사용되는 집합으로 데이터를 나누는 것입니다.

코드의 일부는 두 가지 다른 기계 학습 알고리즘을 사용하고 그 결과를 평균값으로 혼합합니다. 그런 식으로 저자는 회귀 오류를 최소화하려고합니다. 다른 알고리즘이 다른 실수를 저 지르려는 소망입니다.

+0

키 기능을 수행하는 라인이 더 구체적 일 수 있습니까? train2에서 예측 된 라벨이 사라지고 어디에서 확인할 것입니까? – fourth

+0

코드는 아주 자명합니다. 영어 텍스트처럼 읽으십시오. 'bst = xgb.train (param, dtrain2, num_round)'는'param'을 훈련 매개 변수로 사용하고'strain2'를 훈련 집합으로 사용하여 모델을 훈련시킵니다. 모델은'bst'에 저장됩니다. 'pred_label_test = bst.predict (dtest)'는'stest'에 대한 출력값을 예측하고 결과를'pred_label_test'에 저장합니다. 변수 이름'pred_label_test'와'pred_label'은 실제로 저장되는 것을 나타내지 않기 때문에 좋은 선택이 아닙니다. 그리고 그것은 당신을 혼란스럽게합니다. –