Lab 8
library(tidymodels)
#1. Is this a supervised or unsupervised learning problem? Why?
Supervised- predicting cmv
#2. There are 16 variables in this data set. Which variable is the
response variable and which variables are the predictor variables (aka
features)? Response Variable - cmedv (median value of owner occupied
homes in USD 1000s) Predictor Variables - lon, lat, crim, zn, indus,
chas, nox, rm, age, dis, rad, tax, ptratio, lstat
#3. Given the type of variable cmedv is, is this a regression or
classification problem? regression
#4. Fill in the blanks to import the Boston housing data set
(boston.csv). Are there any missing values? # What is the minimum and
maximum values of cmedv? What is the average cmedv value?
sum(is.na(boston)) 0
min(boston$cmedv) 5
max(boston$cmedv) 50
mean(boston$cmedv) 22.52885
median(boston$cmedv) 21.2
boston <- readr::read_csv(“~/uc-bana-4080/Weekly Items/Week
8/data/boston.csv”)
#5. Fill in the blanks to split the data into a training set and test
set using a 70-30% split. Be sure to #include the set.seed(123) so that
your train and test sets are the same size as mine.
set.seed(123) split <- initial_split(boston, prop = 0.7, strata =
cmedv) train <- training(split) test <- testing(split)
#6. How many observations are in the training set and test set?
dim(train) 352 by 16
dim(test) 154 by 16
7. Compare the distribution of cmedv between the training set and
test set. Do they appear to have the
#same distribution or do they differ significantly?
ggplot(train, aes(x = cmedv)) + geom_line(stat =“density”, trim =
TRUE, col = “pink”) + geom_line(data = test, stat = “density”, trim =
TRUE, col = “green”)
same
# 8. Fill in the blanks to fit a linear regression model using the rm
feature variable to predict cmedv and #compute the RMSE on the test
data. What is the test set RMSE? # fit model
lm1 <- linear_reg() %>% fit(cmedv ~ rm, data = train)
compute the RMSE on the test data
lm1 %>% predict(test) %>% bind_cols(test %>% select(cmedv))
%>% rmse(truth = cmedv, estimate = .pred)
6.83
#9. Fill in the blanks to fit a linear regression model using all
available features to predict cmedv and #compute the RMSE on the test
data. What is the test set RMSE? Is this better than the previous
#model’s performance?
fit model
lm2 <- linear_reg() %>% fit(cmedv ~ ., data = train)
compute the RMSE on the test data
lm2 %>% predict(test) %>% bind_cols(test %>% select(cmedv))
%>% rmse(truth = cmedv, estimate = .pred)
4.83 yes
#10. Fit a K-nearest neighbor model that uses all available features
to predict cmedv and compute the #RMSE on the test data. What is the
test set RMSE? Is this better than the previous two models’
#performances? # fit model
install.packages(‘kknn’) knn <- nearest_neighbor() %>%
set_engine(“kknn”) %>% set_mode(“regression”) %>% fit(cmedv ~ .,
data = train)
compute the RMSE on the test data
knn %>% predict(test) %>% bind_cols(test %>% select(cmedv))
%>% rmse(truth = cmedv, estimate = .pred)
3.37
LS0tDQp0aXRsZTogIlIgTm90ZWJvb2siDQpvdXRwdXQ6IGh0bWxfbm90ZWJvb2sNCi0tLQ0KTGFiIDggDQoNCmxpYnJhcnkodGlkeW1vZGVscykNCg0KDQojMS4gSXMgdGhpcyBhIHN1cGVydmlzZWQgb3IgdW5zdXBlcnZpc2VkIGxlYXJuaW5nIHByb2JsZW0/IFdoeT8gDQpTdXBlcnZpc2VkLSBwcmVkaWN0aW5nIGNtdiANCg0KIzIuIFRoZXJlIGFyZSAxNiB2YXJpYWJsZXMgaW4gdGhpcyBkYXRhIHNldC4gV2hpY2ggdmFyaWFibGUgaXMgdGhlIHJlc3BvbnNlIHZhcmlhYmxlIGFuZCB3aGljaCB2YXJpYWJsZXMgYXJlIHRoZSBwcmVkaWN0b3IgdmFyaWFibGVzIChha2EgZmVhdHVyZXMpPw0KUmVzcG9uc2UgVmFyaWFibGUgLSBjbWVkdiAobWVkaWFuIHZhbHVlIG9mIG93bmVyIG9jY3VwaWVkIGhvbWVzIGluIFVTRCAxMDAwcykNClByZWRpY3RvciBWYXJpYWJsZXMgLSBsb24sIGxhdCwgY3JpbSwgem4sIGluZHVzLCBjaGFzLCBub3gsIHJtLCBhZ2UsIGRpcywgcmFkLCB0YXgsIHB0cmF0aW8sIGxzdGF0DQoNCiMzLiBHaXZlbiB0aGUgdHlwZSBvZiB2YXJpYWJsZSBjbWVkdiBpcywgaXMgdGhpcyBhIHJlZ3Jlc3Npb24gb3IgY2xhc3NpZmljYXRpb24gcHJvYmxlbT8NCnJlZ3Jlc3Npb24gDQoNCiM0LiBGaWxsIGluIHRoZSBibGFua3MgdG8gaW1wb3J0IHRoZSBCb3N0b24gaG91c2luZyBkYXRhIHNldCAoYm9zdG9uLmNzdikuIEFyZSB0aGVyZSBhbnkgbWlzc2luZyB2YWx1ZXM/DQojIFdoYXQgaXMgdGhlIG1pbmltdW0gYW5kIG1heGltdW0gdmFsdWVzIG9mIGNtZWR2PyBXaGF0IGlzIHRoZSBhdmVyYWdlIGNtZWR2IHZhbHVlPw0KDQpzdW0oaXMubmEoYm9zdG9uKSkNCjAgDQoNCg0KbWluKGJvc3RvbiRjbWVkdikNCjUNCg0KbWF4KGJvc3RvbiRjbWVkdikNCjUwDQoNCm1lYW4oYm9zdG9uJGNtZWR2KQ0KMjIuNTI4ODUNCg0KbWVkaWFuKGJvc3RvbiRjbWVkdikNCjIxLjINCiAgDQogIGJvc3RvbiA8LSByZWFkcjo6cmVhZF9jc3YoIn4vdWMtYmFuYS00MDgwL1dlZWtseSBJdGVtcy9XZWVrIDgvZGF0YS9ib3N0b24uY3N2IikNCg0KIzUuIEZpbGwgaW4gdGhlIGJsYW5rcyB0byBzcGxpdCB0aGUgZGF0YSBpbnRvIGEgdHJhaW5pbmcgc2V0IGFuZCB0ZXN0IHNldCB1c2luZyBhIDcwLTMwJSBzcGxpdC4gQmUgc3VyZSB0bw0KI2luY2x1ZGUgdGhlIHNldC5zZWVkKDEyMykgc28gdGhhdCB5b3VyIHRyYWluIGFuZCB0ZXN0IHNldHMgYXJlIHRoZSBzYW1lIHNpemUgYXMgbWluZS4NCg0Kc2V0LnNlZWQoMTIzKQ0Kc3BsaXQgPC0gaW5pdGlhbF9zcGxpdChib3N0b24sIHByb3AgPSAwLjcsIHN0cmF0YSA9IGNtZWR2KQ0KdHJhaW4gPC0gdHJhaW5pbmcoc3BsaXQpDQp0ZXN0IDwtIHRlc3Rpbmcoc3BsaXQpDQoNCiM2LiBIb3cgbWFueSBvYnNlcnZhdGlvbnMgYXJlIGluIHRoZSB0cmFpbmluZyBzZXQgYW5kIHRlc3Qgc2V0Pw0KZGltKHRyYWluKSANCjM1MiBieSAxNg0KDQpkaW0odGVzdCkgDQoxNTQgYnkgMTYNCg0KIyA3LiBDb21wYXJlIHRoZSBkaXN0cmlidXRpb24gb2YgY21lZHYgYmV0d2VlbiB0aGUgdHJhaW5pbmcgc2V0IGFuZCB0ZXN0IHNldC4gRG8gdGhleSBhcHBlYXIgdG8gaGF2ZSB0aGUNCiNzYW1lIGRpc3RyaWJ1dGlvbiBvciBkbyB0aGV5IGRpZmZlciBzaWduaWZpY2FudGx5Pw0KDQpnZ3Bsb3QodHJhaW4sIGFlcyh4ID0gY21lZHYpKSArDQogIGdlb21fbGluZShzdGF0ID0iZGVuc2l0eSIsIHRyaW0gPSBUUlVFLCBjb2wgPSAicGluayIpICsNCiAgZ2VvbV9saW5lKGRhdGEgPSB0ZXN0LCBzdGF0ID0gImRlbnNpdHkiLCB0cmltID0gVFJVRSwgY29sID0gImdyZWVuIikNCg0Kc2FtZQ0KDQogIyA4LiBGaWxsIGluIHRoZSBibGFua3MgdG8gZml0IGEgbGluZWFyIHJlZ3Jlc3Npb24gbW9kZWwgdXNpbmcgdGhlIHJtIGZlYXR1cmUgdmFyaWFibGUgdG8gcHJlZGljdCBjbWVkdiBhbmQNCiNjb21wdXRlIHRoZSBSTVNFIG9uIHRoZSB0ZXN0IGRhdGEuIFdoYXQgaXMgdGhlIHRlc3Qgc2V0IFJNU0U/DQogICMgZml0IG1vZGVsDQogIA0KICBsbTEgPC0gbGluZWFyX3JlZygpICU+JQ0KICAgIGZpdChjbWVkdiB+IHJtLCBkYXRhID0gdHJhaW4pDQoNCiMgY29tcHV0ZSB0aGUgUk1TRSBvbiB0aGUgdGVzdCBkYXRhDQoNCmxtMSAlPiUNCiAgcHJlZGljdCh0ZXN0KSAlPiUNCiAgYmluZF9jb2xzKHRlc3QgJT4lIHNlbGVjdChjbWVkdikpICU+JQ0KICBybXNlKHRydXRoID0gY21lZHYsIGVzdGltYXRlID0gLnByZWQpDQoNCjYuODMNCg0KIzkuIEZpbGwgaW4gdGhlIGJsYW5rcyB0byBmaXQgYSBsaW5lYXIgcmVncmVzc2lvbiBtb2RlbCB1c2luZyBhbGwgYXZhaWxhYmxlIGZlYXR1cmVzIHRvIHByZWRpY3QgY21lZHYgYW5kDQojY29tcHV0ZSB0aGUgUk1TRSBvbiB0aGUgdGVzdCBkYXRhLiBXaGF0IGlzIHRoZSB0ZXN0IHNldCBSTVNFPyBJcyB0aGlzIGJldHRlciB0aGFuIHRoZSBwcmV2aW91cw0KI21vZGVs4oCZcyBwZXJmb3JtYW5jZT8NCiAgDQojIGZpdCBtb2RlbA0KbG0yIDwtIGxpbmVhcl9yZWcoKSAlPiUNCiAgZml0KGNtZWR2IH4gLiwgZGF0YSA9IHRyYWluKQ0KDQojIGNvbXB1dGUgdGhlIFJNU0Ugb24gdGhlIHRlc3QgZGF0YQ0KDQpsbTIgJT4lDQogIHByZWRpY3QodGVzdCkgJT4lDQogIGJpbmRfY29scyh0ZXN0ICU+JSBzZWxlY3QoY21lZHYpKSAlPiUNCiAgcm1zZSh0cnV0aCA9IGNtZWR2LCBlc3RpbWF0ZSA9IC5wcmVkKQ0KDQo0LjgzIHllcyANCg0KIzEwLiBGaXQgYSBLLW5lYXJlc3QgbmVpZ2hib3IgbW9kZWwgdGhhdCB1c2VzIGFsbCBhdmFpbGFibGUgZmVhdHVyZXMgdG8gcHJlZGljdCBjbWVkdiBhbmQgY29tcHV0ZSB0aGUNCiNSTVNFIG9uIHRoZSB0ZXN0IGRhdGEuIFdoYXQgaXMgdGhlIHRlc3Qgc2V0IFJNU0U/IElzIHRoaXMgYmV0dGVyIHRoYW4gdGhlIHByZXZpb3VzIHR3byBtb2RlbHPigJkNCiNwZXJmb3JtYW5jZXM/DQogICMgZml0IG1vZGVsDQogIA0KaW5zdGFsbC5wYWNrYWdlcygna2tubicpDQogIGtubiA8LSBuZWFyZXN0X25laWdoYm9yKCkgJT4lDQogICAgc2V0X2VuZ2luZSgia2tubiIpICU+JQ0KICAgIHNldF9tb2RlKCJyZWdyZXNzaW9uIikgJT4lDQogICAgZml0KGNtZWR2IH4gLiwgZGF0YSA9IHRyYWluKQ0KICANCiMgY29tcHV0ZSB0aGUgUk1TRSBvbiB0aGUgdGVzdCBkYXRhDQogIGtubiAlPiUNCiAgICBwcmVkaWN0KHRlc3QpICU+JQ0KICAgIGJpbmRfY29scyh0ZXN0ICU+JSBzZWxlY3QoY21lZHYpKSAlPiUNCiAgICBybXNlKHRydXRoID0gY21lZHYsIGVzdGltYXRlID0gLnByZWQpDQoNCiAgMy4zNw==