predict
Predecir respuestas de un modelo de regresión lineal
Sintaxis
Descripción
Ejemplos
Predecir valores de respuesta
Cree un modelo cuadrático del consumo de un vehículo como una función de ponderación a partir del conjunto de datos carsmall
.
load carsmall X = Weight; y = MPG; mdl = fitlm(X,y,'quadratic');
Cree respuestas pronosticadas a los datos.
ypred = predict(mdl,X);
Represente las respuestas originales y las respuestas pronosticadas para ver en qué difieren.
plot(X,y,'o',X,ypred,'x') legend('Data','Predictions')
Generar código C/C++ para predicción
Ajuste un modelo de regresión lineal y guárdelo usando saveLearnerForCoder
. Defina una función de punto de entrada que cargue el modelo utilizando loadLearnerForCoder
y llame a la función predict
del modelo ajustado. A continuación, use codegen
(MATLAB Coder) para generar código C/C++. Tenga en cuenta que generar código C/C++ requiere MATLAB® Coder™.
En este ejemplo se explica brevemente el flujo de trabajo de generación de código para la predicción de modelos de regresión lineal en la línea de comandos. Para obtener más información, consulte Code Generation for Prediction of Machine Learning Model at Command Line. También puede generar código usando la app MATLAB Coder. Para obtener más detalles, consulte Code Generation for Prediction of Machine Learning Model Using MATLAB Coder App.
Entrenar un modelo
Cargue el conjunto de datos carsmall
y ajuste el modelo de regresión cuadrático.
load carsmall X = Weight; y = MPG; mdl = fitlm(X,y,'quadratic');
Guardar un modelo
Guarde el modelo cuadrático ajustado en el archivo QLMMdl.mat
con saveLearnerForCoder
.
saveLearnerForCoder(mdl,'QLMMdl');
Definir una función de punto de entrada
Defina una función de punto de entrada llamada mypredictQLM
que realice las acciones siguientes:
Aceptar medidas correspondientes a X y argumentos de par nombre-valor opcionales válidos.
Cargar el modelo cuadrático ajustado en
QLMMdl.mat
.Devolver predicciones y límites de intervalos de confianza.
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
Añada la directiva del compilador (o pragma) %#codegen
a la función de punto de entrada después de la firma de la función para indicar que intenta generar código para el algoritmo de MATLAB. Añadir esta directiva indica al analizador de código de MATLAB que le ayude a diagnosticar y arreglar vulneraciones que darían como resultado errores durante la generación de código.
Nota: Si hace clic en el botón ubicado en la zona superior derecha de este ejemplo y abre el ejemplo en MATLAB®, MATLAB abrirá la carpeta de ejemplo. Esta carpeta incluye el archivo de función de punto de entrada.
Generar código
Genere código para la función de punto de entrada con codegen
(MATLAB Coder). Dado que C y C++ son lenguajes de tipado estático, debe determinar las propiedades de todas las variables de la función de entrada en tiempo de compilación. Para especificar los tipos de datos y el tamaño de arreglo de entrada exacto, pase una expresión de MATLAB® que represente el conjunto de valores con un tipo de datos y un tamaño de arreglo determinado. Use coder.Constant
(MATLAB Coder) para los nombres de los argumentos de par nombre-valor.
Si el número de observaciones no se conoce en el momento de la compilación, también puede especificar la entrada como tamaño variable utilizando coder.typeof
(MATLAB Coder). Para obtener más detalles, consulte Specify Variable-Size Arguments for Code Generation y Specify Properties of Entry-Point Function Inputs (MATLAB Coder).
codegen mypredictQLM -args {X,coder.Constant('Alpha'),0.1,coder.Constant('Simultaneous'),true}
Code generation successful.
codegen
genera la función MEX de mypredictQLM_mex
con una extensión dependiente de la plataforma.
Verificar código generado
Compare predicciones e intervalos de confianza con predict
y mypredictQLM_mex
. Especifique argumentos de par nombre-valor en el mismo orden que en el argumento -args
en la llamada a codegen
.
Xnew = sort(X); [yhat1,ci1] = predict(mdl,Xnew,'Alpha',0.1,'Simultaneous',true); [yhat2,ci2] = mypredictQLM_mex(Xnew,'Alpha',0.1,'Simultaneous',true);
Los valores devueltos de mypredictQLM_mex
pueden incluir diferencias de redondeo en comparación con los valores de predict
. En este caso, compare los valores permitiendo una pequeña tolerancia.
find(abs(yhat1-yhat2) > 1e-6)
ans = 0x1 empty double column vector
find(abs(ci1-ci2) > 1e-6)
ans = 0x1 empty double column vector
La comparación confirma que los valores devueltos son iguales dentro de la tolerancia 1e–6
.
Represente los valores devueltos para su comparación.
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');
Argumentos de entrada
mdl
— Objeto de modelo de regresión lineal
objeto LinearModel
| objeto CompactLinearModel
Objeto de modelo de regresión lineal, especificado como un objeto LinearModel
creado utilizando fitlm
o stepwiselm
, o un objeto CompactLinearModel
creado utilizando compact
.
Xnew
— Nuevos valores predictores de entrada
tabla | arreglo de conjuntos de datos | matriz
Nuevos valores predictores de entrada, especificados como una tabla, un arreglo de conjunto de datos o una matriz. Cada fila de Xnew
corresponde a una observación y cada columna, a una variable.
Si
Xnew
es una tabla o un arreglo de conjuntos de datos, debe contener predictores que tengan los mismos nombres de predictor que en la propiedadPredictorNames
demdl
.Si
Xnew
es una matriz, debe tener el mismo número de variables (columnas) y en el mismo orden que la entrada de predictores utilizada para crearmdl
. Tenga en cuenta queXnew
también debe contener las variables predictoras que no se utilicen como predictores en el modelo ajustado. Además, todas las variables empleadas en la creación demdl
deben ser numéricas. Para tratar predictores numéricos como variables categóricas, identifique los predictores mediante el argumento de par nombre-valor'CategoricalVars'
al crearmdl
.
Tipos de datos: single
| double
| table
Argumentos de par nombre-valor
Especifique pares de argumentos opcionales Name1=Value1,...,NameN=ValueN
, donde Name
es el nombre del argumento y Value
es el valor correspondiente. Los argumentos nombre-valor deben aparecer después de otros argumentos, pero el orden de los pares no importa.
En versiones anteriores a R2021a, use comas para separar cada nombre y valor y encierre Name
entre comillas.
Ejemplo: [ypred,yci] = predict(Mdl,Xnew,'Alpha',0.01,'Simultaneous',true)
devuelve el intervalo de confianza yci
con un nivel de confianza del 99%, calculado de manera simultánea para todos los valores de predicción.
Alpha
— Nivel de significación
0.05 (predeterminado) | valor numérico en el rango [0,1]
Nivel de significación para el intervalo de confianza, especificado como el par separado por comas que consta de 'Alpha'
y un valor numérico en el rango [0,1]. El nivel de confianza de yci
es igual a 100(1 – Alpha
)%. Alpha
es la probabilidad de que el intervalo de confianza no contenga el valor real.
Ejemplo: 'Alpha',0.01
Tipos de datos: single
| double
Prediction
— Tipo de predicción
'curve'
(predeterminado) | 'observation'
Tipo de predicción, especificado como el par separado por comas que consta de 'Prediction'
y 'curve'
u 'observation'
.
Un modelo de regresión para las variables predictoras X y la variable de respuesta y tiene la forma
y = f(X) + ε,
donde f es una función de regresión ajustada y ε es un término de ruido aleatorio.
Si
'Prediction'
es'curve'
,predict
predice límites de confianza para f(Xnew), las respuestas ajustadas enXnew
.Si
'Prediction'
es'observation'
,predict
predice límites de confianza para y, las observaciones de respuesta enXnew
.
Los límites para y son más amplios que los límites para f(X) debido a la variabilidad adicional del término de ruido.
Ejemplo: 'Prediction','observation'
Simultaneous
— Indicador para calcular límites de confianza simultáneos
false
(predeterminado) | true
Indicador para calcular límites de confianza simultáneos, especificado como el par separado por comas que consta de 'Simultaneous'
y true o false.
true
:predict
calcula los límites de confianza para la curva de valores de respuesta correspondientes a todos los valores de predicción deXnew
utilizando el método de Scheffé. El rango entre el límite superior e inferior contiene la curva que consta de valores de respuesta reales con una confianza del 100(1 – α)%.false
:predict
calcula los límites de confianza para el valor de respuesta en cada observación deXnew
. El intervalo de confianza para un valor de respuesta en un valor de predicción específico contiene el valor de respuesta real con una confianza del 100(1 – α)%.
Los límites simultáneos son más amplios que los límites separados porque requerir que la curva completa de valores de respuesta quede dentro de los límites es más estricto que requerir que el valor de respuesta de un único valor de predicción quede dentro de los límites.
Ejemplo: 'Simultaneous',true
Argumentos de salida
ypred
— Valores de respuesta pronosticados
vector numérico
Valores de respuesta pronosticados evaluados en Xnew
, devueltos como un vector numérico.
yci
— Intervalos de confianza para respuestas
matriz numérica de dos columnas
Intervalos de confianza para las respuestas, devueltos como una matriz de dos columnas donde cada fila proporciona un intervalo. El significado del intervalo de confianza depende de la configuración de los argumentos de par nombre-valor 'Alpha'
, 'Prediction'
y 'Simultaneous'
.
Funcionalidad alternativa
feval
devuelve las mismas predicciones quepredict
. La funciónfeval
acepta múltiples argumentos de entrada, con una entrada para cada variable predictora, que es más sencillo de utilizar con un modelo creado a partir de una tabla o un arreglo de conjunto de datos. Tenga en cuenta que la funciónfeval
no proporciona intervalos de confianza en sus predicciones.random
devuelve predicciones con ruido añadido.Utilice
plotSlice
para crear una figura que contenga una serie de gráficas, cada una de las cuales representa una porción de la superficie de regresión pronosticada. Cada gráfica muestra los valores de respuesta ajustados como una función de una única variable predictora, mientras las otras variables predictoras se mantienen constantes.
Capacidades ampliadas
Generación de código C/C++
Genere código C y C++ mediante MATLAB® Coder™.
Notas y limitaciones de uso:
Use
saveLearnerForCoder
,loadLearnerForCoder
ycodegen
(MATLAB Coder) para generar código para la funciónpredict
. Guarde un modelo entrenado consaveLearnerForCoder
. Defina una función de punto de entrada que cargue el modelo guardado utilizandoloadLearnerForCoder
y llame a la funciónpredict
. Después, usecodegen
para generar código para la función de punto de entrada.Para generar código C/C++ de precisión simple para
predict
, especifique el argumento nombre-valor"DataType","single"
cuando llame a la funciónloadLearnerForCoder
.Esta tabla contienes notas sobre los argumentos de
predict
. Los argumentos no incluidos en esta tabla son totalmente compatibles.Argumento Notas y limitaciones mdl
Supongamos que entrena un modelo lineal utilizando
fitlm
y especificando'RobustOpts'
como una estructura con un identificador de función anónima para el campoRobustWgtFun
; usesaveLearnerForCoder
para guardar el modelo y, luego, useloadLearnerForCoder
para cargar el modelo. En este caso,loadLearnerForCoder
no puede restaurar la propiedad Robust al área de trabajo de MATLAB®. No obstante,loadLearnerForCoder
puede cargar el modelo en el momento de la compilación dentro de una función de punto de entrada para la generación de código.Para ver las notas y limitaciones del objeto de modelo, consulte Code Generation del objeto
CompactLinearModel
.
Xnew
Xnew
debe ser una matriz de precisión simple o doble, o una tabla que contenga variables numéricas, variables categóricas o ambas.El número de filas, u observaciones, de
Xnew
puede ser de tamaño variable, pero el número de columnas deXnew
debe ser fijo.Si desea especificar
Xnew
como una tabla, el modelo se debe entrenar utilizando una tabla y debe asegurarse de que la función de punto de entrada para la predicción:Acepta datos como arreglos.
Crea una tabla a partir de los argumentos de entrada de datos y especifica los nombres de las variables en la tabla.
Pasa la tabla a
predict
.
Para ver un ejemplo del flujo de trabajo de esta tabla, consulte Generate Code to Classify Data in Table. Para obtener más información sobre el uso de tablas en la generación de código, consulte Code Generation for Tables (MATLAB Coder) y Table Limitations for Code Generation (MATLAB Coder).
Argumentos de par nombre-valor Los nombres en los argumentos nombre-valor deben ser constantes en tiempo de compilación. Por ejemplo, para permitir un nivel de significación definido por el usuario en el código generado, incluya
{coder.Constant('Alpha'),0}
en el valor-args
decodegen
(MATLAB Coder).
Para obtener más información, consulte Introduction to Code Generation.
Arreglos GPU
Acelere código mediante la ejecución en una unidad de procesamiento gráfico (GPU) mediante Parallel Computing Toolbox™.
Esta función es totalmente compatible con los arreglos de GPU. Para obtener más información, consulte Run MATLAB Functions on a GPU (Parallel Computing Toolbox).
Historial de versiones
Introducido en R2012a
Abrir ejemplo
Tiene una versión modificada de este ejemplo. ¿Desea abrir este ejemplo con sus modificaciones?
Comando de MATLAB
Ha hecho clic en un enlace que corresponde a este comando de MATLAB:
Ejecute el comando introduciéndolo en la ventana de comandos de MATLAB. Los navegadores web no admiten comandos de 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)