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==