Функция dummyVars, возвращающая двойные значения типа данных - PullRequest
0 голосов
/ 03 июня 2019

Следующий код пытается использовать функцию dummyVars в пакете caret.Это код .rmd, в котором используется набор данных, доступный в пакете ggplot2, поэтому его можно полностью реплицировать.

```{r}
#rm(list = ls())
```

```{r}
library(ggplot2)
```

```{r}
data("diamonds")
```

```{r}
data <- diamonds
summary(data)
str(data)
```
```{r}
library(caret)
```

```{r}
dmy <- dummyVars(formula = ~ cut + color + clarity, 
                 data = data, 
                 fullRank = FALSE)

b.vars <- data.frame(predict(dmy, newdata = data))

head(b.vars, n = 10)
```

b.vars должен быть фреймом данных фиктивных переменных (0 и 1), но этовозвращает двойные значения, такие как 0.6324555.Кроме того, имена столбцов в b.vars неверны. Например, есть «cut.L» вместо «cut.fair»

Это тот же процесс, который я использовал в прошлом, и я непонимаю, что я делаю не так.Может ли кто-нибудь указать на мою ошибку.Спасибо!

1 Ответ

0 голосов
/ 03 июня 2019
library(ggplot2)
library(caret)
data("diamonds")
data <- diamonds
data
summary(data)
str(data)

data$cut <- as.factor(as.character(data$cut))
data$clarity <- as.factor(as.character(data$clarity))
data$color <- as.factor(as.character(data$color))


sapply(data, class)


dmy <- dummyVars(formula = ~ cut + color + clarity, 
                 data = data, 
                 fullRank = TRUE)
    b.vars <- data.frame(predict(dmy, newdata = data))
head(b.vars, n = 10)

   cut.Good cut.Ideal cut.Premium cut.Very.Good color.E color.F color.G color.H color.I color.J clarity.IF clarity.SI1 clarity.SI2 clarity.VS1 clarity.VS2 clarity.VVS1
1         0         1           0             0       1       0       0       0       0       0          0           0           1           0           0            0
2         0         0           1             0       1       0       0       0       0       0          0           1           0           0           0            0
3         1         0           0             0       1       0       0       0       0       0          0           0           0           1           0            0
4         0         0           1             0       0       0       0       0       1       0          0           0           0           0           1            0
5         1         0           0             0       0       0       0       0       0       1          0           0           1           0           0            0
6         0         0           0             1       0       0       0       0       0       1          0           0           0           0           0            0
7         0         0           0             1       0       0       0       0       1       0          0           0           0           0           0            1
8         0         0           0             1       0       0       0       1       0       0          0           1           0           0           0            0
9         0         0           0             0       1       0       0       0       0       0          0           0           0           0           1            0
10        0         0           0             1       0       0       0       1       0       0          0           0           0           1           0            0
   clarity.VVS2
1             0
2             0
3             0
4             0
5             0
6             1
7             0
8             0
9             0
10            0

Избавьтесь от «упорядоченного» класса ваших переменных. Вы можете сделать это, сначала преобразовав переменную в символ и обратно на множитель на лету.

...