Dela via


Självstudie: Skapa en förutsägelsemodell i R med SQL-maskininlärning

Gäller för: SQL Server 2016 (13.x) och senare versioner Azure SQL Managed Instance

I del tre i den här självstudieserien i fyra delar tränar du en förutsägelsemodell i R. I nästa del av den här serien distribuerar du den här modellen i en SQL Server-databas med Machine Learning Services eller i stordatakluster.

I del tre i den här självstudieserien i fyra delar tränar du en förutsägelsemodell i R. I nästa del av den här serien distribuerar du den här modellen i en SQL Server-databas med Machine Learning Services.

I del tre i den här självstudieserien i fyra delar tränar du en förutsägelsemodell i R. I nästa del av den här serien distribuerar du den här modellen i en databas med SQL Server R Services.

I del tre i den här självstudieserien i fyra delar tränar du en förutsägelsemodell i R. I nästa del av den här serien distribuerar du den här modellen i en Azure SQL Managed Instance-databas med Machine Learning Services.

I den här artikeln får du lära dig att:

  • Träna två maskininlärningsmodeller
  • Göra förutsägelser från båda modellerna
  • Jämför resultaten för att välja den mest exakta modellen

I del ett lärde du dig hur du återställer exempeldatabasen.

I del två lärde du dig att läsa in data från en databas till en Python-dataram och förbereda data i R.

I del fyra får du lära dig hur du lagrar modellen i en databas och sedan skapar lagrade procedurer från Python-skripten som du utvecklade i del två och tre. De lagrade procedurerna körs på servern för att göra förutsägelser baserat på nya data.

Prerequisites

Del tre i den här självstudieserien förutsätter att du har uppfyllt förutsättningarna för del ett och slutfört stegen i del två.

Träna två modeller

Om du vill hitta den bästa modellen för skiduthyrningsdata skapar du två olika modeller (linjär regression och beslutsträd) och ser vilken som förutsäger mer exakt. Du använder den dataram rentaldata som du skapade i del ett av den här serien.

#First, split the dataset into two different sets:
# one for training the model and the other for validating it
train_data = rentaldata[rentaldata$Year < 2015,];
test_data  = rentaldata[rentaldata$Year == 2015,];


#Use the RentalCount column to check the quality of the prediction against actual values
actual_counts <- test_data$RentalCount;

#Model 1: Use lm to create a linear regression model, trained with the training data set
model_lm <- lm(RentalCount ~  Month + Day + WeekDay + Snow + Holiday, data = train_data);

#Model 2: Use rpart to create a decision tree model, trained with the training data set
library(rpart);
model_rpart  <- rpart(RentalCount ~ Month + Day + WeekDay + Snow + Holiday, data = train_data);

Göra förutsägelser från båda modellerna

Använd en förutsägelsefunktion för att förutsäga antalet uthyrningar med varje tränad modell.

#Use both models to make predictions using the test data set.
predict_lm <- predict(model_lm, test_data)
predict_lm <- data.frame(RentalCount_Pred = predict_lm, RentalCount = test_data$RentalCount, 
                         Year = test_data$Year, Month = test_data$Month,
                         Day = test_data$Day, Weekday = test_data$WeekDay,
                         Snow = test_data$Snow, Holiday = test_data$Holiday)

predict_rpart  <- predict(model_rpart,  test_data)
predict_rpart <- data.frame(RentalCount_Pred = predict_rpart, RentalCount = test_data$RentalCount, 
                         Year = test_data$Year, Month = test_data$Month,
                         Day = test_data$Day, Weekday = test_data$WeekDay,
                         Snow = test_data$Snow, Holiday = test_data$Holiday)

#To verify it worked, look at the top rows of the two prediction data sets.
head(predict_lm);
head(predict_rpart);

Här är resultatet.

    RentalCount_Pred  RentalCount  Month  Day  WeekDay  Snow  Holiday
1         27.45858          42       2     11     4      0       0
2        387.29344         360       3     29     1      0       0
3         16.37349          20       4     22     4      0       0
4         31.07058          42       3      6     6      0       0
5        463.97263         405       2     28     7      1       0
6        102.21695          38       1     12     2      1       0
    RentalCount_Pred  RentalCount  Month  Day  WeekDay  Snow  Holiday
1          40.0000          42       2     11     4      0       0
2         332.5714         360       3     29     1      0       0
3          27.7500          20       4     22     4      0       0
4          34.2500          42       3      6     6      0       0
5         645.7059         405       2     28     7      1       0
6          40.0000          38       1     12     2      1       0

Jämför resultaten

Nu vill du se vilka av modellerna som ger de bästa förutsägelserna. Ett snabbt och enkelt sätt att göra detta är att använda en grundläggande ritningsfunktion för att visa skillnaden mellan de faktiska värdena i dina träningsdata och de förutsagda värdena.

#Use the plotting functionality in R to visualize the results from the predictions
par(mfrow = c(1, 1));
plot(predict_lm$RentalCount_Pred - predict_lm$RentalCount, main = "Difference between actual and predicted. lm")
plot(predict_rpart$RentalCount_Pred  - predict_rpart$RentalCount,  main = "Difference between actual and predicted. rpart")

Jämföra de två modellerna

Det verkar som om beslutsträdsmodellen är den mer exakta av de två modellerna.

Rensa resurser

Om du inte ska fortsätta med den här självstudien tar du bort databasen TutorialDB.

Nästa steg

I del tre i den här självstudieserien lärde du dig att:

  • Träna två maskininlärningsmodeller
  • Göra förutsägelser från båda modellerna
  • Jämför resultaten för att välja den mest exakta modellen

Om du vill distribuera den maskininlärningsmodell som du har skapat följer du del fyra i den här självstudieserien: