0

の使い方を学んでxgboostいて、ドキュメントを読みました! ただし、スクリプトの出力が0~~2. 最初は、分類であるため、0または1のいずれかになるはずだと思っていましたが、binary0または1の確率であると読みましたが、一部の出力は1.5+(少なくともCSVでは)意味がありません私に!

問題がxgboostパラメーターにあるのか、csv の作成にあるのかわかりません。この行、np.expm1(preds)、それが であるべきかnp.expm1どうかはわかりませんが、何を変更できるのかわかりません!

結論として、私の質問は次のとおりです。

出力が 0 または 1 ではなく、代わりに 0.0xxx および 1.xxx になるのはなぜですか?

これが私のスクリプトです:

import numpy as np
import xgboost as xgb
import pandas as pd

train = pd.read_csv('../dataset/train.csv')
train = train.drop('ID', axis=1)

y = train['TARGET']

train = train.drop('TARGET', axis=1)
x = train

dtrain = xgb.DMatrix(x.as_matrix(), label=y.tolist())

test = pd.read_csv('../dataset/test.csv')

test = test.drop('ID', axis=1)
dtest = xgb.DMatrix(test.as_matrix())


# XGBoost params:
def get_params():
    #
    params = {}
    params["objective"] = "binary:logistic"
    params["booster"] = "gbtree"
    params["eval_metric"] = "auc"
    params["eta"] = 0.3  #
    params["subsample"] = 0.50
    params["colsample_bytree"] = 1.0
    params["max_depth"] = 20
    params["nthread"] = 4
    plst = list(params.items())
    #
    return plst


bst = xgb.train(get_params(), dtrain, 1000)

preds = bst.predict(dtest)

print np.max(preds)
print np.min(preds)
print np.average(preds)

# Make Submission
test_aux = pd.read_csv('../dataset/test.csv')
result = pd.DataFrame({"Id": test_aux["ID"], 'TARGET': np.expm1(preds)})

result.to_csv("xgboost_submission.csv", index=False)
4

2 に答える 2