Я работаю над заданием, и у меня возникают проблемы с пониманием документации и использования R в отношении конкретных наборов данных Мой учитель хочет, чтобы мы использовали код примера книги в качестве основы, которую я пытаюсь изменить для этого набора данных. Вот полный список того, что я должен делать.
1. Разделите набор данных на 60% обучающих и 40% проверочных наборов, учитывая информацию о следующем клиенте:
Возраст = 40, Опыт = 10, Доход = 84, Семья = 2, CCAvg = 2, Education_1 = 0, Education_2 = 1, Education_3 = 0, Ипотека = 0, Счет ценных бумаг = 0, Счет CD = 0, Онлайн = 1, и кредитная карта = 1.
2. Выполните классификацию k-NN со всеми предикторами, кроме ID и почтового индекса, используя k = 1. Не забудьте сначала преобразовать категориальные предикторы с более чем двумя категориями в фиктивные переменные.
3.Укажите класс успеха как 1 (принятие кредита) и используйте значение отсечения по умолчанию, равное 0,5. Как будет классифицирован этот клиент?
4. Скажите, как выбрать k, который балансирует между переобучением и игнорированием информации предиктора?
5.Показать матрицу путаницы для данных проверки, полученных в результате использования лучшего k. Тогда
Consider the following customer:
Age = 40, Experience = 10, Income = 84, Family = 2, CCAvg = 2, Education_1 = 0, Education_2 = 1, Education_3 = 0, Mortgage = 0, Securities Account = 0, CD Account = 0, Online = 1 and Credit Card = 1.
6.Классифицируйте вышеупомянутого клиента, используя лучшее k.
7.Передайте данные, на этот раз в наборы для обучения, проверки и тестирования (50%: 30%: 20%).
8. Примените метод k-NN с выбранным выше k.
9.Сравните матрицу путаницы тестового набора с матрицей обучения и проверки.
10. Комментарий о различиях и их причинах.
Я столкнулся с проблемой, из-за которой я не уверен, что правильно конвертирую в макеты, используя MLR, тогда я вижу эту ошибку:
Ошибка в [.data.frame
(новые данные, объект $ method $ center, drop = FALSE):
выбраны неопределенные столбцы
Я спросил своего профессора о фиктивных переменных. Он сказал мне использовать MLR для манекенов (сначала преобразуйте категориальные предикторы с более чем двумя категориями в фиктивные переменные). Он очень занят и отправляет меня обратно к документации. К сожалению, я не очень понимаю документацию. Он пытался ответить на мои вопросы, но я не понимаю всю картину.
#### Figure 7.1
set.seed(111)
library(mlr)
train.index <- sample(row.names(UniversalBank), 0.6*dim(UniversalBank)[1:14])
valid.index <- setdiff(row.names(UniversalBank), train.index)
train.df <- UniversalBank[train.index, ]
valid.df <- UniversalBank[valid.index, ]
createDummyFeatures(train.df, method = "1-of-n")
createDummyFeatures(valid.df, method = "1-of-n")
## new family
new.df <- data.frame(Age = 40, Experience = 10, Income = 84, Family = 2, CCAvg = 2, Education_1 = 0, Education_2 = 1, Education_3 = 0, Mortgage = 0, Securities.Account = 0, CD.Account = 0, Online = 1, CreditCard = 1)
#### Table 7.2
library(caret)
# initialize normalized training, validation data, complete data frames to originals
train.norm.df <- train.df
valid.norm.df <- valid.df
bh.norm.df <- UniversalBank
# use preProcess() from the caret package to normalize
norm.values <- preProcess(train.df[, 1:14], method=c("center", "scale"))
train.norm.df[, 1:14] <- predict(norm.values, train.df[, 1:14])
valid.norm.df[, 1:14] <- predict(norm.values, valid.df[, 1:14])
bh.norm.df[, 1:14] <- predict(norm.values, UniversalBank[, 1:14])
new.norm.df <- predict(norm.values, new.df)
# use knn() to compute knn.
# knn() is available in library FNN (provides a list of the nearest neighbors)
# and library class (allows a numerical output variable).
library(FNN)
nn <- knn(train = train.norm.df[,cols], test = new.norm.df,
cl = train.norm.df[, 3], k = 1)
row.names(train.df)[attr(nn, "nn.index")]
Похоже, я подхожу к точке
new.norm.df <- predict(norm.values,new.df)
до появления ошибки. Мне нужно устранить ошибку, убедиться, что я получаю правильные данные, и перейти к функции knn (). Я хотел бы понять ошибку, почему я ее получаю, и как я могу ее устранить и избежать в будущем.