完善一些内容

#################开始训练模型###########################

train_data = df4.loc[(df1['rownum_W']>=sst) & (df1['rownum_W']<=101)]

train_data = train_data.fillna(0)

#处理以下target的字段类型,不然后面有问题
train_data['target'] = train_data['target'].astype('int')
data_huice['target'] = data_huice['target'].astype('int')#today,因为是今天,所以无target
print('训练集数据量:',len(train_data))
print('回测数据量:',len(data_huice))
print('预测日数据量:',len(data_today))

#测试与验证集的产生
X = train_data.drop(['ts_code','date','rownum_W','target','week', 'year'],axis=1)
y = train_data['target']
#平衡负样本
zongliang = len(train_data)#总样本数
zhen_1 = train_data['target'].sum()#正样本数
zheng_ratio = zhen_1/zongliang#正样本比例
# from imblearn.over_sampling import RandomOverSampler
# SMT = RandomOverSampler(sampling_strategy=0.3)#一直用的0.3,看看0.35和0.25怎么样,还是0.3比较好
# X,y = SMT.fit_resample(X,y)
zongliang_2 =  len(y)#调整后总样本数
zheng_2 = pd.DataFrame(y)['target'].sum()#调整后正样本数
print('正样本数量',zhen_1)
print('正样本比例',zheng_ratio)
print('调整后正样本数量',zheng_2)

#根据经验,增加必须的变量
que_var = ['l21_c_xielv_D', 'zhenfu_D', 'hengcha_4xian_D', 'shiti_up_len_D', 'lisan_v_D', 'shiti_low_len_D', 'shiti_low_len', 'shiti_len_D', 'lisan_v', 'hengcha_4xian_xielv', 'tiaokong_down_count_D', 'l21_c_xielv', 'lisan_zhenfu', 'c_c10', 'shiti_low', 'shiti_low_D', 'shiti_up_D', 'shizi_panzheng_1_D', 'OBV_D', 'OBV', 'lisan_zhangfu', 'd21_0_count', 'lisan_zhenfu_D', 'shiti_l_D', 'volume', 'RSI', 'hengcha_4xian_xielv_D', 'shiti_up_len', 'zhenfu', 'lisan_zhangfu_D', 'd21_0_count_D', 'c_c5', 'shiti_up', 'shiti_l', 'OBV_xielv_D', 'OBV_xielv', 'shiti_len', 'v5xielv_D', 'h21_c_xielv', 'c_c21', 'hengcha_4xian', 'h21_c_xielv_D', 'c_tst', 'v5xielv', 'ma21xielv', 'SAR_xielv_D', 'pan_nei_14count', 'zhang_max89', 'ma5xielv_D', 'SAR_xielv', 'ma89xielv_D', 'ma10xielv_D', 'ma89xielv', 'ma21xielv_D', 'SAR', 'SAR_D', 'macd_xielv_D', 'ma5xielv', 'tsf_89', 'ma10xielv', 'macd_xielv', 'K_bianxian_flag_D', 'K_star_flag_D', 'duotou_count', 'pz_2', 'pb_2', 'tiaokong_down_count', 'duotou_count_y', 'tiaokong_up_count_D', 'qiang_hui_D', 'close_2', 'pct_chg_cate', 'K_shizi_l_up_D', 'K_xiao_star_flag_D', 'duotou_count_x', 'shiti_weizhi', 'duotou_count_D', 'tiaokong_up_count', 'K_Yin_cate', 'K_Yang_cate', 'xie_l_up', 'xie_v_up']

zeng_var = [ 'KZ_baozha', 'KZ_erzhichan', 'K_shizi_l_low_D', 'K_shizi_lu_low_D', 'shizi_panzheng_D', 'shizi_panzheng_1_D', 'qiang_hui_D', 'K_Tandi_D', 'K_Dyin_D', 'pansheng_flag', 'pandie_flag', 'shizi_panzheng']
var1 = que_var + zeng_var
var_ok = list(set(var1))#因为set不能有重复,所以这步就是去重
#print(var_ok)

#特征筛选后,开始模型训练,训练集
X = X[var_ok]

from sklearn.model_selection import train_test_split


X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3,random_state=1)#分测试集和训练集
# 在训练集上训练LightGBM模型

#lightgbm
import sklearn
from lightgbm.sklearn import LGBMClassifier                                                                          
from sklearn.tree import DecisionTreeClassifier
#定义 LightGBM 模型 
clf = LGBMClassifier(num_leaves=60,max_depth=7,n_estimators=1300,learning_rate=0.03,bagging_fraction=0.7,bagging_freq=10,max_bin=150,min_data_in_leaf=30,feature_fraction=0.7,random_state=1)

clf = clf.fit(X_train, y_train)
y_pred = pd.DataFrame(clf.predict(X_train))
y_true = y_train
y_pred1 = pd.DataFrame(clf.predict(X_test))
y_true1 = y_test
print('lgm')
print(sklearn.metrics.confusion_matrix(y_true, y_pred))
print(sklearn.metrics.confusion_matrix(y_true1, y_pred1))

然后跨期,预测今天等

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值