Guest User

Untitled

a guest
Jul 18th, 2018
98
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.43 KB | None | 0 0
  1. def string_parser(s):
  2. if len(re.findall(r":leaf=", s)) == 0:
  3. out = re.findall(r"[\w.-]+", s)
  4. tabs = re.findall(r"[\t]+", s)
  5. if (out[4] == out[8]):
  6. missing_value_handling = (" or np.isnan(x['" + out[1] + "']) ")
  7. else:
  8. missing_value_handling = ""
  9.  
  10. if len(tabs) > 0:
  11. return (re.findall(r"[\t]+", s)[0].replace('\t', ' ') +
  12. ' if state == ' + out[0] + ':\n' +
  13. re.findall(r"[\t]+", s)[0].replace('\t', ' ') +
  14. ' state = (' + out[4] +
  15. ' if ' + "x['" + out[1] +"']<" + out[2] + missing_value_handling +
  16. ' else ' + out[6] + ')\n' )
  17.  
  18. else:
  19. return (' if state == ' + out[0] + ':\n' +
  20. ' state = (' + out[4] +
  21. ' if ' + "x['" + out[1] +"']<" + out[2] + missing_value_handling +
  22. ' else ' + out[6] + ')\n' )
  23. else:
  24. out = re.findall(r"[\d.-]+", s)
  25. return (re.findall(r"[\t]+", s)[0].replace('\t', ' ') +
  26. ' if state == ' + out[0] + ':\n ' +
  27. re.findall(r"[\t]+", s)[0].replace('\t', ' ') +
  28. ' return ' + out[1] + '\n')
  29.  
  30. def tree_parser(tree, i):
  31. if i == 0:
  32. return (' if num_booster == 0:\n state = 0\n'
  33. + "".join([string_parser(tree.split('\n')[i])
  34. for i in range(len(tree.split('\n'))-1)]))
  35. else:
  36. return (' elif num_booster == '+str(i)+':\n state = 0\n'
  37. + "".join([string_parser(tree.split('\n')[i])
  38. for i in range(len(tree.split('\n'))-1)]))
  39.  
  40. def model_to_py(base_score, model, out_file):
  41. trees = model.get_dump()
  42. result = ["import numpy as np\n\n"
  43. +"def xgb_tree(x, num_booster):\n"]
  44.  
  45. for i in range(len(trees)):
  46. result.append(tree_parser(trees[i], i))
  47.  
  48. with open(out_file, 'a') as the_file:
  49. the_file.write("".join(result) + "\ndef xgb_predict(x):\n predict = "
  50. + str(base_score) + "\n"
  51. + "# initialize prediction with base score\n"
  52. + " for i in range("
  53. + str(len(trees))
  54. + "):\n predict = predict + xgb_tree(x, i)"
  55. + "\n return predict")
Add Comment
Please, Sign In to add comment