2017-12-27 3642 views
0

我聲明一個CD文件讀取它:如何創建列描述(CD)文件Catboost

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。嘗試更正列描述文件。

這裏是全功能=數據幀()

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?爲什麼它被聲明爲數字(而不是分類)功能?

回答

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]