节点中执行拆分的最小样本数 在多粒度扫描随机森林训练期间。 如果int number_of_samples = int。 如果float,min_samples表示要考虑的初始n_samples的分数。 min_samples_cascade:float或int(default = 0.1) 节点中执行拆分的最小样本数 在级联随机森林训练期间。 如果int number_of_samples = int。 如果float,min_samples表示要考虑的初始n_samples的分数。 cascade_layer:int(default = np.inf) 允许的最大级联级数。 有用的限制级联的结构。 tolerance:float(default= 0.0) 联生长的精度差,整个级联的性能将在验证集上进行估计, 如果没有显着的性能增益,训练过程将终止 n_jobs:int(default = 1) 任意随机森林适合并预测的并行运行的工作数量。 如果为-1,则将作业数设置为核心数。 #shape_1X样本维度,window为多粒度扫描(Multi-Grained Scanning)算法中滑动窗口大小, #用于扫描原始数据,tolerance为级联生长的精度差,整个级联的性能将在验证集上进行估计, #如果没有显着的性能增益,训练过程将终止#gcf = gcForest(shape_1X=4, window=2, tolerance=0.0) #gcf = gcForest(shape_1X=[13,13], window=2, tolerance=0.0) gcf = gcForest(shape_1X= 13, n_mgsRFtree= 100, window= 6, stride= 2, cascade_test_size= 0.2, n_cascadeRF= 4, n_cascadeRFtree= 101, cascade_layer=np.inf, min_samples_mgs= 0.1, min_samples_cascade= 0.1, tolerance= 0.0, n_jobs= 1)gcf.fit(X_tr, y_tr) Slicing Sequence...Training MGS Random Forests...Adding/Training Layer, n_layer=1Layer validation accuracy = 0.5577889447236181Adding/Training Layer, n_layer=2Layer validation accuracy = 0.521608040201005#shape_1X样本维度,window为多粒度扫描(Multi-Grained Scanning)算法中滑动窗口大小, #用于扫描原始数据,tolerance为级联生长的精度差,整个级联的性能将在验证集上进行估计, #如果没有显着的性能增益,训练过程将终止#gcf = gcForest(shape_1X=4, window=2, tolerance=0.0) #gcf = gcForest(shape_1X=[13,13], window=2, tolerance=0.0) gcf = gcForest(shape_1X=[ 1, 13], window=[ 1, 6],)gcf.fit(X_tr, y_tr) Slicing Sequence...Training MGS Random Forests...Slicing Sequence...Training MGS Random Forests...Adding/Training Layer, n_layer=1Layer validation accuracy = 0.5964125560538116Adding/Training Layer, n_layer=2Layer validation accuracy = 0.5695067264573991 参数改为shape_1X=[1,13], window=[1,6]后训练集达到0.59,不理想,这里只是抛砖引玉,调参需要大神指导。 Now checking the prediction for the test set: 现在看看测试集的预测值: pred_X = gcf.predict(X_te)print(len(pred_X))print(len(y_te))print(pred_X) Slicing Sequence...Slicing Sequence...549549[1 1 0 0 0 0 0 0 0 0 1 0 0 0 1 0 1 1 0 1 0 1 0 1 0 0 0 0 0 0 1 1 1 0 0 1 0等 #最近预测 fori inrange( 1,len(pred_X)): print(y_te[-i],pred_X[-i],-i) 0 1 -10 0 -21 0 -31 0 -40 1 -5等# 保存每一天预测的结果,如果某天预测对了,保存1,如果某天预测错了,保存-1 result_list = [] # 检查预测是否成功 defcheckPredict(i):ifpred_X[i] == y_te[i]: result_list.append( 1) else: result_list.append( 0) #画出最近第k+1个长度为j的时间段准确率 k= 0j =len(y_te) #j=100 fori inrange(len(y_te)-j*(k+ 1), len(y_te)-j*k): checkPredict(i) #print(y_pred[i])#return result_list print(len(y_te) ) print(len(result_list) ) importmatplotlib.pyplot asplt #将准确率曲线画出来 x = range( 0, len(result_list))y = [] #z=[] fori inrange( 0, len(result_list)): (责任编辑:本港台直播) |