Advertisement
Guest User

Untitled

a guest
Dec 15th, 2019
141
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 7.91 KB | None | 0 0
  1.  
  2. data_epil<-read.table("", header = true) - считывание нашего датасета в дата фрейм data_epil, header=true - означает, что мы указываем то,
  3. что в нашем файле первая строка отвечает за названия переменныхъ
  4. is.na(data_epil) - (NOT AVAILABLE) возвращает массив true/false значений, нужно для проверки нашего дата фрейма на пустые значения
  5.  
  6. summary(data_epil[c(1:4)]) - функция для произведения итогов по нашему датасету (получение). Тут мы берем 1-4 столбики и получаем по ним статистику:
  7. минимальное значение, 1 квартиль, медиану, mean, 3 квартиль, максимальное значение
  8. Первый квартиль (Q1) означает, что 25% наблюдений ниже этой величины (приблизительно)
  9. Третий квартиль (Q3) означает, что 75% наблюдений ниже этой величины (приблизительно)
  10. медиана делит наши значения на две части: показывает, что 50% значений будут не больше чем наша медиана и 50% не меньше чем наша медиана
  11.  
  12. plot(data_epil$X1~data_epil$X2, xlab="X2", ylab = "X1") - функция для построения объектов, для простых точечных диаграм будет использован plot.default
  13. Тут мы берем значения из X1 и X2 столбиков и строим их, xlab, ylab отвечают за названия осей координат
  14.  
  15. data_epil$Class<-as.factor(data_epil$Class) - в вектор class'а записываем тот же вектор, но уже в виде фактора
  16.  
  17. boxplot(data_epil$X1~data_epil$Class, ylab="X1", xlab="Class") - строим ящик с усами для входных значений по X1 и Class. Строится ящик начиная от первого квартиля
  18. до третьего, обозначается посередине медиана и строятся "усы", т.е. размах выборки
  19.  
  20. wilcox.test(data_epil$X1~data_epil$Class) - получаем результаты тестирования Уилкоксона (разобраться)
  21.  
  22. norm<-function(x) { ( (x- min(x))/(max(x) - min(x)) )} - определяем функцию norm
  23.  
  24. data_epil_norm<-as.data.frame(lapply(data_epil [1: 178], norm)) - в data_epil_norm записываем data_frame, который был получен путем применения к каждому
  25. соответствущему элементу из 1-178 столбика data_epil функции norm
  26.  
  27. summary(data_epil_norm[c(1:3)]) - получаем статистику для data_epil_norm
  28.  
  29. knn_train<-data_epil_norm[1:8050, ] - в датафрейм knn_train записываем первые 8050 значений из data_epil_norm
  30. knn_test<-data_epil_norm[8051:11500, ] - в датафрейм knn_text записываем 8051-11500 значений из data_epil_norm
  31.  
  32. epil_knn<-knn(knn_train, knn_test, data_epil[1:8050, 179], k=107) - в epil_knn записываем результат метода knn, который в качестве аргументов принимает следующее:
  33. датафрейм knn_train, датафрейм knn_test, фактор настоящих классификаций data_epil (классы для всех значений),
  34. k = 179 количество выбранных соседей
  35.  
  36. table(epil_knn, data_epil[8051:11500, 179]) - вывод матрицы ошибок
  37.  
  38. TreeTest<-data_epil[1:8050, ] - запись в датафрейм TreeTest 1-8050 строк из data_epil
  39.  
  40. TreeTrain<-data_epil[8051:11500, ] - запись в датафрейм TreeTrain 8051-11500 строк из data_epil
  41.  
  42. TreeEpil<-rpart(Class~., TreeTrain, method = "class") - получение модели классификатора Tree с помощью обучающей выборки
  43.  
  44. fancyRpartPlot(TreeEpil) - построение диаграммы дерева решений
  45.  
  46. Pr_TreeEpil<-predict(TreeEpil, TreeTrain, type = "class") - проводим классификацию на обучающей выборке
  47.  
  48. table(TreeTrain[, 179], Pr_TreeEpil) - строим матрицу ошибок для обучающей выборки
  49.  
  50. Pr1_TreeEpil<-predict(TreeEpil, TreeTest, type = "class") - проводим классификацию на тестирующей выборке
  51.  
  52. table(TreeTest[, 179], Pr1_TreeEpil) - строим матрицу ошибок для тестирующей выборки
  53.  
  54. NBTrain<-data_epil[1:8050,] - запись в датафрейм обучающей выборки
  55. NBTest<-data_epil[8051:11500,] - запись в датафрейм тестирующей выборки
  56. NBEpil<-naive_bayes(Class~., NBTrain) - получение модели наивного классификатора Байеса с помощью обучающей выборки
  57.  
  58. NB_pred1<-predict(NBEpil, newdata = NBTrain) - применение классификатора к обучающему датафрейму
  59. table(NB_pred1, NBTrain$Class) - построение матрицы ошибок для обучающей выборки
  60.  
  61. NB_pred<-predict(NBEpil, newdata = NBTest) - применение классификатора к тестирующему датафрейму
  62. table(NB_pred, NBTest$Class) - построение матрицы ошибок для тестирующей выборки
  63.  
  64. RFTrain<-data_epil[1:8050, ] - запись в датафрейм обучающей выборки
  65. RFTest<-data_epil[8051:11500, ] - запись в датафрейм проверяющий выборки
  66. RF<-randomForest(Class~., RFTrain) - получение модели классификатора randomForest с помощью обучающей выборки
  67. RF
  68.  
  69. RF_pred<-predict(RF, RFTest) - применение классификатора к тестирующему датафрейму
  70. table(RFTest[,179], RF_pred) - построение матрицы ошибок
  71.  
  72. imp<-importance(RF) - запись в матрицу imp 10% самых значимых показателей с помощью модели randomForest
  73. sub_imp <-subset(data_epil, select = names(imp[imp > 27,])) - запишем в датафрейм sub_imp только те, которые больше значения 27 и составляют 10% от всех.
  74.  
  75. построим зависимости важных показателей:
  76. boxplot(sub_imp$X159~data_epil$Class, ylab = "X159", xlab = "class") - построение ящика с усами
  77. boxplot(sub_imp$X160~data_epil$Class, ylab = "X160", xlab = "class") - построение ящика с усами
  78.  
  79.  
  80. Проводем классификацию методом randomForest:
  81. new_data_epil<-data.frame(sub_imp, data_epil$Class)
  82. new_RFTrain<-new_data_epil[1:8050, ]
  83. new_RFTest<-new_data_epil[8051:11500, ]
  84. new_RF<-randomForest(data_epil.Class~., new_RFTrain)
  85. new_RF
  86.  
  87. new_RF_pred<-predict(new_RF, new_RFTest)
  88. table(new_RF_pred, new_RFTest[,22])
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement