如何为Catboost创建列描述(CD)文件

问题描述 投票:0回答:2

我正在声明一个CD文件,用于从以下位置读取它:

pool = Pool(features_file, CDfile)

其中CDfile包含文本和<\ t>分隔符:

0   Target
1   Categ   cat_reg
97  Categ   cat_dow
98  Categ   cat_nweek
99  Categ   cat_month
100 Categ   cat_hour
101 Categ   cat_is_month_start
102 Categ   cat_is_year_end
103 Categ   cat_is_year_start
104 Categ   cat_anomaly2016

我有这样的结果:第102列和第1行的因子False被声明为数字,不能解析为float。尝试更正列描述文件。

这是整个功能的切片= DataFrame()

len(cat_features),len(features.columns)9 105

   cat_columns            cat_positions values
    cat_reg                         1   1075
    cat_dow                        97      5
    cat_nweek                      98     17
    cat_month                      99      4
    cat_hour                      100      1
    cat_is_month_start            101  False
    cat_is_year_end               102  False
    cat_is_year_start             103  False
    cat_anomaly2016               104      0

第102列有什么问题?为什么它被声明为数字(非绝对)功能?

python pool catboost
2个回答
0
投票

这个包是CD文件中的冗余不可打印的字符。我没有抓到哪一个。这是生成CD文件的代码。

def catboostCD(fname, cat_features, cat_features_names, sep='\t' ):
    with open(fname,"w") as fout:
        fout.write('0{0}Target'.format(sep))
        fout.write(''.join(['\n{0}{1}Categ{1}{2}'.format(el[0], sep, el[1]) for el in zip(cat_features, cat_features_names)]))

哪里

cat_features = np.ravel( np.where( np.char.startswith(list(features.columns), prefix='cat_') ) )
cat_features_names = features.columns.values[ cat_features]

0
投票

CatBoost Python库有一个create_cd()方法(https://catboost.ai/docs/concepts/python-reference_utils_create_cd.html

以下是如何使用它来创建具有不同类型列的文件的示例:

from catboost.utils import create_cd
feature_names = {
    4: 'Categ1',
    5: 'Categ2',
    12: 'Num1'
}

create_cd(
    label=0,
    cat_features=(4, 5, 6),
    weight=1,
    baseline=2,
    doc_id=3,
    group_id=7,
    subgroup_id=8,
    timestamp=9,
    auxiliary_columns=(10, 11),
    feature_names=feature_names,
    output_path='train.cd'
)
© www.soinside.com 2019 - 2024. All rights reserved.