Advertisement
Guest User

Untitled

a guest
Jun 19th, 2019
92
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 6.19 KB | None | 0 0
  1. import json
  2. import tensorflow as tf
  3. import numpy as np
  4. import matplotlib.pyplot as plt
  5.  
  6. def json_data():
  7. with open('assdata13.json') as f:
  8. data = json.load(f)
  9.  
  10. return data
  11.  
  12.  
  13. def build_features(json_data):
  14. n = len(json_data)
  15. print("dataset size " + str(n))
  16. Xs = np.zeros((n, 45))
  17. Ys = np.zeros((n, 1))
  18.  
  19. log_idx = 0
  20.  
  21. for log in json_data:
  22. log = log['_source']
  23. XsCur = Xs[log_idx]
  24.  
  25. XsCur[0] = 0
  26.  
  27. XsCur[1] = log['userBS']['level']
  28. XsCur[2] = log['userBS']['str']
  29. XsCur[3] = log['userBS']['dex']
  30. XsCur[4] = log['userBS']['int']
  31. XsCur[5] = log['userBS']['luk']
  32. XsCur[6] = log['userBS']['maxHP']
  33. XsCur[7] = log['userBS']['maxMP']
  34.  
  35. XsCur[8] = log['userFS']['str']
  36. XsCur[9] = log['userFS']['dex']
  37. XsCur[10] = log['userFS']['int']
  38. XsCur[11] = log['userFS']['luk']
  39. XsCur[12] = log['userFS']['pAD']
  40. XsCur[13] = log['userFS']['pDD']
  41. XsCur[14] = log['userFS']['mAD']
  42. XsCur[15] = log['userFS']['mDD']
  43. XsCur[16] = log['userFS']['acc']
  44. XsCur[17] = log['userFS']['eva']
  45. XsCur[18] = log['userFS']['speed']
  46. XsCur[19] = log['userFS']['jump']
  47.  
  48. XsCur[20] = log['userSS']['pAD']
  49. XsCur[21] = log['userSS']['pDD']
  50. XsCur[22] = log['userSS']['mAD']
  51. XsCur[23] = log['userSS']['mDD']
  52. XsCur[24] = log['userSS']['acc']
  53. XsCur[25] = log['userSS']['eva']
  54. XsCur[26] = log['userSS']['speed']
  55. XsCur[27] = log['userSS']['jump']
  56. XsCur[28] = log['userSS']['defenseAtt']
  57. XsCur[29] = log['userSS']['defenseState']
  58.  
  59. XsCur[30] = float(log['rand32Output'][0] % 10000000 * 0.000000100000010000001)
  60. XsCur[31] = float(log['rand32Output'][1] % 10000000 * 0.000000100000010000001)
  61. XsCur[32] = float(log['rand32Output'][2] % 10000000 * 0.000000100000010000001)
  62. XsCur[33] = float(log['rand32Output'][3] % 10000000 * 0.000000100000010000001)
  63. XsCur[34] = float(log['rand32Output'][4] % 10000000 * 0.000000100000010000001)
  64. XsCur[35] = float(log['rand32Output'][5] % 10000000 * 0.000000100000010000001)
  65. XsCur[36] = float(log['rand32Output'][6] % 10000000 * 0.000000100000010000001)
  66.  
  67. #action = log['userActionData']
  68. #for i in range(0, 186):
  69. #idx = 30 + i
  70. #if i == action:
  71. #XsCur[idx] = 1
  72. #else:
  73. #XsCur[idx] = 0
  74.  
  75. XsCur[37] = log['enemyStat']['level']
  76. XsCur[38] = log['enemyStat']['pAD']
  77. XsCur[39] = log['enemyStat']['pDD']
  78. XsCur[40] = log['enemyStat']['mAD']
  79. XsCur[41] = log['enemyStat']['mDD']
  80. XsCur[42] = log['enemyStat']['acc']
  81. XsCur[43] = log['enemyStat']['eva']
  82. XsCur[44] = log['enemyStat']['speed']
  83.  
  84. Ys[log_idx][0] = log['damage']
  85.  
  86. log_idx += 1
  87.  
  88. assert Xs.shape[0] == Ys.shape[0]
  89.  
  90. return Xs, Ys
  91.  
  92.  
  93. def run_model(Xs, Ys):
  94. #sess = tf.Session(config=tf.ConfigProto(log_device_placement=True))
  95.  
  96. # model = tf.keras.models.Sequential([
  97. # tf.keras.layers.Dense(28, activation='relu', kernel_regularizer=tf.keras.regularizers.l2(0.00233)),
  98. # #tf.keras.layers.Dense(14, activation='relu', kernel_regularizer=tf.keras.regularizers.l2(0.00353)),
  99. # tf.keras.layers.Dense(1)
  100. # ])
  101.  
  102. model = tf.keras.models.Sequential([
  103. tf.keras.layers.Dense(45, activation='relu', kernel_regularizer=tf.keras.regularizers.l2(0.000233)),
  104. tf.keras.layers.Dense(30, activation='relu', kernel_regularizer=tf.keras.regularizers.l2(0.000233)),
  105. tf.keras.layers.Dense(1)
  106. ])
  107.  
  108. # model = tf.keras.models.Sequential([
  109. # tf.keras.layers.Dense(1220, activation='relu', kernel_regularizer=tf.keras.regularizers.l2(0.001)),
  110. # tf.keras.layers.Dropout(0.05),
  111. # tf.keras.layers.Dense(510, activation='relu', kernel_regularizer=tf.keras.regularizers.l2(0.001)),
  112. # tf.keras.layers.Dropout(0.05),
  113. # tf.keras.layers.Dense(150, activation='relu', kernel_regularizer=tf.keras.regularizers.l2(0.001)),
  114. # tf.keras.layers.Dense(1)
  115. # ])
  116.  
  117. model.compile(optimizer='adam',
  118. loss='mean_squared_error',
  119. metrics=['mse', 'mae', 'mape'])
  120.  
  121. p = np.random.permutation(len(Xs))
  122. Xs = Xs[p]
  123. Ys = Ys[p]
  124. split = 800
  125.  
  126. model.fit(Xs[:split], Ys[:split], epochs=28000, batch_size=16,
  127. callbacks=[tf.keras.callbacks.EarlyStopping(monitor='mse', patience=800,
  128. restore_best_weights=True)])
  129. model.evaluate(Xs[split:], Ys[split:])
  130.  
  131. plt.figure(1)
  132. test_predictions = model.predict(Xs[split:]).flatten()
  133. plt.scatter(Ys[split:], test_predictions)
  134. plt.xlabel('True Values')
  135. plt.ylabel('Predictions, NN 1 Test')
  136. plt.axis('equal')
  137. plt.axis('square')
  138. plt.xlim([0, plt.xlim()[1]])
  139. plt.ylim([0, plt.ylim()[1]])
  140. _ = plt.plot([-500, 500], [-500, 500])
  141. plt.show()
  142.  
  143. model = tf.keras.models.Sequential([
  144. tf.keras.layers.Dense(45, activation='relu', kernel_regularizer=tf.keras.regularizers.l2(0.000233)),
  145. #tf.keras.layers.Dense(14, activation='relu', kernel_regularizer=tf.keras.regularizers.l2(0.00353)),
  146. tf.keras.layers.Dense(1)
  147. ])
  148.  
  149. model.compile(optimizer='adam',
  150. loss='mean_squared_error',
  151. metrics=['mse', 'mae', 'mape'])
  152.  
  153. model.fit(Xs[:split], Ys[:split], epochs=28000, batch_size=32,
  154. callbacks=[tf.keras.callbacks.EarlyStopping(monitor='mse', patience=400,
  155. restore_best_weights=True)])
  156. model.evaluate(Xs[split:], Ys[split:])
  157.  
  158. plt.figure(2)
  159. test_predictions = model.predict(Xs[split:]).flatten()
  160. plt.scatter(Ys[split:], test_predictions)
  161. plt.xlabel('True Values')
  162. plt.ylabel('Predictions, NN 2 Test')
  163. plt.axis('equal')
  164. plt.axis('square')
  165. plt.xlim([0, plt.xlim()[1]])
  166. plt.ylim([0, plt.ylim()[1]])
  167. _ = plt.plot([-500, 500], [-500, 500])
  168. plt.show()
  169.  
  170.  
  171. X, Y = build_features(json_data())
  172. run_model(X, Y)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement