Delen via


Zelfstudie: Een voorspellend model maken in R met SQL Machine Learning

Van toepassing op: SQL Server 2016 (13.x) en latere versies van Azure SQL Managed Instance

In deel drie van deze vierdelige reeks zelfstudies traint u een voorspellend model in R. In het volgende deel van deze reeks implementeert u dit model in een SQL Server-database met Machine Learning Services of op Big Data-clusters.

In deel drie van deze vierdelige reeks zelfstudies traint u een voorspellend model in R. In het volgende deel van deze reeks implementeert u dit model in een SQL Server-database met Machine Learning Services.

In deel drie van deze vierdelige reeks zelfstudies traint u een voorspellend model in R. In het volgende deel van deze reeks implementeert u dit model in een database met SQL Server R Services.

In deel drie van deze vierdelige reeks zelfstudies traint u een voorspellend model in R. In het volgende deel van deze reeks implementeert u dit model in een Azure SQL Managed Instance-database met Machine Learning Services.

In dit artikel leert u het volgende:

  • Twee machine learning-modellen trainen
  • Voorspellingen maken van beide modellen
  • Vergelijk de resultaten om het meest nauwkeurige model te kiezen

In deel 1 hebt u geleerd hoe u de voorbeelddatabase kunt herstellen.

In deel twee hebt u geleerd hoe u de gegevens uit een database in een Python-gegevensframe laadt en de gegevens voorbereidt in R.

In deel vier leert u hoe u het model opslaat in een database en vervolgens opgeslagen procedures maakt op basis van de Python-scripts die u in deel twee en drie hebt ontwikkeld. De opgeslagen procedures worden uitgevoerd op de server om voorspellingen te doen op basis van nieuwe gegevens.

Prerequisites

In deel drie van deze reeks zelfstudies wordt ervan uitgegaan dat u aan de vereisten van deel 1 hebt voldaan en dat u de stappen in deel twee hebt voltooid.

Twee modellen trainen

Als u het beste model voor de skiverhuurgegevens wilt vinden, maakt u twee verschillende modellen (lineaire regressie en beslissingsstructuur) en bekijkt u welke model nauwkeuriger voorspelt. U gebruikt het gegevensframe rentaldata dat u hebt gemaakt in deel één van deze reeks.

#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);

Voorspellingen maken van beide modellen

Gebruik een voorspellingsfunctie om de huuraantallen te voorspellen met behulp van elk getraind model.

#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);

Hier is het resultatenoverzicht.

    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

De resultaten vergelijken

Nu wilt u zien welke van de modellen de beste voorspellingen geeft. Een snelle en eenvoudige manier om dit te doen, is door een eenvoudige plottingfunctie te gebruiken om het verschil tussen de werkelijke waarden in uw trainingsgegevens en de voorspelde waarden weer te geven.

#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")

De twee modellen vergelijken

Het lijkt erop dat het beslissingsstructuurmodel des te nauwkeuriger is van de twee modellen.

De hulpbronnen opschonen

Als u niet verdergaat met deze zelfstudie, verwijdert u de TutorialDB-database.

Volgende stappen

In deel drie van deze reeks zelfstudies hebt u geleerd hoe u het volgende kunt doen:

  • Twee machine learning-modellen trainen
  • Voorspellingen maken van beide modellen
  • Vergelijk de resultaten om het meest nauwkeurige model te kiezen

Als u het machine learning-model wilt implementeren dat u hebt gemaakt, volgt u deel vier van deze reeks zelfstudies: