본문 바로가기

전체 글

(113)
[Spring MVC] FrontController : 유연한 컨트롤러 기존의 FrontController는 컨트롤러를 지정하여 호출하였다. 이렇게 하면 프론트 컨트롤러는 한 가지 방식의 컨트롤러 인터페이스만 사용할 수 있다. 만약 어떤 개발자는 ControllerV3 방식으로 개발하고 싶고, 어떤 개발자는 ControllerV4 방식으로 개발하고 싶다면 ? 이때 어댑터 패턴을 사용해서 프론트 컨트롤러가 다양한 방식의 컨트롤러를 처리할 수 있도록 변경할 수 있다. MyHandlerAdapter package hello.servlet.web.frontcontroller.v5; import hello.servlet.web.frontcontroller.ModelView; import jakarta.servlet.ServletException; import jakarta.servl..
[Spring MVC] FrontController : 단순하고 실용적인 컨트롤러 https://nymagicshop16.tistory.com/77 [Spring MVC] FrontController : Model 추가하기 서블릿 종속성 제거 https://nymagicshop16.tistory.com/76 [Spring MVC] FrontController : 뷰 분리하기 앞의 FrontController 구조에서 뷰를 분리하여 코드의 반복을 없앨 수 있다. MyView package hello.servlet.web.frontcontroller; nymagicshop16.tistory.com 앞서 만든 v3 컨트롤러를 보면, 항상 ModelView 객체를 생성하고 반환해야 부분이 번거롭다. V4 구조 (우리가 이름붙인 것이다) 는 컨트롤러가 ModelView를 반환하지 않고, Vie..
[Spring MVC] FrontController : Model 추가하기 서블릿 종속성 제거 https://nymagicshop16.tistory.com/76 [Spring MVC] FrontController : 뷰 분리하기 앞의 FrontController 구조에서 뷰를 분리하여 코드의 반복을 없앨 수 있다. MyView package hello.servlet.web.frontcontroller; import jakarta.servlet.RequestDispatcher; import jakarta.servlet.ServletException; import jakarta.servlet.http. nymagicshop16.tistory.com 위 글과 이어지는 내용이다. 지금 구조에서는 컨트롤러가 서블릿 기술을 몰라도 동작할 수 있다. request 객체를 Model로 사용하..
[Spring MVC] FrontController : 뷰 분리하기 앞의 FrontController 구조에서 뷰를 분리하여 코드의 반복을 없앨 수 있다. MyView package hello.servlet.web.frontcontroller; import jakarta.servlet.RequestDispatcher; import jakarta.servlet.ServletException; import jakarta.servlet.http.HttpServletRequest; import jakarta.servlet.http.HttpServletResponse; import java.io.IOException; public class MyView { private String viewPath; public MyView(String viewPath) { this.viewPa..
[Spring MVC] FrontController 패턴 생성하기 FrontController 패턴 특징 프론트 컨트롤러 서블릿 하나로 클라이언트의 요청을 받음 프론트 컨트롤러가 요청에 맞는 컨트롤러를 찾아서 호출 입구를 하나로, 공통 처리 가능 프론트 컨트롤러를 제외한 나머지 컨트롤러는 서블릿을 사용하지 않아도 됨 FrontController 도입 Controller를 인터페이스로 설계하기 Controller 인터페이스 package hello.servlet.web.frontcontroller.v1; import jakarta.servlet.ServletException; import jakarta.servlet.http.HttpServletRequest; import jakarta.servlet.http.HttpServletResponse; import java.i..
[ML] 다중 회귀 multiple regression 다중 회귀 여러 개의 특성을 사용한 선형 회귀 특성 공학 : 기존의 특성을 사용해 새로운 특성을 뽑아내는 작업 데이터 변환 PolynomialFeatures # 특성 추가 from sklearn.preprocessing import PolynomialFeatures poly = PolynomialFeatures(degree=2) poly.fit([[2,3]]) # 적용 poly.transform([[2,3]]) # 데이터 변환 2개의 특성을 가진 샘플 [2,3]이 6개의 특성을 가진 샘플 [1., 2., 3., 4., 6., 9.] 로 변환됨 기본적으로 각 특성을 제곱한 항을 추가하고 특성끼리 서로 곱한 항을 추가함 include_bias = False 사이킷런의 선형 모델은 자동으로 절편을 추가함 절편..
[ML] 선형 회귀 Linear Regression k-최근접 이웃 회귀의 한계 가장 가까운 샘플을 찾아 타깃을 평균하므로 새로운 샘플이 훈련 세트의 범위를 벗어나면 엉뚱한 값을 예측 가능 선형 회귀 비교적 간단하고 성능이 뛰어나기 때문에 널리 사용되는 대표적인 회귀 알고리즘 특성이 하나인 경우 어떤 직선을 학습하는 알고리즘 # 선형 회귀 from sklearn.linear_model import LinearRegression lr = LinearRegression() # 선형 회귀 모델 훈련 lr.fit(X_train, y_train) # 50cm 농어에 대해 예측 lr.predict([[50]]) print(lr.coef_, lr.intercept_) coef_ : 기울기 intercept_ : 절편 학습한 직선 그리기 # 학습한 직선 그리기 plt...
[ML] K-최근접 이웃 회귀 k-최근접 이웃 회귀 예측하려는 샘플에 가장 가까운 샘플 k개를 선택 이웃 샘플의 수치를 사용해 새로운 샘플 x의 타깃을 예측 -> 이웃 수치들의 평균을 구해서 예측 Reshape numpy의 reshape() 메소드 : 배열의 크기를 바꿀 수 있음 test_array = test_array.reshape(2,2) : (2,2) 크기로 배열 바꾸기 2차원 배열로 바꾸기 크기에 -1을 지정하면 나머지 원소 개수로 모두 채운다 ex ) 첫 번째 크기를 나머지 원소 개수로 채우고, 두번째 크기를 1로 하려면 train_input.reshape(-1,1) 결정계수(R2) 각 샘플의 타깃과 예측한 값의 차이를 제곱하여 더함, 그다음 타깃과 타깃 평균의 차이를 제곱하여 더한 값으로 나눔 타깃의 평균 정도를 예측하는..