-
Notifications
You must be signed in to change notification settings - Fork 9
/
Copy pathgsp_seq.py
55 lines (46 loc) · 2.03 KB
/
gsp_seq.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
#!/usr/bin/env python
# _*_ coding:utf-8 _*_
'''=================================
@Author :tix_hjq
@Date :2020/6/27 下午3:29
@File :gsp_seq.py
@email :hjq1922451756@gmail.com or 1922451756@qq.com
================================='''
from kon.model.ctr_model.model.models import *
warnings.filterwarnings("ignore")
pd.set_option('display.max_columns', None)
pd.set_option('display.max_rows', None)
pd.set_option('max_colwidth', 100)
print(os.getcwd())
#----------------------------------------------------
data_folder = '../../data/'
origin_data_folder = data_folder + 'origin_data/'
submit_data_folder = data_folder + 'submit_data/'
eda_data_folder = data_folder + 'eda_data/'
fea_data_folder = data_folder + 'fea_data/'
#-----------------------------------------------------------------
model_tool = base_model(submit_data_folder)
fea_tool = feature_tool(fea_data_folder)
data_pre=data_prepare()
#-----------------------------------------------------------------
trainDf=pd.read_csv(origin_data_folder+'gsp_train.csv')
testDf=pd.read_csv(origin_data_folder+'gsp_test.csv')
sparse_fea=['userid','target_item','pos_ts']
seq_fea=['item_seq','gsp_seq']
target_fea=['target']
df,(train_idx,test_idx)=data_pre.concat_test_train(trainDf,testDf)
seqDf=df[seq_fea]
sparseDf=df[sparse_fea]
targetDf=df[target_fea]
print(targetDf['target'].value_counts())
seqDf,seqIdx,seqInfo=data_pre.seq_deal(
seqDf,max_len=[90]*2,embedding_dim=[8]*2,mask_zero=True,is_trainable=True,is_str_list=False,is_str=True,
pre_weight=None,sample_num=5)
sparseDf,sparseInfo=data_pre.sparse_fea_deal(sparseDf)
train,val=data_pre.extract_train_test(
targetDf=targetDf,test_idx=test_idx,train_idx=train_idx,sparseDf=sparseDf,seqDf=seqDf)
behaviorFea=['item_seq','gsp_seq']
model=BST(data_pre.FeatureInput(sparseInfo=sparseInfo,seqInfo=seqInfo),behaviorFea=behaviorFea)
print(model.summary())
model.compile(loss="mean_squared_error",optimizer='adam',metrics=['accuracy'])
model.fit(train,validation_data=val,epochs=100,callbacks=[tf.keras.callbacks.EarlyStopping(patience=10,verbose=5)])