Why did model.get_feature_importance() got zero?
port_analysis_config = {
"executor": {
"class": "SimulatorExecutor",
"module_path": "qlib.backtest.executor",
"kwargs": {
"time_per_step": "1min",
"generate_portfolio_metrics": True,
},
},
"strategy": {
"class": "TopkDropoutStrategy",
"module_path": "qlib.contrib.strategy.signal_strategy",
"kwargs": {
"model": model,
"dataset": dataset,
"topk": 50,
"n_drop": 5,
},
},
"backtest": {
"start_time": "2020-09-14",
"end_time": "2020-09-15",
"account": 1000,
"benchmark": benchmark,
"exchange_kwargs": {
"freq": "1min",
"limit_threshold": 0.095,
"deal_price": "close",
"open_cost": 0.0005,
"close_cost": 0.0015,
"min_cost": 5,
},
},
}
# backtest and analysis
with R.start(experiment_name="backtest_analysis"):
recorder = R.get_recorder(recorder_id=rid, experiment_name="train_model")
model = recorder.load_object("trained_model")
# prediction
recorder = R.get_recorder()
ba_rid = recorder.id
sr = SignalRecord(model, dataset, recorder)
sr.generate()
# backtest & analysis
par = PortAnaRecord(recorder, port_analysis_config, "1min")
par.generate()
import csv
feature_importance = model.get_feature_importance()
fea_expr, fea_name = dataset.handler.get_feature_config()
feature_importance = {fea_name[int(i.split("_")[1])]: v for i,v in feature_importance.items()}
with open('C:\\feature.csv', 'w', newline='') as f:
writer = csv.DictWriter(f, fieldnames=feature_importance.keys())
writer.writeheader()
writer.writerow(feature_importance)
the content of feature.csv :
KMID,CNTD5,CNTP30,CNTP60,CNTN5,CNTN10,CNTN20,CNTN30,CNTN60,CNTD10,CNTP10,CNTD20,CNTD30,CNTD60,SUMP5,SUMP10,SUMP20,SUMP30,CNTP20,CNTP5,SUMN5,CORR5,IMIN30,IMIN60,IMXD5,IMXD10,IMXD20,IMXD30,IMXD60,CORR10,CORD60,CORR20,CORR30,CORR60,CORD5,CORD10,CORD20,CORD30,SUMP60,SUMN10,KLEN,VSUMN5,WVMA30,WVMA60,VSUMP5,VSUMP10,VSUMP20,VSUMP30,VSUMP60,VSUMN10,WVMA10,VSUMN20,VSUMN30,VSUMN60,VSUMD5,VSUMD10,VSUMD20,VSUMD30,WVMA20,WVMA5,SUMN20,VMA5,SUMN30,SUMN60,SUMD5,SUMD10,SUMD20,SUMD30,SUMD60,VMA10,VSTD60,VMA20,VMA30,VMA60,VSTD5,VSTD10,VSTD20,VSTD30,IMIN20,IMIN10,IMIN5,BETA10,MA60,STD5,STD10,STD20,STD30,STD60,BETA5,BETA20,MA20,BETA30,BETA60,RSQR5,RSQR10,RSQR20,RSQR30,RSQR60,MA30,MA10,IMAX60,OPEN0,KMID2,KUP,KUP2,KLOW,KLOW2,KSFT,KSFT2,HIGH0,MA5,LOW0,VWAP0,ROC5,ROC10,ROC20,ROC30,ROC60,RESI5,RESI10,RESI20,RSV5,QTLD30,QTLD60,RANK5,RANK10,RANK20,RANK30,RANK60,RSV10,RESI30,RSV20,RSV30,RSV60,IMAX5,IMAX10,IMAX20,IMAX30,QTLD20,QTLD10,QTLD5,QTLU60,RESI60,MAX5,MAX10,MAX20,MAX30,MAX60,MIN5,MIN10,MIN20,MIN30,MIN60,QTLU5,QTLU10,QTLU20,QTLU30,VSUMD60 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
Why it all was zero?