Scikit-Learn에서는 PLSRegression 클래스를 이용하여 부분 최소 제곱 회귀(Partial Least Square Regression : PLSR) 모형을 학습할 수 있다. 이번 포스팅에서는 PLSRegression 클래스의 기본적인 사용법에 대해서 알아본다.
부분 최소 제곱 회귀(Partial Least Square Regression : PLSR) 모형에 대한 개념은 아래 포스팅을 참고하면 된다.
38. 부분 최소 제곱 회귀(Partial Least Square Regression : PLSR)에 대해서 알아보자 with Python
38. 부분 최소 제곱 회귀(Partial Least Square Regression : PLSR)에 대해서 알아보자 with Python
이번 포스팅에서는 부분 최소 제곱 회귀(Partial Least Square Regression : PLSR)에 대한 개념과 파이썬 구현 방법을 알아보고자 한다. - 목차 - 1. 부분 최소 제곱 회귀(Partial Least Square Regression : PLSR)란? 2.
zephyrus1111.tistory.com
PLSRegression 사용법
여기에서는 Scikit-Learn의 예제에서 나오는 코드를 이용했다. PLSRegression은 알고리즘 최대 반복수(max_iter), 선형 결합 개수(n_components), 설명 변수와 반응 변수 행렬의 스케일링 여부(scale) 등의 인자를 설정할 수 있다. 그리고 fit 메서드를 이용하면 PLSR 모형을 학습할 수 있다.
import numpy as np from sklearn.cross_decomposition import PLSRegression X = np.array([[0., 0., 1.], [1.,0.,0.], [2.,2.,2.], [2.,5.,4.]]) Y = np.array([[0.1, -0.2], [0.9, 1.1], [6.2, 5.9], [11.9, 12.3]]) pls_reg = PLSRegression( max_iter=500, ## 알고리즘 최대 반복수 n_components=2, ## 선형 결합 개수 scale=False, ## 스케일링 여부 (평균 센터링은 하지만 일반적으로 스케일링은 할지 말지 지정) tol=1e-06 ## 오차 한계 ).fit(X, Y)
모형을 학습하고 난 뒤 접근할 수 있는 속성들은 다음과 같다(Scikit-Learn 최신 버전에서는 intercept_ 속성을 통해 절편항 정보도 가져올 수 있다).
X_score = pls_reg.x_scores_ ## 선형 결합 X_loading = pls_reg.x_loadings_ ## 로딩 행렬 X_rot = pls_reg.x_rotations_ ## 회전 행렬 (X - np.mean(X, axis=0)) @ X_rot = X_score 가 된다. Y_score = pls_reg.y_scores_ ## 반응 변수 선형 결합 Y_loading = pls_reg.y_loadings_ ## 로딩 행렬 Y_rot = pls_reg.y_rotations_ ## 회전 행렬 beta = pls_reg.coef_ ## 회귀 계수
마지막으로 predict 메서드를 이용하면 예측값(여기에서는 행렬)을 얻을 수 있다.
print('예측 :', pls_reg.predict(X))

댓글