반응형
Python (in flask)
from flask import Flask
from flask_jsonpify import jsonpify
import json
from functools import wraps
from flask import redirect, request, current_app
from sklearn.ensemble import RandomForestRegressor
import pandas as pd
app = Flask(__name__)
@app.route('/', methods=['GET'])
def test():
train = pd.read_csv("./train.csv")
train["datetime"] = train["datetime"].astype("datetime64")
train.dtypes
train["hour"] = train["datetime"].dt.hour
train["year"] = train["datetime"].dt.year
y = train["count"]
train = train.drop(["casual","registered","count","datetime"], 1)
test = pd.read_csv("./test.csv")
test["datetime"] = test["datetime"].astype("datetime64")
test["hour"] = test["datetime"].dt.hour
test["year"] = test["datetime"].dt.year
test = test.drop("datetime",1)
sub = pd.read_csv("./sampleSubmission.csv")
rf = RandomForestRegressor()
rf.fit(train,y)
p = rf.predict(test)
sub["count"] = p
return jsonpify(sub.head(1).to_json())
머신러닝 돌려서 결과 중 head 1번째 것만 return 시켰다.
결과
Spring (JS)
$(function(){
$("#btn").click(function(){
$.ajax({
type: "GET",
dataType: "jsonp",
url: "http://localhost:5000/",
success: function (data) {
var form = JSON.parse(data);
var count = form.count;
var print = JSON.stringify(count["0"]);
console.log('data는'+print);
}
});
});
});
ajax를 통해 받았는데 , data 그대로 출력은 잘 되는데, count에 접근을 할 수 가 없었다.
그 이유는 data가 전달받은 값을 string 취급 해 버렸기 때문..
따라서 data를 JSON으로 변형 시킨다. JSON.parse 하면 JSON 포맷인 String은 JSON으로 변형됨.
json parse 시켜서 count에 접근 한뒤 값을 빼옴.
근데 key값이 현재 숫자이므로 . 으로 접근 불가
따라서 count["0"] 과 같은 방식으로 접근해서 값을 빼옴.
도출된 값은 다시 JSON.stringify 로 String 변형 시켜서 출력.
ajax에서 REST Controller로 전송 할 때는 data를 특히 객체와 같은 경우 JSON 포맷이므로
String 변형 시켜서 전송해야 매개변수로 받아 들인다.
반응형
'HealRo Project' 카테고리의 다른 글
RandomForest Regressor 성능 분석 (0) | 2020.01.24 |
---|---|
flask Rest API GET 매개변수 (0) | 2020.01.23 |
csv file eclipse 가져오기 (0) | 2020.01.22 |
Cross Domain 해결 (0) | 2020.01.21 |
flask run (0) | 2020.01.21 |