Verwenden von R lang in SQL Server / Sudo Null IT News

Lassen Sie uns in Fortsetzung des vorherigen Artikels über die Verwendung von SQL Server Machine Learning Services sprechen. Dieser Artikel enthält Anwendungsfälle in R.

Warum sollte R 4.2.1 installiert werden (https://cran.r-project.org/src/base/R-4/)

Wir brauchen auch das randomForest-Paket, es kann im Studio (Menü) Pakete -> Paket installieren installiert werden.Wenn Sie auch Windows haben und dies nicht wie bei mir funktioniert, laden Sie das c-Paket herunter KRAN und wählen Sie Pakete -> Pakete aus lokalen Dateien installieren und dann das heruntergeladene Archiv.

Bei einigen Paketen müssen alle Abhängigkeiten installiert sein, daher ist es am besten, Fehler beim Herunterladen von Paketen zu beheben, falls vorhanden. Die Liste der Fehler und ihre Lösungen sind in beschrieben Alexey Seleznevs Blog.

Um sich mit den Möglichkeiten von SQL Server für maschinelles Lernen vertraut zu machen, verwenden Sie Datensatz mit Titanic-Passagieren von Kaggle

Dies ist der beliebteste Wettbewerb und es gibt viele Artikel und Codebeispiele für die Arbeit mit dem Datensatz. Selbst wenn Sie R überhaupt nicht kennen, können Sie einfache Modelle und Visualisierungen für den Datensatz erstellen.

Die Idee der maschinellen Lerndienste von SQL Server besteht darin, mit Daten in der Datenbank zu arbeiten und sie zu analysieren, ohne sie irgendwo zu entladen. Für unser Experiment müssen wir dagegen Daten aus CSV in SQL Server laden.

Laden Sie CSV-Dateien von Kaggle herunter.

Führen Sie das Titanic-Datenbankerstellungsskript in SQL Server Management Studio aus

DATENBANK ERSTELLEN Titanic;

Auf der erstellten Datenbank rechtsklick im Studio „Tasks -> Import Flat File“

Geben Sie als Nächstes den Pfad zu der Datei mit dem train.csv-Datensatz der Titanic an (das Tool erstellt eine Tabelle) und gehen Sie zu Weiter, ohne die Struktur der Tabelle oder Spalten zu ändern.

Das Gleiche machen wir mit der zweiten test.csv-Datei.

Lassen Sie uns einfache Skripte ausführen, die den Prozentsatz der Überlebenden unter Männern und Frauen berechnen

EXEC sp_execute_external_script @language =N’R’ , @script=N’total_women <- sum(train_data$Sex == ''female'') # Erhalte die Gesamtzahl der Frauen, die_women <- sum(train_data[which(train_data$Sex == ''female''), "Survived"]) Rate_Frauen = Überlebende_Frauen/Gesamtzahl_Frauen print(Gesamt_Frauen) Druck(überlebte_Frauen) Print(Rate_Frauen)' , @input_data_1 =N'SELECT * from dbo.train' , @input_data_1_name = N'train_data'; GO EXEC sp_execute_external_script @language =N'R' , @script=N'# Gesamtzahl der Männer auf der Titanic abrufen total_men <- sum(train_data$Sex == ''male'') # Gesamtzahl der Frauen abrufen, die Surved_men <- sum(train_data[which(train_data$Sex == ''male''), "Survived"]) Rate_Men = Survived_Men/Total_Männer paste("% der Männer, die überlebt haben:", Rate_Männer * 100) print(Total_Männer) Print(survived_Männer) Print(Rate_Männer)' , @input_data_1 =N'SELECT * from dbo.train' , @input_data_1_name = N'Zugdaten'; GEHEN

Als nächstes benötigen wir R-Bibliotheken.Manchmal sieht SQL Server die Bibliotheken nicht, selbst wenn Sie sie über eine R-Anwendung installiert haben.

Führen Sie das Skript aus, um festzustellen, ob die erforderliche Bibliothek in SQL Server verfügbar ist

EXEC sp_execute_external_script @language = N’R’, @script = N’OutputDataSet <- data.frame(installed.packages())'

Wenn die erforderliche Bibliothek nicht gefunden wurde, müssen Sie in das SQL Server-Verzeichnis wechseln und sie mit R.exe installieren (genauer beschrieben https://www.mssqltips.com/sqlservertip/4760/common-issues-with-r-services-packages/)

My SQL Server befindet sich im Pfad E:\Microsoft SQL Server\MSSQL15.MSSQL2019\R_SERVICES\bin

Normalerweise wäre dies C:\Programme\Microsoft SQL Server\MSSQL15.\R_SERVICES\bin

Führen Sie im Fenster R.exe den Paketinstallationsbefehl aus (https://www.rdocumentation.org/packages/utils/versions/3.6.2/topics/install.packages)

install.packages(“Paketname”, “MS SQL Server R-Bibliotheksverzeichnis”)

In meinem Fall ist es

install.packages(“e1071”, “E:\\Microsoft SQL Server\\MSSQL15.MSSQL2019\\R_SERVICES\\library”, Abhängigkeiten=TRUE, repos=”http://cran.rstudio.com/”)

Suchen nach einem Paket in SSMS

Wir beginnen mit der Erstellung des Modells

EXEC sp_execute_external_script @language = N’R’ , @script = N’ Bibliothek (e1071); fit <-naiveBayes(as.factor(Survived) ~ Pclass + Sex + SibSp + Parch, data=train_data); trainiertes_modell <- data.frame(payload = as.raw(serialize(fit, connection=NULL)))); ' , @input_data_1 = N'SELECT * from dbo.train' , @input_data_1_name = N'train_data' , @output_data_1_name = N'trainiertes_modell' WITH RESULT SETS ((model varbinary(max)));

Wir erhalten das Modell und können es auf Testdaten aus der Testtabelle anwenden, die aus dem test.csv-Download stammt.

Als nächstes verwenden wir mehrere Eingabedaten. Um sich mit Ihrer Instanz verbinden zu können, aktivieren Sie TCP/IP

Erstellen Sie dann einen Benutzer, um sich mit der Datenbank zu verbinden

LOGIN ERSTELLEN [usrdemo] WITH PASSWORD=N’usrdemo’, DEFAULT_DATABASE=[master]CHECK_EXPIRATION=AUS, CHECK_POLICY=AUS GEHEN BENUTZER ERSTELLEN [usrdemo] ZUR ANMELDUNG [usrdemo] MIT DEFAULT_SCHEMA=[dbo]
GEHEN

Wir beginnen mit der Erstellung des Modells und dann mit der Vorhersage der Daten aus dem Testdatensatz

US-Titanic; DECLARE @rscript NVARCHAR(MAX), @sqlscript NVARCHAR(MAX); SET @rscript = N’ Bibliothek (e1071); # train data from InputDataSet train_data <- InputDataSet # test from table conn <- "Driver={SQL Server};Server=VKS\\MSSQL2019;Database=titanic;Uid=usrdemo;Pwd=usrdemo" query <- "SELECT * FROM dbo.test;" test_data <- RxSqlServerData(connectionString = conn, sqlQuery = query) test_data <- rxDataStep(test_data) fit <-naiveBayes(as.factor(Survived) ~ Pclass + Sex + SibSp + Parch, data=train_data); trainiertes_modell <- data.frame(payload = as.raw(serialize(fit, connection=NULL)))); pred <- vorhersagen (fit, test_data, writeModelVars = TRUE) Übermittlung <- data.frame (PassengerId = test_data$PassengerId, Survived = pred) '; SET @sqlscript = N'SELECT * FROM dbo.train;'; EXEC sp_execute_external_script @language = N'R', @script = @rscript, @input_data_1 = @sqlscript, @output_data_1_name = N'submission' WITH RESULT SETS((PassengerId int, Survived BIT)); GEHEN

Jetzt kann der resultierende Datensatz im CSV-Format gespeichert, in Kaggle hochgeladen und überprüft werden, wie genau die Vorhersage war.

Dann können Sie mit dem Datensatz experimentieren – reichern Sie ihn mit anderen Feldern an und fügen Sie sie der Formel hinzu, um die Vorhersage genauer zu machen.

Sie können Datenvisualisierung auch mit R durchführen, aber darüber sprechen wir in offener Unterricht.

Similar Posts

Leave a Reply

Your email address will not be published.