Таблица R для оценки производительности модели - наблюдаемый и прогнозируемый класс - PullRequest
1 голос
/ 16 марта 2012

Я использую прогноз одной переменной с 10 уровнями и использую rpart для классификации. Определенный код формирования таблицы

as.vector (т (таблица (предсказать (bb.rt, установить [поезд,], тип = "класс"), реакция [поезда]))) * * 1004

Но результат плохой: Наблюдаемый класс →

Прогнозируемый класс ↓

               1    2   3   4    5  6    7 8   9   10
         1  26.0  0.0 0.6 0.0  0.0  0  0.0 0 0.0  0.2
         10  0.2  0.0 0.0 0.0  0.4  0  0.0 0 0.4 12.8
         2   0.0 45.6 0.6 1.4  0.6  0  0.0 0 0.0  0.0
         3   0.2  0.0 6.0 0.0  0.0  0  0.0 0 0.0  0.0
         4   0.0  0.2 0.0 3.4  0.0  0  0.0 0 0.0  0.0
         5   0.0  0.0 0.0 0.0 11.8  0  0.0 0 0.0  0.0
         6   0.0  0.0 0.0 0.0  0.0 19  0.0 0 0.0  0.0
         7   0.0  0.8 0.0 0.0  0.0  0 16.8 0 0.0  0.0
         8   0.0  0.0 0.0 0.0  0.0  0  0.0 4 0.0  0.0
         9   0.0  0.0 0.0 0.0  0.0  0  0.0 0 9.4  0.6

Предсказанный класс сортируется в алфавитном порядке, а наблюдаемый класс - нет. Мне нужно, чтобы они сортировались таким же образом, чтобы я мог сравнивать значения, которые находятся на диаграмме (матрице), с другими значениями.

Ответы [ 2 ]

1 голос
/ 16 марта 2012

Если я правильно понял ваш Вопрос, кажется, вы просто хотите Матрицу путаницы. .

Конечно, их не сложно вычислить вручную, но естьЭто (по крайней мере) дюжина встроенных функций в различных пакетах R, которые обрабатывают все это для вас - обработку данных, форматирование таблиц, проверку ошибок и т. д. Встроенная функция, которую я использую ниже, также вычисляет ошибку классификации.

Пакет mda имеет встроенную функцию, называемую путаница.Вы используете вот так:

> library(mda)
> data(iris)
> iris_fit = fda(Species ~., data=iris)

> CM = confusion(predict(iris_fit, iris), iris$Species)
> # observed classification (true) is column-wise;
> # predicted is row-wise 
> CM

            true
   predicted    setosa versicolor virginica
   setosa         50          0         0
   versicolor      0         48         1
   virginica       0          2        49

   attr(,"error")
   [1] 0.02

Опять же, существует множество других функций из сторонних пакетов в CRAN для вычисления матрицы путаницы.

Быстрый поиск пакета Rпробел, используя sos, дал следующие результаты:

> library(sos)

> findFn("confusion", maxPages=5, sortby="MaxScore")

Я намеренно ограничил этот поиск только 5 верхними страницами результатов (возвращено 87 отдельных функций).Исходя из этих результатов, другие пакеты R, которые имеют функцию матрицы смешения:

  • zmisclassification.matrix в пакете fpc

  • panr.confusion в пакете pamr

  • путаница в пакете DAAG

1 голос
/ 16 марта 2012

Вам просто нужно переставить столбцы, используя стандартный оператор подстановки [] Сначала создайте пример данных:

R> dd = data.frame(x=1:4, z=5:8, y=10:13)
R> rownames(dd) = 4:1  
R> dd
  x z  y
4 1 5 10
3 2 6 11
2 3 7 12
1 4 8 13

Далее я указываю порядок строк и столбцов:

R> dd[sort(rownames(dd)), sort(colnames(dd))]
  x  y z
1 4 13 8
2 3 12 7
3 2 11 6
4 1 10 5
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...