Как исправить проблему с фиктивными значениями, используя MLR, а также ошибку R для выбранных неопределенных столбцов - PullRequest
0 голосов
/ 05 апреля 2019

Я работаю над заданием, и у меня возникают проблемы с пониманием документации и использования 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 (). Я хотел бы понять ошибку, почему я ее получаю, и как я могу ее устранить и избежать в будущем.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...