# Import data set
dataset <- read.csv("G:\\RStudio\\udemy\\ml\\Machine Learning AZ\\Part 2 - Regression\\Section 9 - Random Forest Regression\\Random_Forest_Regression\\Position_Salaries.csv")
# We want to use only columns 2 and 3
dataset <- dataset[2:3]
head(dataset)
# Polynomial Regression
# taking care of missing values
# Test for missing values
sum(is.na(dataset$Level))
[1] 0
sum(is.na(dataset$Salary))
[1] 0
There is no missing values in the dataset. The while the next step should be to split the dataset, since this dataset is small, we will use the full dataset.
# feature scaling
# in this case for polynomial, not needed for feature scaling.
# Fitting the regression model
# add a new column in the dataframe
# install.package("randomforest")
library(randomForest)
set.seed(1234)
regressor <- randomForest(x = dataset[1], y = dataset$Salary,
ntree = 10)
# predicting a new result
y_pred <- predict(regressor, data.frame(Level = 6.5))
y_pred
1
141733.3
# Plot
library(ggplot2)
# visualizing regression using higher resolution
x_grid = seq(min(dataset$Level), max(dataset$Level), 0.1 )
ggplot() +
geom_point(aes(x = dataset$Level, y = dataset$Salary), colour = "red") +
geom_line(aes(x = x_grid, y = predict(regressor, newdata = data.frame(Level = x_grid))), colour = "blue")+
ggtitle("Truth or Bluff (Regression Model)") +
xlab("Levels") +
ylab("Salary")

# Many more forest
regressor <- randomForest(x = dataset[1], y = dataset$Salary,
ntree = 100)
x_grid = seq(min(dataset$Level), max(dataset$Level), 0.1 )
ggplot() +
geom_point(aes(x = dataset$Level, y = dataset$Salary), colour = "red") +
geom_line(aes(x = x_grid, y = predict(regressor, newdata = data.frame(Level = x_grid))), colour = "blue")+
ggtitle("Truth or Bluff (Regression Model)") +
xlab("Levels") +
ylab("Salary")

y_pred <- predict(regressor, data.frame(Level = 6.5))
y_pred
1
160942.5
# Many more forest at 500
regressor <- randomForest(x = dataset[1], y = dataset$Salary,
ntree = 500)
x_grid = seq(min(dataset$Level), max(dataset$Level), 0.1 )
ggplot() +
geom_point(aes(x = dataset$Level, y = dataset$Salary), colour = "red") +
geom_line(aes(x = x_grid, y = predict(regressor, newdata = data.frame(Level = x_grid))), colour = "blue")+
ggtitle("Truth or Bluff (Regression Model)") +
xlab("Levels") +
ylab("Salary")

y_pred <- predict(regressor, data.frame(Level = 6.5))
y_pred
1
162591.5
LS0tDQp0aXRsZTogIk1MIFVzaW5nIFIgU0VjdGlvbiA5IFJhbmRvbSBGb3Jlc3QgIg0Kb3V0cHV0OiBodG1sX25vdGVib29rDQotLS0NCmBgYHtyfQ0KIyBJbXBvcnQgZGF0YSBzZXQNCmRhdGFzZXQgPC0gIHJlYWQuY3N2KCJHOlxcUlN0dWRpb1xcdWRlbXlcXG1sXFxNYWNoaW5lIExlYXJuaW5nIEFaXFxQYXJ0IDIgLSBSZWdyZXNzaW9uXFxTZWN0aW9uIDkgLSBSYW5kb20gRm9yZXN0IFJlZ3Jlc3Npb25cXFJhbmRvbV9Gb3Jlc3RfUmVncmVzc2lvblxcUG9zaXRpb25fU2FsYXJpZXMuY3N2IikNCiMgV2Ugd2FudCB0byB1c2Ugb25seSBjb2x1bW5zIDIgYW5kIDMNCmRhdGFzZXQgPC0gIGRhdGFzZXRbMjozXQ0KaGVhZChkYXRhc2V0KQ0KDQpgYGANCg0KYGBge3J9DQojIFBvbHlub21pYWwgUmVncmVzc2lvbg0KIyB0YWtpbmcgY2FyZSBvZiBtaXNzaW5nIHZhbHVlcw0KIyBUZXN0IGZvciBtaXNzaW5nIHZhbHVlcw0Kc3VtKGlzLm5hKGRhdGFzZXQkTGV2ZWwpKQ0Kc3VtKGlzLm5hKGRhdGFzZXQkU2FsYXJ5KSkNCmBgYA0KDQpUaGVyZSBpcyBubyBtaXNzaW5nIHZhbHVlcyBpbiB0aGUgZGF0YXNldC4gDQpUaGUgd2hpbGUgdGhlIG5leHQgc3RlcCBzaG91bGQgYmUgdG8gc3BsaXQgdGhlIGRhdGFzZXQsIHNpbmNlIHRoaXMgZGF0YXNldCBpcyBzbWFsbCwgd2Ugd2lsbCB1c2UgdGhlIGZ1bGwgZGF0YXNldC4gDQoNCmBgYHtyfQ0KIyBmZWF0dXJlIHNjYWxpbmcNCiMgaW4gdGhpcyBjYXNlIGZvciBwb2x5bm9taWFsLCBub3QgbmVlZGVkIGZvciBmZWF0dXJlIHNjYWxpbmcuIA0KDQpgYGANCg0KDQoNCmBgYHtyfQ0KIyBGaXR0aW5nIHRoZSAgcmVncmVzc2lvbiBtb2RlbA0KIyBhZGQgYSBuZXcgY29sdW1uIGluIHRoZSBkYXRhZnJhbWUNCiMgaW5zdGFsbC5wYWNrYWdlKCJyYW5kb21mb3Jlc3QiKQ0KbGlicmFyeShyYW5kb21Gb3Jlc3QpDQpzZXQuc2VlZCgxMjM0KQ0KcmVncmVzc29yIDwtIHJhbmRvbUZvcmVzdCh4ID0gZGF0YXNldFsxXSwgeSA9IGRhdGFzZXQkU2FsYXJ5LCANCiAgICAgICAgICAgICAgICAgICAgICAgICAgbnRyZWUgPSAxMCkNCg0KIyBwcmVkaWN0aW5nIGEgbmV3IHJlc3VsdCANCnlfcHJlZCA8LSAgcHJlZGljdChyZWdyZXNzb3IsIGRhdGEuZnJhbWUoTGV2ZWwgPSA2LjUpKQ0KeV9wcmVkDQoNCiMgUGxvdA0KbGlicmFyeShnZ3Bsb3QyKQ0KDQoNCmBgYA0KDQoNCmBgYHtyfQ0KIyB2aXN1YWxpemluZyByZWdyZXNzaW9uIHVzaW5nIGhpZ2hlciByZXNvbHV0aW9uDQoNCnhfZ3JpZCA9IHNlcShtaW4oZGF0YXNldCRMZXZlbCksIG1heChkYXRhc2V0JExldmVsKSwgMC4xICkNCmdncGxvdCgpICsNCiAgZ2VvbV9wb2ludChhZXMoeCA9IGRhdGFzZXQkTGV2ZWwsIHkgPSBkYXRhc2V0JFNhbGFyeSksIGNvbG91ciA9ICJyZWQiKSArDQogIGdlb21fbGluZShhZXMoeCA9IHhfZ3JpZCwgeSA9IHByZWRpY3QocmVncmVzc29yLCBuZXdkYXRhID0gZGF0YS5mcmFtZShMZXZlbCA9IHhfZ3JpZCkpKSwgY29sb3VyID0gImJsdWUiKSsNCiAgZ2d0aXRsZSgiVHJ1dGggb3IgQmx1ZmYgKFJlZ3Jlc3Npb24gTW9kZWwpIikgKw0KICB4bGFiKCJMZXZlbHMiKSArDQogIHlsYWIoIlNhbGFyeSIpDQpgYGANCg0KDQpgYGB7cn0NCiMgTWFueSBtb3JlIGZvcmVzdA0KcmVncmVzc29yIDwtIHJhbmRvbUZvcmVzdCh4ID0gZGF0YXNldFsxXSwgeSA9IGRhdGFzZXQkU2FsYXJ5LCANCiAgICAgICAgICAgICAgICAgICAgICAgICAgbnRyZWUgPSAxMDApDQoNCnhfZ3JpZCA9IHNlcShtaW4oZGF0YXNldCRMZXZlbCksIG1heChkYXRhc2V0JExldmVsKSwgMC4xICkNCmdncGxvdCgpICsNCiAgZ2VvbV9wb2ludChhZXMoeCA9IGRhdGFzZXQkTGV2ZWwsIHkgPSBkYXRhc2V0JFNhbGFyeSksIGNvbG91ciA9ICJyZWQiKSArDQogIGdlb21fbGluZShhZXMoeCA9IHhfZ3JpZCwgeSA9IHByZWRpY3QocmVncmVzc29yLCBuZXdkYXRhID0gZGF0YS5mcmFtZShMZXZlbCA9IHhfZ3JpZCkpKSwgY29sb3VyID0gImJsdWUiKSsNCiAgZ2d0aXRsZSgiVHJ1dGggb3IgQmx1ZmYgKFJlZ3Jlc3Npb24gTW9kZWwpIikgKw0KICB4bGFiKCJMZXZlbHMiKSArDQogIHlsYWIoIlNhbGFyeSIpDQoNCg0KeV9wcmVkIDwtICBwcmVkaWN0KHJlZ3Jlc3NvciwgZGF0YS5mcmFtZShMZXZlbCA9IDYuNSkpDQp5X3ByZWQNCmBgYA0KYGBge3J9DQojIE1hbnkgbW9yZSBmb3Jlc3QgYXQgNTAwDQpyZWdyZXNzb3IgPC0gcmFuZG9tRm9yZXN0KHggPSBkYXRhc2V0WzFdLCB5ID0gZGF0YXNldCRTYWxhcnksIA0KICAgICAgICAgICAgICAgICAgICAgICAgICBudHJlZSA9IDUwMCkNCg0KeF9ncmlkID0gc2VxKG1pbihkYXRhc2V0JExldmVsKSwgbWF4KGRhdGFzZXQkTGV2ZWwpLCAwLjEgKQ0KZ2dwbG90KCkgKw0KICBnZW9tX3BvaW50KGFlcyh4ID0gZGF0YXNldCRMZXZlbCwgeSA9IGRhdGFzZXQkU2FsYXJ5KSwgY29sb3VyID0gInJlZCIpICsNCiAgZ2VvbV9saW5lKGFlcyh4ID0geF9ncmlkLCB5ID0gcHJlZGljdChyZWdyZXNzb3IsIG5ld2RhdGEgPSBkYXRhLmZyYW1lKExldmVsID0geF9ncmlkKSkpLCBjb2xvdXIgPSAiYmx1ZSIpKw0KICBnZ3RpdGxlKCJUcnV0aCBvciBCbHVmZiAoUmVncmVzc2lvbiBNb2RlbCkiKSArDQogIHhsYWIoIkxldmVscyIpICsNCiAgeWxhYigiU2FsYXJ5IikNCg0KDQp5X3ByZWQgPC0gIHByZWRpY3QocmVncmVzc29yLCBkYXRhLmZyYW1lKExldmVsID0gNi41KSkNCnlfcHJlZA0KYGBgDQoNCg0K