Servidor SQL Máquina Servicios de Aprendizaje - Información general y de combate (a su vez)

La dirección de correo the original: https://d-bi.gitee.io/sqlserver-ml-services/

artículos de Año Nuevo, van al viejo y la bienvenida. En este artículo, tanto en edad, también nueva. mentiras viejas, servicios de aprendizaje automático de SQL Server es una característica nueva de Microsoft SQL Server 2016 establecida en el sector de, pero sólo se apoya el lenguaje R, también conocido como "R Server", en SQL Server 2017 y versiones posteriores, siempre soporte para Python, por lo que ahora se conoce como "servicios de aprendizaje automático (máquina de aprendizaje de servicio)" función desde la fecha de lanzamiento ha sido más de dos años, y por lo tanto esto no es una característica nueva. El nuevo lugar es que, desde el lanzamiento de esta característica muy poca información del país, por un lado, el uso de una versión anterior de los usuarios de SQL Server son todavía muchos, mucha gente en el otro lado es una falta de comprensión de la función, sin embargo, los datos algoritmo de aprendizaje de máquina se puede la profundidad de la excavación, que tenga sentido para empresa muy grande BI inteligencia, la IA es también la futura integración de la compañía en la dirección general de BI de Business Intelligence.

Aquí Insertar imagen Descripción

Este artículo comienza con una explicación de la máquina servicios de aprendizaje (en Python por ejemplo) el concepto del significado y la aplicación de sus principios básicos, hablar de temas relacionados con su sencilla instalación y despliegue, con el tiempo proporcionar un tutorial para explicar su método de aplicación específica.

¿Qué es la máquina de Servicios de Aprendizaje?

Máquina de Servicios de Aprendizaje es una nueva característica disponible en SQL Server, que permite al usuario en SQL Server, utilizando el procedimiento almacenado llama procesamiento R o Python escritura de datos, capacitación y despliegue de modelos de aprendizaje automático. En términos sencillos, los datos de bases de datos SQL Server pueden ser transferidos directamente al proceso de modelado, y Python, el Python es buenos resultados pueden ser devueltos a la base de datos SQL Server (esto se describe más adelante), este SQL Server integrado de manera Python potentes algoritmos de aprendizaje en términos de procesamiento de datos y la máquina, y todas las operaciones se realizan internamente en el servidor SQL (por lo que también es diferente de la versión independiente de la máquina servidor SQL servidor de aprendizaje ).

(Nota: SQL Server 2019 también proporciona soporte para Java, pero no pertenece al servicio de la máquina de aprendizaje, ignorado aquí)

¿Por qué utilizar el servicio de la máquina de aprendizaje?

Hasta aquí, algunos lectores pueden preguntar, incluso sin el uso del servicio de aprendizaje de máquina, Python, puede utilizar algunas bibliotecas (como sqlalchemy) para lograr el acceso y la reescritura de datos (por ejemplo, a partir de una base de datos en este artículo ), usted aún puede tomar ventaja de potentes algoritmos de Python datos de previsión de la biblioteca y escribe la parte posterior resultado a la base de datos, entonces ¿por qué el uso de la máquina de servicios de aprendizaje? De hecho, esto es diferente, ya que la máquina de aprendizaje mediante el servicio de SQL Server, puede aportar las siguientes ventajas:

  • Reciclabilidad. scripts de Python procedimiento que contiene el modelo entrenado almacenados pueden ser serializados en un solo valor almacenado en la tabla de entidad, siempre y cuando el modelo se puede depurar reutilizados cuando sea necesario más adelante. Por ejemplo, se puede ofrecer a otras aplicaciones (como SSI) u otro procedimiento almacenado sigue llamando, desplegado en el entorno de producción, realizar regularmente la minería de datos.
  • Escalabilidad. SQL Server utiliza el servicio de la máquina de aprendizaje de liberación Anaconda, una función de biblioteca rica Python, también se puede instalar marcos de terceros, tales como TensorFlow y scikit-learn.
  • Seguridad. Esta característica es la ubicación en la que los datos de las secuencias de comandos de ejecución, sin pasar por la red para transferir datos a otros servidores. Con la confianza de ejecutar el lenguaje de programación en el marco de la gestión de seguridad de SQL Server, un administrador de base de datos puede permitir que los datos mientras se mantiene la seguridad de la minería de acceso a los ingenieros datos de la empresa.
  • Puede supervisar el sexo. Puede utilizar los informes para supervisar la aplicación de la pitón es proporcionada por Microsoft o de diseño propio (SSMS con respecto a la instalación de este informe ).
  • Integración con herramientas de BI. Los valores de parámetros almacenados procedimiento se pueden pasar a Python, lo que significa usar SSRS (o de alimentación Generador de informes de BI informe) incorporada, los usuarios pueden ajustar los parámetros del algoritmo de aprendizaje de máquina, se mostrará un modelo de algoritmo de ajuste y resultados automatización. Como el uso de múltiples datos de ventas de pronóstico de regresión lineal, el modelo se optimiza mediante el ajuste de los diferentes parámetros en el modelo (para esto, si se utiliza la energía de BI,  este artículo proporciona los casos de uso de modelado y afinación DAX)

(Y si Python propio soporte multi-hilo puede ejecutar scripts de forma R multi-roscado en el lenguaje R, hay una ventaja)

El principio de funcionamiento de los servicios de aprendizaje automático

Después de que el servicio se instala en la máquina de aprendizaje de SQL Server, habrá un servicio llamado "SQL Server Launchpad" en el Administrador de configuración de SQL Server, que es, para SQL Server para realizar servicios para un script externo (Python o R), el funcionario proporciona flujo operativo se muestra a continuación, que no se detallan en este documento, los detalles, referirse a este documento :

Aquí Insertar imagen Descripción

(Nota: Para revoscalepy, que es un desarrollo de la biblioteca Machine Learning Python de Microsoft que proporciona una cierta artificial que se usan algoritmos, tales como árboles de decisión, regresión lineal y regresión logística de aprendizaje, etc.), el apoyo a distancia y distribuye los entornos informáticos, véase el documento )

Acerca de la instalación e implementación

El entrenamiento y la implementación de modelo de Python en SQL Server requiere SQL Server 2017 o posterior y al menos en Windows y Linux puede ser instalado en los servicios de aprendizaje automático. Acerca de la instalación y despliegue, voy a dar algunos enlaces útiles a continuación para ayudarle a instalar el servidor de aprendizaje automático en SQL Server.

(Si es necesario descargar el nuevo SQL Server puede hacer clic aquí para la página de descarga)

Instalar esta función, es necesario abrir el Centro de instalación de SQL Server, introduzca el asistente de instalación, añadir Python Machine Learning Services y dos funciones, puede hacer referencia a la documentación oficial para el proceso de instalación detallada. Si tiene problemas conducido a la instalación falla durante la instalación, puede hacer referencia a este documento , el documento que detalla los problemas que se pueden resolver y recomendaciones. instalación fuera de línea de referencia de servicio de aprendizaje automático en el presente documento , se hace referencia en el documento es necesario descargar dos archivos CAB en el directorio raíz de la instalación:

Aquí Insertar imagen Descripción

Si su SQL Server no es la primera versión (RTM), entonces los dos archivos CAB durante el proceso de instalación y la necesidad de proveer las necesidades de su versión específica de SQL Server que corresponde a (comprobar la versión de comandos específicos de SQL Server: SELECT @@ VERSION), este página ofrece un SQL Server de actualización acumulativa completa cada versión correspondiente CAB descargas de archivos de descarga.

(Nota: Para la versión en chino simplificado de la extensión del archivo CAB debe ser cambiado por el 1033 2052, o el instalador no se encuentra el archivo CAB que resulta en un error)

Después de una instalación correcta, se puede tratar de ejecutar un script en Python más sencilla como una prueba, este documento proporciona un tutorial introductorio buena que le permite poco a poco familiarizados con los procedimientos almacenados para invocar métodos en Python.

capacitación en servicio sobre el uso de la máquina modelo de predicción de aprendizaje (Python)

Un procedimiento típico es SSMS abrir, crear un procedimiento almacenado que contiene el código de modelado Python, ejecute el modelo de proceso almacenado para registros almacenados en una única tabla de entidad y procedimiento almacenado para obtener el segundo registro de la tabla, el modelo de llamada genera una predicción (clasificación o regresión) de los nuevos datos, y devuelve el resultado a la nueva tabla de entidad.

(Pista: se recomienda usar Python IDE Phyton guión completo, una buena sugerencia es abrir la máquina directorio raíz de instalación del servicio de aprendizaje, abierta jupyter-notebook.exe, el uso jupyter prueba de secuencia de comandos de Python portátil)

El siguiente caso es que mis conjuntos de datos de calidad del vino , por ejemplo, el 70% de los datos como datos de entrenamiento, el 30% de los datos mientras que los datos de prueba, utilizando algoritmos aleatorios forestales para predecir el nivel de calidad del vino. Los pasos específicos son como sigue:

1. Crear un procedimiento almacenado - un conjunto de datos de entrenamiento para generar un modelo de predicción

(En la que: parámetros @input_data_ para la adquisición de conjuntos de datos)

DROP PROCEDURE IF EXISTS generate_model_rfc;
go
CREATE PROCEDURE generate_model_rfc (@trained_model varbinary(max) OUTPUT)
AS
BEGIN
    EXECUTE sp_execute_external_script
      @language = N'Python'
    , @script = N'
import numpy as np
import pandas as pd
import pickle
from sklearn.model_selection import train_test_split
from sklearn.ensemble import RandomForestClassifier
from sklearn import metrics
dt = train_data
dt["Level"] = dt["Level"].astype(''category'')
X = dt[["Fixed Acidity","Volatile Acidity","Citric acid","Residual Sugar","Chlorides","Free Sulfur Dioxide","Total Sulfur Dioxide","Density","PH","Sulphates","Alcohol"]]
Y = dt[["Level"]]
X_Train, X_Test, Y_Train, Y_Test = train_test_split(X, Y, test_size=0.3, random_state=42)
RFC=RandomForestClassifier(n_estimators=100,criterion=''gini'',min_samples_split=2,max_depth=2)
RFC.fit(X_Train,Y_Train.values.ravel())
trained_model = pickle.dumps(RFC)
'
, @input_data_1 = N'select "Fixed Acidity", "Volatile Acidity", "Citric acid", "Residual Sugar", "Chlorides", "Free Sulfur Dioxide", "Total Sulfur Dioxide", "Density", "PH", "Sulphates", "Alcohol", "Level" from dbo.RedWineQuality'
, @input_data_1_name = N'train_data'
, @params = N'@trained_model varbinary(max) OUTPUT'
, @trained_model = @trained_model OUTPUT;
END;
GO

2. Crear una tabla - para almacenar modelo predictivo

CREATE TABLE dbo.my_py_models (
    model_name VARCHAR(50) NOT NULL DEFAULT('default model') PRIMARY KEY,
    model_object VARBINARY(MAX) NOT NULL
);
GO

3. La aplicación de un procedimiento almacenado - para generar un modelo de predicción y se almacena en una tabla creada anteriormente (my_py_models) en

DECLARE @model_object VARBINARY(MAX);
EXEC generate_model_rfc @model_object OUTPUT;
INSERT INTO my_py_models (model_name, model_object) VALUES('RandomForestClassification(RFC)', @model_object);

4. Crear un segundo procedimiento de almacenamiento - se utiliza para invocar a los nuevos datos a un modelo predictivo para predecir existente

El caso del conjunto de datos de entrenamiento y datos de prueba conjunto está en uso scripts de Python train_test_split dividida, mientras que el caso de los documentos oficiales diferentes de esto, el conjunto de datos del conjunto de datos de entrenamiento y de prueba utilizando la división DONDE, ha pasado como parámetro a dos scripts de Python se almacenan procedimiento, por lo que en este caso, si generate_model_rfc (el procedimiento primero almacenada) o py_predict_rfc, @ parámetros input_data_1 son los mismos. Por lo tanto, este caso tiene un cierto inconveniente para el uso del conjunto de datos de referencia donde dividida, partida en dos señalar aquí que es necesario especificar la misma semilla aleatoria (como se describe en el presente documento: random_state = 42)

DROP PROCEDURE IF EXISTS py_predict_rfc;
GO
CREATE PROCEDURE py_predict_rfc (@model varchar(100))
AS
BEGIN
	DECLARE @py_model varbinary(max) = (select model_object from dbo.my_py_models where model_name = @model);
	EXEC sp_execute_external_script
				@language = N'Python',
				@script = N'
import pickle
import numpy as np
import pandas as pd
from sklearn.model_selection import train_test_split
py_model_rfc = pickle.loads(py_model)
dt = data
dt["Level"] = dt["Level"].astype(''category'')
X = dt[["Fixed Acidity","Volatile Acidity","Citric acid","Residual Sugar","Chlorides","Free Sulfur Dioxide","Total Sulfur Dioxide","Density","PH","Sulphates","Alcohol"]]
Y = dt[["Level"]]
X_Train, X_Test, Y_Train, Y_Test = train_test_split(X, Y, test_size=0.3, random_state=42)
Predictions = py_model_rfc.predict(X_Test)
OutputDataSet=pd.DataFrame(data=Predictions,columns=[''Prediction''])
OutputDataSet[''Actual''] = pd.Series(Y_Test[''Level''].values,index=np.arange(0,len(Y_Test)))
'
, @input_data_1 = N'select "Fixed Acidity", "Volatile Acidity", "Citric acid", "Residual Sugar", "Chlorides", "Free Sulfur Dioxide", "Total Sulfur Dioxide", "Density", "PH", "Sulphates", "Alcohol", "Level" from dbo.RedWineQuality'
, @input_data_1_name = N'data'
, @params = N'@py_model varbinary(max)'
, @py_model = @py_model
with result sets (("Prediction" int, "Actual" int));
END;
GO

5. Crear una nueva tabla - modelo de almacenamiento para los resultados de las pruebas

CREATE TABLE [dbo].[py_rfc_predictions](
 [Prediction] int,
 [Actual] int
)

Realización de una segunda almacenamiento procedimiento 6. - datos de predicción y da salida a los resultados a dicha nueva tabla (py_rfc_predictions) en

Como se muestra en la tabla de códigos que devuelve una tabla de verificación sólo dos campos, una predicción de los datos almacenados - [Predicción], es un conjunto de datos reales - [real].

INSERT INTO py_rfc_predictions
EXEC py_predict_rfc 'RandomForestClassification(RFC)';
SELECT * FROM py_rfc_predictions;

Hasta el momento, este proceso se ha completado y la máquina de entrenamiento de modelos de aprendizaje utilizado.

resumen

SQL Server y Python fuerte combinación permite a los desarrolladores reportar un mejor acceso a los datos a través de la profundidad de la máquina de excavación algoritmos para generar aprendizaje, estos datos son a menudo difíciles de usar herramientas de front-end de BI completa, como en el poder de BI, el uso de DAX sólo se basa algoritmo sencillo (como implementado en el algoritmo de clasificación KNN DAX ), el Poder BI premium y Poder BI Embedded aunque con el aprendizaje de máquina, pero solamente funciona con la versión nube, y esta máquina de formación de modelos de aprendizaje en comparación con el usuario de la propia código Python directamente a través de la formación a sus necesidades, ya sea opcional o efectos, etc., han sido muy notable brecha. Al parecer, en un entorno empresarial, mediante el aprendizaje y servicios de minería de datos almacenados en una base de datos de la máquina, y luego usar el front-end de herramientas de BI leer directamente el conjunto de resultados está más estandarizado y un enfoque más práctico.

Licencia Creative Commons
Este trabajo es Creative Commons Reconocimiento - No comercial - Compartir bajo la misma licencia 4.0 Acuerdo Internacional para la licencia.

Supongo que te gusta

Origin www.cnblogs.com/joyanli/p/12529459.html
Recomendado
Clasificación