rov_train_paddle.py 2.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879
  1. import pandas as pd
  2. import numpy as np
  3. import _pickle as cPickle
  4. from paddle.io import Dataset
  5. from paddle import paddle
  6. class RovDataset(Dataset):
  7. def __init__(self, path):
  8. super(RovDataset, self).__init__()
  9. self.path = path
  10. def _parse_dataset(self):
  11. self.data = []
  12. self.labels = []
  13. with open(self.path, "rb") as input_file:
  14. df = cPickle.load(input_file)
  15. y = df['futre7dayreturn']
  16. df_vids = df['videoid']
  17. x = df.drop(['videoid', 'videotags', 'words_without_tags', 'dt'], axis=1)
  18. x = x.drop(['futre7dayreturn'], axis=1)
  19. features = list(x)
  20. drop_features = [f for f in features if (f.find('day30')!=-1 or f.find('day60')!=-1)]
  21. x = x.drop(drop_features, axis=1)
  22. x = x.apply(lambda x: (x - np.min())/ (np.max(x) - np.min(x)))
  23. #features = [f for f in features if f not in drop_features]
  24. self.data = x
  25. self.labels = y
  26. #return x, y , df_vids, features
  27. def __getitem__(self, idx):
  28. data, label = self.data.iloc[idx], self.labels.iloc[idx]
  29. return data.astype('float21'), label.astype('float32')
  30. def __len__(self):
  31. return len(self.labels)
  32. def train():
  33. feature_dim = 0
  34. result_dim = 1
  35. batch_size = 100
  36. train_dataset = RovDataset("train_data.pickle")
  37. test_dataset = RovDataset("predict_data.pickle")
  38. linear=paddle.nn.Sequential(
  39. paddle.nn.Linear(feature_dim, 4096),
  40. paddle.nn.ReLU(),
  41. paddle.nn.Linear(4096, 1024),
  42. paddle.nn.ReLU(),
  43. paddle.nn.Dropout(0.2),
  44. paddle.nn.Linear(1024,19),
  45. paddle.nn.ReLU(),
  46. paddle.nn.Linear(19,1)
  47. )
  48. model=paddle.Model(linear)
  49. model.prepare(paddle.optimizer.Adam(learning_rate=0.001, parameters=model.parameters()),
  50. paddle.nn.MSELoss())
  51. model.fit(train_dataset, epochs=3, batch_size=batch_size, verbose=1)
  52. model.evaluate(test_dataset,batch_size=batch_size,verbose=1)
  53. def pack_result(y_, y, vid, fp):
  54. #y_ = y_.astype(int)
  55. y_.reshape(len(y_),1)
  56. df = pd.DataFrame(data=y_, columns=['score'])
  57. if len(vid) >0:
  58. df['vid'] = vid
  59. df['y'] = y
  60. df = df.sort_values(by=['score'], ascending=False)
  61. df.to_csv(fp, index=False)
  62. if __name__ == '__main__':
  63. #train
  64. pass