Введение в аналитику больших массивов данных

R как инструмент Data Mining

Показывать лекцию целиком

 

Мы уже поговорили о готовых решениях в области интеллектуального анализа данных, теперь хочется обсудить такую вещь, как язык программирования R, который уже успел зарекомендовать себя в различных областях, связанных с математикой и Data Mining - не исключение. В лекции приводится:

Что такое R для Data Mining? Это лидер в области обработки и анализа данных, это неоспоримый факт и все его разделяют. Стандартную функциональность R расширяют около 4000 различных статистических и математических пакетов. Это удобная работа с данными посредством такой вещи, как Data Frame. Также не стоит отрицать то, что R - это все-таки высокопроизводительный язык в смысле скорости работы, не скорости разработки,, а именно в скорости обработки данных, приблизительно можно сравнить с C++.

Начнем с Data Frame - это такие объекты, которые наиболее удачно подходят для хранения и работы с данными, представленными в виде таблицы «объект-свойство». На примере представлен процесс создания такого объекта. Видно, что можно просто создать несколько векторов, которые будут являться столбцами и хранить в себе значения признаков. и собрать из них таблицу «объект-свойство», где строки это будут объекты, а столбцы - это их признаки.

Пример рассмотренный уже был приведён в предыдущих лекциях, это стандартный data site, который поставляется вместе с R mtcars, содержит в себе характеристики различных автомобилей, и он представляет из себя именно DataFrame. Отдельное внимание надо уделить тому, что все строки и столбцы данного набора данных проименованы. Как этого добиться? Чтобы проименовать строки, нужно использовать функцию row.names, которая без присвоения ей каких-то значений просто вернет названия строк, с присвоением векторов значений она проименует строки согласно значениям, которые переданы в векторе value. Абсолютно аналогично для столбцов. Что можно отметить? То, что настоятельно рекомендуется, если не именовать строки, то все-таки именовать столбцы, потому что это позволяется совершать более осмысленный доступ к элементам DataFrame.

Теперь о самом доступе. Можно просто доступиться к элементу по его индексу, например 1, 2, первая строчка, второй столбец, получить какое-то значение, можно также доступитьса по именам строки и столбца. Доступны и смешанные стили, когда столбец, например, доступается по индексу, а строка по наименованию. Можно получить сразу вектор столбца по его индексу. Для этого необходимо использовать оператор «Двойные квадратные скобки», а также аналогичный результат будет достигнут по имени столбца, используя оператор «$». Еще одна альтернатива - это указать в одинарных квадратных скобках имя столбца после запятой, это просто доступ к вектору всего столбца.

Теперь поговорим о такой необходимой вещи, как срезы. Срезы - это просто часть нашей таблицы «объект-свойство», это может быть как столбец, как строка, так и прямоугольный участок этой таблицы. Например, хотим взять срез по столбцу с индексом единица. Для этого просто используем оператор «квадратные скобки». Видно, что в результате у нас вывелись все строки, у которых остался только один столбец первый i и j. Тот же результат по имени столбца. Можно получать срез по нескольким столбцам, для этого необходимо передать в оператор «квадратные скобки» вектор с наименованиями столбцов или индексами. Срезы по строкам выполняются аналогично, но используется запятая, чтобы показать, что мы хотим именно по строкам получить срез. Так же можно передать вектор, так же можно передать одиночный индекс, так же можно передать название - все абсолютно аналогично. Вот взят срез по двум строкам, теперь ситуация симметрична, там указано троеточие, это значит, что вывелись все признаки, однако из строк было выбрано всего лишь первые две.

Логическая индексация - очень интересная вещь, часто полезная и, по сути, это фильтры. Например, мы хотим выбрать все автомобили, у которых ручная коробка передач. Для этого мы создаем вектор L, у которого будут значения true или false в необходимых местах. Мы сравниваем признак am с нулем, то есть у тех, у кого ручная коробка передач, будет 0, у тех, у кого автоматическая коробка передач, будет единичка. Затем делаем срез по строкам с помощью вектора L, то есть в итоге мы получим только те строки, у которых значение вектора L было true. Так же можно взять логический срез, а затем уже вектор какого-то отдельного столбца. Наконец, можно взять срез как по столбцам, так и по строкам, то есть прямоугольный участок таблицы. Как видно, можно абсолютно комбинировать в любых комбинациях как доступ по именам, так и доступ по индексам.

Следующая часть лекции затрагивает импорт и экспорт данных, так как это тоже немаловажная часть обработки данных в рамках решения задач анализа данных. Сам по себе R предоставляет удобный способ сохранить свои переменные, а потом их загрузить. Можно создать переменную a, в которую загрузить какой-либо вектор от одного до десяти, это точно так же может быть Data Frame или любое другое значение, сохранить эту переменную, затем ее удалить и снова загрузить, и вывести на экран, и мы увидим, что это тот же самый наш вектор. Делается это все просто функциями Save и Load. В Save указывается, какая переменная и куда сохраняем, а Load - откуда загружаем.

Стандартная функция, также встроенная в язык R - это работа со CSV файлами. Приведем пример - создадим две переменных, собственно, мы создадим просто Data Frame, раз уже мы с ним работаем, проименуем его и запишем в csv-файл. Затем мы просто считаем. Видно, что результат точно такой же, что мы и записали в DataFrame 1.

Следующая немаловажная особенность - это возможность импорта и экспорта из Excel-файлов. Для этого необходимо подключить пакет расширения j-data. Не представляет особой трудности опять загрузить данные в файл и считать из файла, это все делается стандартными функциями write.xls и read.xls.

Вернуться к учебному плану