학습 데이터가 현저히 적은데, 어떻게 시계열 처리 회귀 모델을 만들 것인가?

하루 단위 유저 시계열 입력 데이터

Date User_Id Sex Age Weight Height BMI Fat Muscle Consumed_Cal Intake_Cal
2022-01-31 12 1 23 77 175
2022-02-22 22 2 33 56 160
2023-07-14 22 2 34 54 159


[예측 파트] FE-BE API 요청 하기

[체형 변화 및 체형 변화 예측]

  1. react.js로 GET을 통해 체형 변화 히스토리를 가져와 보여준다. DB에 하루 단위 사용자의 운동 시계열을 받는다. (BodyHistory 말고, )

IF. 테이블이 만들어졌다고 가정하고, 간단한 스켈레톤 코드 (TS, JAVA는 확인이 필요함…)

import React, { useState } from 'react';
import axios from 'axios';

interface CalculationResponse {
  result: number;
}

const App: React.FC = () => {
  const [result, setResult] = useState<number | null>(null);

  const handleClick = async () => {
    try {
      // 1. FastAPI로 POST 요청을 보내고 결과를 받음
      const response = await axios.post<CalculationResponse>('<http://localhost:8000/calculate>', { some_data: "example" });
      setResult(response.data.result);
    } catch (error) {
      console.error(error);
    }
  };

  return (
    <div>
      <button onClick={handleClick}>Calculate</button>
      {result !== null && <div>Result: {result}</div>}
    </div>
  );
};

export default App;
from fastapi import FastAPI
import requests
from pydantic import BaseModel
# Batch Training Model Load
from machine_learning_model import model

app = FastAPI()

# 요청할 데이터 구조 정의 -> 하루 단위 Table
class DataRequest(BaseModel):
    some_data: str

# FastAPI 엔드포인트
@app.post("/calculate")
def calculate_data(data_request: DataRequest):
    # 2-1. Spring Boot로 DB 데이터를 요청
    spring_boot_url = "<http://localhost:8080/get-data>"
    spring_boot_response = requests.get(spring_boot_url)
    
    # 2-3. 요청 받아온 것 -> 변수에 저장
    data = spring_boot_response.json()
    
    # 3. 받은 데이터를 머신러닝 모델로 처리 (간단히 예시)
    result = model.predict(data)  # 머신러닝 처리 부분
		# 4. result -> json 형태든, 형태를 맞춰서 Spring Boot로 보내기 (model predict를 값만 X, 보내주는 형태에 맞게)

		
    # 5. 결과를 다시 Spring Boot로 저장 요청
    store_url = "<http://localhost:8080/store-result>"
    requests.post(store_url, json={"result": result})

		# react로 result 전송
    return {"result": result}

# 예시로 사용할 머신러닝 모델 함수 (단순한 연산으로 대체 가능)
# def machine_learning_model(data):
    # 예를 들어, 단순히 수치에 10을 더한다고 가정
    # return data['value'] + 10
@RestController
public class DataController {

    @Autowired
    private DataService dataService;

    // 2-2. FastAPI에서 데이터 조회 요청을 할 때
    @GetMapping("/get-data")
    public ResponseEntity<Data> getData() {
        Data data = dataService.fetchDataFromDB();
        return ResponseEntity.ok(data);
    }

    // 6. FastAPI에서 계산된 결과를 저장 요청할 때
    @PostMapping("/store-result")
    public ResponseEntity<Void> storeResult(@RequestBody Result result) {
        dataService.saveResultToDB(result);
        return ResponseEntity.ok().build();
    }
}