이 번역 페이지는 최신 내용을 담고 있지 않습니다. 최신 내용을 영문으로 보려면 여기를 클릭하십시오.
predict
선형 회귀 모델의 응답 변수 예측
구문
설명
예제
응답 변수 값 예측하기
carsmall
데이터 세트에서 자동차 주행거리의 2차 모델을 가중치의 함수로 만듭니다.
load carsmall X = Weight; y = MPG; mdl = fitlm(X,y,'quadratic');
데이터에 대한 예측된 응답 변수를 만듭니다.
ypred = predict(mdl,X);
원래 응답 변수와 예측된 응답 변수를 플로팅하여 두 응답 변수가 어떻게 다른지 확인합니다.
plot(X,y,'o',X,ypred,'x') legend('Data','Predictions')
예측을 위한 C/C++ 코드 생성하기
선형 회귀 모델을 피팅한 다음 saveLearnerForCoder
를 사용하여 모델을 저장합니다. loadLearnerForCoder
를 사용하여 모델을 불러오고 피팅된 모델의 predict
함수를 호출하는 진입점 함수를 정의합니다. 그런 다음 codegen
(MATLAB Coder)을 사용하여 C/C++ 코드를 생성합니다. C/C++ 코드를 생성하려면 MATLAB® Coder™가 필요합니다.
이 예제에서는 명령줄에서 선형 회귀 모델을 예측하기 위한 코드 생성 워크플로를 간략하게 설명합니다. 자세한 내용은 Code Generation for Prediction of Machine Learning Model at Command Line 항목을 참조하십시오. MATLAB Coder 앱을 사용하여 코드를 생성할 수도 있습니다. 자세한 내용은 Code Generation for Prediction of Machine Learning Model Using MATLAB Coder App 항목을 참조하십시오.
모델 훈련시키기
carsmall
데이터 세트를 불러온 다음 2차 회귀 모델을 피팅합니다.
load carsmall X = Weight; y = MPG; mdl = fitlm(X,y,'quadratic');
모델 저장하기
saveLearnerForCoder
를 사용하여 피팅된 2차 모델을 파일 QLMMdl.mat
에 저장합니다.
saveLearnerForCoder(mdl,'QLMMdl');
진입점 함수 정의하기
다음을 수행하는 mypredictQLM
이라는 이름의 진입점 함수를 정의합니다.
X에 대응되는 측정값과 선택적인 유효한 이름-값 쌍 인수를 받습니다.
QLMMdl.mat
의 피팅된 2차 모델을 불러옵니다.예측 범위와 신뢰구간 범위를 반환합니다.
function [yhat,ci] = mypredictQLM(x,varargin) %#codegen %MYPREDICTQLM Predict response using linear model % MYPREDICTQLM predicts responses for the n observations in the n-by-1 % vector x using the linear model stored in the MAT-file QLMMdl.mat, and % then returns the predictions in the n-by-1 vector yhat. MYPREDICTQLM % also returns confidence interval bounds for the predictions in the % n-by-2 vector ci. CompactMdl = loadLearnerForCoder('QLMMdl'); [yhat,ci] = predict(CompactMdl,x,varargin{:}); end
진입점 함수의 함수 시그니처 뒤에 %#codegen
컴파일러 지시문(또는 pragma)을 추가하여 MATLAB 알고리즘을 위한 코드를 생성하고자 함을 표시합니다. 이 지시문을 추가하면 코드를 생성하는 동안 오류를 유발할 수 있는 위반을 MATLAB 코드 분석기가 진단하고 수정할 수 있도록 안내합니다.
참고: 이 예제의 오른쪽 위 섹션에 있는 버튼을 클릭하고 MATLAB®에서 예제를 열면 MATLAB이 예제 폴더를 엽니다. 이 폴더에는 진입점 함수 파일이 포함되어 있습니다.
코드 생성하기
codegen
(MATLAB Coder)을 사용하여 진입점 함수에 대한 코드를 생성합니다. C와 C++는 정적 유형 언어이므로 컴파일 시점에 진입점 함수의 모든 변수의 속성을 결정해야 합니다. 데이터형과 정확한 입력 배열 크기를 지정하려면 특정 데이터형과 배열 크기를 포함하는 값 세트를 나타내는 MATLAB® 표현식을 전달하십시오. 이름-값 쌍 인수 이름의 경우 coder.Constant
(MATLAB Coder)를 사용합니다.
컴파일 시점에 몇몇 관측값이 알려지지 않은 경우에는 coder.typeof
(MATLAB Coder)를 사용하여 입력값을 가변 크기로 지정할 수도 있습니다. 자세한 내용은 Specify Variable-Size Arguments for Code Generation 및 Specify Types of Entry-Point Function Inputs (MATLAB Coder) 항목을 참조하십시오.
codegen mypredictQLM -args {X,coder.Constant('Alpha'),0.1,coder.Constant('Simultaneous'),true}
Code generation successful.
codegen
은 플랫폼별 확장자를 갖는 MEX 함수 mypredictQLM_mex
를 생성합니다.
생성된 코드 확인하기
predict
와 mypredictQLM_mex
를 사용하여 예측값과 신뢰구간을 비교합니다. codegen
에 대한 호출에서의 -args
인수와 동일한 순서로 이름-값 쌍 인수를 지정합니다.
Xnew = sort(X); [yhat1,ci1] = predict(mdl,Xnew,'Alpha',0.1,'Simultaneous',true); [yhat2,ci2] = mypredictQLM_mex(Xnew,'Alpha',0.1,'Simultaneous',true);
mypredictQLM_mex
에서 반환된 값은 predict
에서의 값과 비교하여 반올림 차이가 있을 수도 있습니다. 이 경우, 작은 허용오차를 허용하며 값을 비교합니다.
find(abs(yhat1-yhat2) > 1e-6)
ans = 0x1 empty double column vector
find(abs(ci1-ci2) > 1e-6)
ans = 0x1 empty double column vector
비교를 통해 반환된 값이 허용오차 1e–6
내에서 동일한지 확인할 수 있습니다.
반환된 값을 플로팅하여 비교합니다.
h1 = plot(X,y,'k.'); hold on h2 = plot(Xnew,yhat1,'ro',Xnew,yhat2,'gx'); h3 = plot(Xnew,ci1,'r-','LineWidth',4); h4 = plot(Xnew,ci2,'g--','LineWidth',2); legend([h1; h2; h3(1); h4(1)], ... {'Data','predict estimates','MEX estimates','predict CIs','MEX CIs'}); xlabel('Weight'); ylabel('MPG');
입력 인수
mdl
— 선형 회귀 모델 객체
LinearModel
객체 | CompactLinearModel
객체
선형 회귀 모델 객체로, fitlm
또는 stepwiselm
을 사용하여 만든 LinearModel
객체 또는 compact
를 사용하여 만든 CompactLinearModel
객체로 지정됩니다.
Xnew
— 새 예측 변수 입력값
table형 | dataset형 배열 | 행렬
새 예측 변수 입력값으로, 테이블, dataset형 배열 또는 행렬로 지정됩니다. Xnew
의 각 행은 하나의 관측값에 대응되고, 각 열은 하나의 변수에 대응됩니다.
Xnew
가 테이블 또는 dataset형 배열이면mdl
의PredictorNames
속성에서와 동일한 예측 변수 이름을 가진 예측 변수를 포함해야 합니다.Xnew
가 행렬이면mdl
을 만드는 데 사용된 예측 변수 입력과 같은 순서로 같은 개수의 변수(열)를 가져야 합니다.Xnew
는 피팅된 모델에서 예측 변수로 사용되지 않는 예측 변수도 포함해야 합니다. 또한mdl
을 만드는 데 사용되는 모든 변수는 숫자형이어야 합니다. 숫자형 예측 변수를 범주형으로 처리하려면mdl
을 만들 때'CategoricalVars'
이름-값 쌍 인수를 사용하여 예측 변수를 식별하십시오.
데이터형: single
| double
| table
이름-값 인수
선택적 인수 쌍을 Name1=Value1,...,NameN=ValueN
으로 지정합니다. 여기서 Name
은 인수 이름이고 Value
는 대응값입니다. 이름-값 인수는 다른 인수 뒤에 와야 하지만, 인수 쌍의 순서는 상관없습니다.
R2021a 이전 릴리스에서는 쉼표를 사용하여 각 이름과 값을 구분하고 Name
을 따옴표로 묶으십시오.
예: [ypred,yci] = predict(Mdl,Xnew,'Alpha',0.01,'Simultaneous',true)
는 모든 예측 변수 값에 대해 동시에 계산하여 99% 신뢰수준으로 신뢰구간 yci
를 반환합니다.
Alpha
— 유의수준
0.05 (디폴트 값) | 범위 [0,1] 내에 있는 숫자형 값
신뢰구간에 대한 유의수준으로, 'Alpha'
와 함께 범위 [0,1] 내에 있는 숫자형 값이 쉼표로 구분되어 지정됩니다. yci
의 신뢰수준은 100(1 – Alpha
)%입니다. Alpha
는 신뢰구간에 실제 값이 포함되지 않을 확률입니다.
예: 'Alpha',0.01
데이터형: single
| double
Prediction
— 예측 유형
'curve'
(디폴트 값) | 'observation'
예측 유형으로, 'Prediction'
과 함께 'curve'
또는 'observation'
이 쉼표로 구분되어 지정됩니다.
예측 변수 X와 응답 변수 y에 대한 회귀 모델의 형식은 다음과 같습니다.
y = f(X) + ε,
여기서 f는 피팅된 회귀 함수이고 ε은 임의효과 잡음 항입니다.
'Prediction'
이'curve'
이면predict
함수는Xnew
에서 피팅된 응답 변수인 f(Xnew)에 대한 신뢰한계를 예측합니다.'Prediction'
이'observation'
이면predict
함수는Xnew
에서의 응답 변수 관측값인 y에 대한 신뢰한계를 예측합니다.
y에 대한 한계는 잡음 항의 추가 변동성 때문에 f(X)에 대한 한계보다 넓습니다.
예: 'Prediction','observation'
Simultaneous
— 동시 신뢰한계를 계산할지 지정하는 플래그
false
(디폴트 값) | true
동시 신뢰한계를 계산할지 지정하는 플래그로, 'Simultaneous'
와 함께 true 또는 false가 쉼표로 구분되어 지정됩니다.
true
—predict
함수는 쉐폐 검정법(Scheffé's method)을 사용하여Xnew
의 모든 예측 변수 값에 대응하는 응답 변수 값의 곡선에 대한 신뢰한계를 계산합니다. 상한과 하한 사이의 범위는 100(1 – α)% 신뢰의 실제 응답 변수 값으로 구성된 곡선을 포함합니다.false
—predict
함수는Xnew
의 각 관측값에서 응답 변수 값에 대한 신뢰한계를 계산합니다. 특정 예측 변수 값에서 응답 변수 값에 대한 신뢰구간은 100(1 – α)% 신뢰의 실제 응답 변수 값을 포함합니다.
응답 변수 값의 전체 곡선이 한계 내에 있어야 한다는 요건은 단일 예측 변수 값에서 응답 변수 값이 한계 내에 있어야 한다는 요건보다 엄격하기 때문에 동시 한계는 개별 한계보다 넓습니다.
예: 'Simultaneous',true
출력 인수
ypred
— 예측된 응답 변수 값
숫자형 벡터
Xnew
에서 계산된 예측된 응답 변수 값으로, 숫자형 벡터로 반환됩니다.
yci
— 응답 변수에 대한 신뢰구간
2열 숫자형 행렬
응답 변수에 대한 신뢰구간으로, 각 행이 하나의 구간을 제공하는 2열 행렬로 반환됩니다. 신뢰구간의 의미는 이름-값 쌍 인수 'Alpha'
, 'Prediction'
, 'Simultaneous'
의 설정에 따라 달라집니다.
대체 기능
feval
은predict
와 동일한 예측값을 반환합니다.feval
함수는 각 예측 변수에 대해 입력값이 1개인 여러 입력 인수를 받을 수 있으며, 이는 테이블 또는 dataset형 배열에서 생성된 모델에 사용하면 더 편합니다.feval
함수는 해당 예측값에 대한 신뢰구간을 제공하지 않는다는 점에 유의하십시오.random
은 추가된 잡음과 함께 예측값을 반환합니다.각 조각이 예측된 회귀 곡면을 나타내는 일련의 플롯으로 구성된 Figure를 만들려면
plotSlice
를 사용합니다. 각 플롯은 일정하게 유지되는 다른 예측 변수와 함께, 피팅된 응답 변수 값을 단일 예측 변수의 함수로 표시합니다.
확장 기능
C/C++ 코드 생성
MATLAB® Coder™를 사용하여 C 코드나 C++ 코드를 생성할 수 있습니다.
사용법 관련 참고 및 제한 사항:
saveLearnerForCoder
,loadLearnerForCoder
,codegen
(MATLAB Coder)을 사용하여predict
에 대한 코드를 생성합니다.saveLearnerForCoder
를 사용하여 훈련된 모델을 저장합니다.loadLearnerForCoder
를 사용하여 저장된 모델을 불러오고predict
함수를 호출하는 진입점 함수를 정의합니다. 그런 다음codegen
을 사용하여 진입점 함수에 대한 코드를 생성합니다.predict
에 대한 단정밀도 C/C++ 코드를 생성하려면loadLearnerForCoder
함수를 호출할 때 이름-값 인수"DataType","single"
을 지정하십시오.다음 표에는
predict
의 인수에 대한 참고 사항 포함되어 있습니다. 이 표에 포함되지 않은 인수는 완전히 지원됩니다.인수 참고 및 제한 사항 mdl
fitlm
을 사용하고'RobustOpts'
를RobustWgtFun
필드에 대한 익명 함수 핸들을 가진 구조체로 지정하여 선형 모델을 훈련시키고saveLearnerForCoder
를 사용하여 모델을 저장한 다음loadLearnerForCoder
를 사용하여 모델을 불러온다고 가정하겠습니다. 이 경우,loadLearnerForCoder
는 Robust 속성을 MATLAB® 작업 공간으로 복원할 수 없습니다. 그러나loadLearnerForCoder
는 코드 생성을 위해 컴파일 시점에 진입점 함수 내에서 모델을 불러올 수 있습니다.모델 객체의 사용법 관련 참고 및 제한 사항은
CompactLinearModel
객체에 대한 코드 생성 항목을 참조하십시오.
Xnew
Xnew
는 단정밀도 또는 배정밀도 행렬이거나 숫자형 변수, 범주형 변수 또는 둘 다 포함하는 테이블이어야 합니다.Xnew
의 행 개수 또는 관측값 개수는 가변 크기를 가질 수 있지만,Xnew
의 열 개수는 고정되어야 합니다.Xnew
를 테이블로 지정하려면 테이블을 사용하여 모델을 훈련해야 하며, 예측을 위한 진입점 함수는 다음을 수행해야 합니다.데이터를 배열로 받음
데이터 입력 인수에서 테이블을 생성하고 테이블에 변수 이름 지정
테이블을
predict
로 전달
이 테이블 워크플로의 예제는 Generate Code to Classify Data in Table 항목을 참조하십시오. 코드 생성에 테이블을 사용하는 방법에 대한 자세한 내용은 Code Generation for Tables (MATLAB Coder) 항목 및 Table Limitations for Code Generation (MATLAB Coder) 항목을 참조하십시오.
이름-값 쌍의 인수 이름-값 인수에 지정하는 이름은 컴파일타임 상수여야 합니다. 예를 들어 생성된 코드에서 사용자 정의 유의수준을 허용하려면
codegen
(MATLAB Coder)의-args
값에{coder.Constant('Alpha'),0}
을 포함시키십시오.
자세한 내용은 Introduction to Code Generation 항목을 참조하십시오.
GPU 배열
Parallel Computing Toolbox™를 사용해 GPU(그래픽스 처리 장치)에서 실행하여 코드 실행 속도를 높일 수 있습니다.
이 함수는 GPU 배열을 완전히 지원합니다. 자세한 내용은 GPU에서 MATLAB 함수 실행하기 (Parallel Computing Toolbox) 항목을 참조하십시오.
버전 내역
R2012a에 개발됨
MATLAB 명령
다음 MATLAB 명령에 해당하는 링크를 클릭했습니다.
명령을 실행하려면 MATLAB 명령 창에 입력하십시오. 웹 브라우저는 MATLAB 명령을 지원하지 않습니다.
Select a Web Site
Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .
You can also select a web site from the following list:
How to Get Best Site Performance
Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.
Americas
- América Latina (Español)
- Canada (English)
- United States (English)
Europe
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)