Guest User

Untitled

a guest
Nov 19th, 2017
96
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.43 KB | None | 0 0
  1. from flask import Flask, jsonify, request
  2. from sklearn.linear_model import LogisticRegression
  3.  
  4. ## additional imports
  5. from sklearn.tree import DecisionTreeClassifier
  6. from sklearn.ensemble import AdaBoostClassifier
  7. from sklearn.externals import joblib
  8. from sklearn.datasets import load_iris
  9. import numpy as np
  10.  
  11. import pandas as pd
  12.  
  13. boosted_model = joblib.load('boosted.pkl')
  14.  
  15. app = Flask(__name__)
  16.  
  17. @app.route('/')
  18. def hello_world():
  19. return 'Hello, World!'
  20.  
  21.  
  22. @app.route('/ian')
  23. def ian():
  24.  
  25. from sklearn.datasets import load_iris
  26. import pandas as pd
  27.  
  28. data = load_iris()
  29. df = pd.DataFrame(data['data'], columns=['sepal_len', 'sepal_width', 'petal_lengh', 'petal_width'])
  30. y = data['target']
  31.  
  32. from sklearn.tree import DecisionTreeClassifier
  33. model = DecisionTreeClassifier(criterion='gini', random_state=42)
  34.  
  35. input_sepal_len = request.args.get("sepal_len")
  36. input_sepal_width = request.args.get("sepal_width")
  37. input_petal_lengh = request.args.get("petal_lengh")
  38. input_petal_width = request.args.get("petal_width")
  39.  
  40. if input_sepal_len:
  41. model.fit(df, y)
  42. list_of_data_to_fit = [
  43. float(input_sepal_len),
  44. float(input_sepal_width),
  45. float(input_petal_lengh),
  46. float(input_petal_width)
  47. ]
  48.  
  49. predicted = model.predict(list_of_data_to_fit).tolist()
  50. probabilities = model.predict_proba(list_of_data_to_fit).tolist()
  51.  
  52. result = {
  53. "response": "ok",
  54. "predictions": predicted,
  55. "score": model.score(df, y),
  56. "probabilities": {flower: probabilities[0][index] for index, flower in enumerate(model.classes_.tolist())}
  57. }
  58.  
  59. else:
  60. return "Please pass an input"
  61.  
  62. return jsonify(result)
  63.  
  64.  
  65. @app.route('/boosted')
  66. def boosted():
  67.  
  68. input_sepal_len = request.args.get("sepal_len")
  69. input_sepal_width = request.args.get("sepal_width")
  70. input_petal_lengh = request.args.get("petal_lengh")
  71. input_petal_width = request.args.get("petal_width")
  72.  
  73. if input_sepal_len:
  74.  
  75. list_of_data_to_fit = [
  76. float(input_sepal_len),
  77. float(input_sepal_width),
  78. float(input_petal_lengh),
  79. float(input_petal_width)
  80. ]
  81.  
  82. predicted = boosted_model.predict(list_of_data_to_fit).tolist()
  83. # probabilities = boosted_model.predict_proba(list_of_data_to_fit).tolist()
  84.  
  85. result = {
  86. "response": "ok",
  87. "predictions": predicted,
  88. # "score": boosted.score(df, y),
  89. # "probabilities": {flower: probabilities[0][index] for index, flower in enumerate(boosted.classes_.tolist())}
  90. }
  91.  
  92. else:
  93. return "Please pass an input"
  94.  
  95. return jsonify(result)
  96.  
  97.  
  98.  
  99. @app.route('/predict-iris')
  100. def predict_iris():
  101.  
  102. # Load data
  103. iris = load_iris()
  104.  
  105. # print("Loaded iris", iris)
  106.  
  107. # Fit our model
  108. logreg = LogisticRegression()
  109. model = logreg.fit(iris['data'], iris['target'])
  110. model.predict_proba(iris['data'])
  111.  
  112. # Parameters from GET request
  113. sepal_length = request.args.get("sepal_length")
  114. sepal_width = request.args.get("sepal_width")
  115. petal_length = request.args.get("petal_length")
  116. petal_width = request.args.get("petal_width")
  117.  
  118. # To predict
  119. to_predict = np.array([
  120. float(sepal_length),
  121. float(sepal_width),
  122. float(petal_length),
  123. float(petal_width)
  124. ])
  125.  
  126. print(
  127. "My input parameters are:",
  128. sepal_length, sepal_width,
  129. petal_length, petal_width
  130. )
  131.  
  132. if all([sepal_length, sepal_width, petal_length, petal_width]):
  133. result = {
  134. "message": "OK",
  135. "predict": model.predict(to_predict).tolist(),
  136. "probas": model.predict_proba(to_predict).tolist()
  137. }
  138. else:
  139. result = {
  140. "message": "Please set input!"
  141. }
  142.  
  143. return jsonify(result)
  144.  
  145.  
  146.  
  147. @app.route('/json-test')
  148. def json_test():
  149.  
  150. my_data = [
  151. {"student": "Anthony", "Speed": 23.5, "Power": "over 9000"},
  152. {"student": "Ruairi", "Speed": 23.55, "Power": "over 9000"},
  153. {"student": "Sam", "Speed": 23.2255, "Power": "over 9000"},
  154. {"student": "Evan", "Speed": 23.52553234, "Power": "over 9000"},
  155. ]
  156.  
  157. return jsonify(my_data)
  158.  
  159. @app.route('/predict-student')
  160. def predict_student():
  161.  
  162. print("Something...")
  163.  
  164. my_data = [
  165. {"student": "Anthony", "Speed": 23.5, "Power": "over 9000"},
  166. {"student": "Ruairi", "Speed": 23.55, "Power": "over 9000"},
  167. {"student": "Sam", "Speed": 23.2255, "Power": "over 9000"},
  168. {"student": "Evan", "Speed": 23.52553234, "Power": "over 9000"},
  169. ]
  170.  
  171. df = pd.DataFrame(my_data)
  172.  
  173. logreg = LogisticRegression()
  174. X = df[['Speed']].values
  175. model = logreg.fit(X, df["student"].values)
  176. speed = request.args.get("speed")
  177. ponzi = request.args.get("ponzi")
  178.  
  179. print("Ponzi is: ", ponzi)
  180.  
  181. if speed:
  182. predicted = model.predict([float(speed), "power"]).tolist()
  183. probabilities = model.predict_proba([float(speed)]).tolist()
  184. result = {
  185. "response": "ok",
  186. "predictions": predicted,
  187. "probabilities": {student: probabilities[0][index] for index, student in enumerate(model.classes_.tolist())}
  188. }
  189. else:
  190. result = {"response": "not found", "message": "Please provide a data for our model to predict!"}
  191.  
  192.  
  193.  
  194. return jsonify(result)
  195.  
  196. if __name__ == '__main__':
  197. app.run(host = "0.0.0.0")
Add Comment
Please, Sign In to add comment