В связи с экспоненциальным ростом ИИ компании с нетерпением ждут, чтобы нанять квалифицированных специалистов по данным для развития своего бизнеса. Помимо того, что вы являетесь сертифицированным специалистом в области науки о данных, всегда хорошо иметь в своем резюме пару проектов по науке о данных. Теоретических знаний никогда не бывает. Итак, в этом блоге вы узнаете, как на практике использовать методологии Data Science для решения реальных проблем.

Вот список тем, которые будут рассмотрены в этом блоге:

  1. Базовый подход к решению проблемы с использованием науки о данных
  2. Практическое внедрение науки о данных
  3. Проекты в области науки о данных

Жизненный цикл проекта Data Science

При наличии правильных данных Data Science может использоваться для решения самых разных задач - от обнаружения мошенничества и интеллектуального земледелия до прогнозирования изменения климата и болезней сердца. При этом данных недостаточно для решения проблемы, вам нужен подход или метод, который даст вам наиболее точные результаты. Это подводит нас к вопросу:

Как вы решаете проблемы науки о данных?

Постановку задачи в Data Science можно решить, выполнив следующие шаги:

  1. Определите формулировку проблемы / бизнес-требования
  2. Сбор данных
  3. Очистка данных
  4. Исследование и анализ данных
  5. Моделирование данных
  6. Развертывание и оптимизация

Давайте подробно рассмотрим каждый из этих шагов:

Шаг 1. Определите формулировку проблемы

Прежде чем вы даже приступите к проекту Data Science, вы должны определить проблему, которую пытаетесь решить. На этом этапе вы должны четко понимать цели вашего проекта.

Шаг 2. Сбор данных

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

Шаг 3. Очистка данных

Если вы спросите специалиста по данным, какой процесс в науке о данных ему не нравится больше всего, он, скорее всего, ответит, что это очистка данных. Очистка данных - это процесс удаления избыточных, отсутствующих, повторяющихся и ненужных данных. Этот этап считается одним из самых трудоемких в Data Science. Однако, чтобы предотвратить ошибочные прогнозы, важно избавиться от любых несоответствий в данных.

Шаг 4. Анализ и исследование данных

Как только вы закончите очистку данных, пора вытащить внутреннего Шерлока Холмса. На этом этапе жизненного цикла Data Science вы должны обнаружить закономерности и тенденции в данных. Здесь вы получаете полезную информацию и изучаете поведение данных. В конце этого этапа вы должны начать формировать гипотезы о ваших данных и проблеме, которую вы решаете.

Шаг 5. Моделирование данных

На этом этапе создается модель, которая наилучшим образом решает вашу проблему. Модель может быть алгоритмом машинного обучения, который обучается и тестируется с использованием данных. Этот этап всегда начинается с процесса, называемого объединением данных, когда вы разделяете весь набор данных на две части. Один для обучения модели (набор обучающих данных), а другой для проверки эффективности модели (набор данных для тестирования).

Затем следует построение модели с использованием набора обучающих данных и, наконец, оценка модели с использованием набора тестовых данных.

Шаг 6. Оптимизация и развертывание.

Это последний этап жизненного цикла Data Science. На этом этапе вы должны попытаться повысить эффективность модели данных, чтобы она могла делать более точные прогнозы. Конечная цель - развернуть модель в производственной или производственной среде для окончательного принятия пользователем. Пользователи должны проверить производительность моделей, и если есть какие-либо проблемы с моделью, они должны быть исправлены на этом этапе.

Теперь, когда вы знаете, как решить проблему с помощью Data Science, перейдем к самому интересному. В следующем разделе я представлю вам пять проектов высокого уровня в области науки о данных, которые помогут вам найти работу в ведущих ИТ-компаниях.

Наука о данных в R

Прежде чем мы начнем писать код, сделаем небольшой отказ от ответственности:

Я собираюсь использовать язык R для запуска всего рабочего процесса Data Science, потому что R - это язык статистики, и в нем есть более 8000 пакетов, которые облегчают нам жизнь.

Классификация данных переписи населения 1994 года

Постановка проблемы: построение модели, которая прогнозирует, будет ли доход любого человека в США больше или меньше 50 000 долларов США на основе имеющихся данных об этом человеке.

Описание набора данных. Этот набор данных о доходах переписи был собран Барри Беккером в 1994 году и размещен на общедоступном сайте http://archive.ics.uci.edu/ml/datasets/Census+Income . Этот набор данных поможет вам понять, как доход человека зависит от различных факторов, таких как образование, род занятий, семейное положение, география, возраст, количество рабочих часов в неделю и т. Д.

Вот список независимых переменных или переменных-предикторов, используемых для прогнозирования того, зарабатывает ли человек более 50 000 долларов США или нет:

  • Возраст
  • Рабочий класс
  • Конечный вес
  • Образование
  • Education-num (Количество лет обучения)
  • Семейное положение
  • Занятие
  • Отношение
  • Раса
  • Секс
  • Прирост капитала
  • Убыток капитала
  • Часов в неделю
  • Родная страна

Зависимая переменная - это уровень дохода, который представляет уровень дохода. Это категориальная переменная, поэтому она может принимать только два значения:

  1. <=50k
  2. >=50k

Теперь, когда мы определили нашу цель и собрали данные, пора приступить к анализу.

Шаг 1. Импортируйте данные

К счастью для нас, мы нашли набор данных в Интернете, поэтому все, что нам нужно сделать, это импортировать набор данных в нашу среду R, например:

#Downloading train and test data
trainFile = "adult.data"; testFile = "adult.test"
 
if (!file.exists (trainFile))
download.file (url = "http://archive.ics.uci.edu/ml/machine-learning-databases/adult/adult.data",
destfile = trainFile)
 
if (!file.exists (testFile))
download.file (url = "http://archive.ics.uci.edu/ml/machine-learning-databases/adult/adult.test",
destfile = testFile)

В приведенном выше фрагменте кода мы загрузили как набор данных для обучения, так и набор данных для тестирования.

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

#Assigning column names
colNames = c ("age", "workclass", "fnlwgt", "education",
"educationnum", "maritalstatus", "occupation",
"relationship", "race", "sex", "capitalgain",
"capitalloss", "hoursperweek", "nativecountry",
"incomelevel")
 
#Reading training data
training = read.table (trainFile, header = FALSE, sep = ",",
strip.white = TRUE, col.names = colNames,
na.strings = "?", stringsAsFactors = TRUE)

Теперь, чтобы изучить структуру нашего набора данных, мы вызываем метод str (). Это дает нам описательную сводку всех переменных-предикторов, присутствующих в наборе данных:

#Display structure of the data
str (training)
> str (training)
'data.frame': 32561 obs. of 15 variables:
$ age : int 39 50 38 53 28 37 49 52 31 42 ...
$ workclass : Factor w/ 8 levels "Federal-gov",..: 7 6 4 4 4 4 4 6 4 4 ...
$ fnlwgt : int 77516 83311 215646 234721 338409 284582 160187 209642 45781 159449 ...
$ education : Factor w/ 16 levels "10th","11th",..: 10 10 12 2 10 13 7 12 13 10 ...
$ educationnum : int 13 13 9 7 13 14 5 9 14 13 ...
$ maritalstatus: Factor w/ 7 levels "Divorced","Married-AF-spouse",..: 5 3 1 3 3 3 4 3 5 3 ...
$ occupation : Factor w/ 14 levels "Adm-clerical",..: 1 4 6 6 10 4 8 4 10 4 ...
$ relationship : Factor w/ 6 levels "Husband","Not-in-family",..: 2 1 2 1 6 6 2 1 2 1 ...
$ race : Factor w/ 5 levels "Amer-Indian-Eskimo",..: 5 5 5 3 3 5 3 5 5 5 ...
$ sex : Factor w/ 2 levels "Female","Male": 2 2 2 2 1 1 1 2 1 2 ...
$ capitalgain : int 2174 0 0 0 0 0 0 0 14084 5178 ...
$ capitalloss : int 0 0 0 0 0 0 0 0 0 0 ...
$ hoursperweek : int 40 13 40 40 40 40 16 45 50 40 ...
$ nativecountry: Factor w/ 41 levels "Cambodia","Canada",..: 39 39 39 39 5 39 23 39 39 39 ...
$ incomelevel : Factor w/ 2 levels "<=50K",">50K": 1 1 1 1 1 1 1 2 2 2 ... ...

Итак, после импорта и преобразования данных в читаемый формат мы перейдем к следующему важному этапу обработки данных - очистке данных.

Шаг 2. Очистка данных

Этап очистки данных считается одной из самых трудоемких задач в Data Science. Этот этап включает в себя удаление значений NA, избавление от избыточных переменных и любых несоответствий в данных.

Мы начнем очистку данных, проверив, есть ли в наших наблюдениях какие-либо пропущенные значения:

> table (complete.cases (training))
 
FALSE TRUE
2399 30162

Приведенный выше фрагмент кода указывает, что 2399 примеров имеют значения NA. Чтобы исправить это, давайте посмотрим на сводку всех наших переменных и проанализируем, какие переменные имеют наибольшее количество нулевых значений. Причина, по которой мы должны избавиться от значений NA, заключается в том, что они приводят к ошибочным прогнозам и, следовательно, снижают точность нашей модели.

> summary  (training [!complete.cases(training),])
      age                   workclass        fnlwgt              education    educationnum  
 Min.   :17.00   Private         : 410   Min.   : 12285   HS-grad     :661   Min.   : 1.00  
 1st Qu.:22.00   Self-emp-inc    :  42   1st Qu.:121804   Some-college:613   1st Qu.: 9.00  
 Median :36.00   Self-emp-not-inc:  42   Median :177906   Bachelors   :311   Median :10.00  
 Mean   :40.39   Local-gov       :  26   Mean   :189584   11th        :127   Mean   : 9.57  
 3rd Qu.:58.00   State-gov       :  19   3rd Qu.:232669   10th        :113   3rd Qu.:11.00  
 Max.   :90.00   (Other)         :  24   Max.   :981628   Masters     : 96   Max.   :16.00  
                 NA's            :1836                    (Other)     :478                  
               maritalstatus           occupation           relationship                 race     
 Divorced             :229   Prof-specialty : 102   Husband       :730   Amer-Indian-Eskimo:  25  
 Married-AF-spouse    :  2   Other-service  :  83   Not-in-family :579   Asian-Pac-Islander: 144  
 Married-civ-spouse   :911   Exec-managerial:  74   Other-relative: 92   Black             : 307  
 Married-spouse-absent: 48   Craft-repair   :  69   Own-child     :602   Other             :  40  
 Never-married        :957   Sales          :  66   Unmarried     :234   White             :1883  
 Separated            : 86   (Other)        : 162   Wife          :162                            
 Widowed              :166   NA's           :1843                                                 
     sex        capitalgain       capitalloss       hoursperweek         nativecountry  
 Female: 989   Min.   :    0.0   Min.   :   0.00   Min.   : 1.00   United-States  
               Median :    0.0   Median :   0.00   Median :40.00   Canada                  
               Mean   :  897.1   Mean   :  73.87   Mean   :34.23   Philippines             
               3rd Qu.:    0.0   3rd Qu.:   0.00   3rd Qu.:40.00   Germany               
               Max.   :99999.0   Max.   :4356.00   Max.   :99.00   (Other)            
                                                                   NA's         : 583

Из приведенного выше резюме видно, что три переменные имеют хорошее количество значений NA:

  1. Рабочий класс - 1836 г.
  2. Род занятий - 1843 г.
  3. Родина - 583 чел.

Эти три переменные необходимо очистить, поскольку они являются важными переменными для прогнозирования уровня дохода человека.

#Removing NAs
TrainSet = training [!is.na (training$workclass) & !is.na (training$occupation), ]
TrainSet = TrainSet [!is.na (TrainSet$nativecountry), ]

После того, как мы избавились от значений NA, нашим следующим шагом будет избавление от всех ненужных переменных, которые не важны для прогнозирования нашего результата. Важно избавиться от таких переменных, потому что они только увеличивают сложность модели, не повышая ее эффективности.

Одной из таких переменных является переменная «fnlwgt», которая обозначает общие численность населения, полученную на основе CPS путем расчета взвешенных сумм любых конкретных социально-экономических характеристик населения.

Эта переменная удаляется из нашего набора данных, поскольку она не помогает предсказать нашу результирующую переменную:

#Removing unnecessary variables 
TrainSet$fnlwgt = NULL

Итак, это все, что касается очистки данных, наш следующий шаг - исследование данных.

Шаг 3. Анализ данных

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

Изучение возрастной переменной

#Data Exploration
#Exploring the age variable
 
> summary (TrainSet$age)
Min. 1st Qu. Median Mean 3rd Qu. Max.
17.00 28.00 37.00 38.44 47.00 90.00
 
#Boxplot for age variable
boxplot (age ~ incomelevel, data = TrainSet,
main = "Income levels based on the Age of an individual",
xlab = "Income Level", ylab = "Age", col = "salmon")

#Histogram for age variable
incomeBelow50K = (TrainSet$incomelevel == "<=50K")
xlimit = c (min (TrainSet$age), max (TrainSet$age))
ylimit = c (0, 1600)
 
hist1 = qplot (age, data = TrainSet[incomeBelow50K,], margins = TRUE,
binwidth = 2, xlim = xlimit, ylim = ylimit, colour = incomelevel)
 
hist2 = qplot (age, data = TrainSet[!incomeBelow50K,], margins = TRUE,
binwidth = 2, xlim = xlimit, ylim = ylimit, colour = incomelevel)
 
grid.arrange (hist1, hist2, nrow = 2)

Приведенные выше иллюстрации показывают, что возрастная переменная меняется в зависимости от уровня дохода и, следовательно, является сильной прогностической переменной.

Изучение переменной educationnum

Эта переменная обозначает количество лет образования человека. Давайте посмотрим, как переменная educationnum изменяется в зависимости от уровня дохода:

> summary (TrainSet$educationnum)
Min. 1st Qu. Median Mean 3rd Qu. Max.
1.00 9.00 10.00 10.12 13.00 16.00
 
#Boxplot for education-num variable
boxplot (educationnum ~ incomelevel, data = TrainSet,
main = "Years of Education distribution for different income levels",
xlab = "Income Levels", ylab = "Years of Education", col = "green")

На приведенном выше рисунке показано, что переменная «educationnum» варьируется для уровней дохода от ‹= 50k и› 50k, тем самым доказывая, что это важная переменная для прогнозирования результата.

Изучение переменных прироста и убытка капитала

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

> summary (TrainSet[ TrainSet$incomelevel == "<=50K", 
+                        c("capitalgain", "capitalloss")])
  capitalgain       capitalloss     
 Min.   :    0.0   Min.   :   0.00  
 1st Qu.:    0.0   1st Qu.:   0.00  
 Median :    0.0   Median :   0.00  
 Mean   :  148.9   Mean   :  53.45  
 3rd Qu.:    0.0   3rd Qu.:   0.00  
 Max.   :41310.0   Max.   :4356.00

Изучение переменной часов в неделю

Аналогичным образом оценивается переменная «hoursperweek», чтобы проверить, является ли она значимой переменной-предиктором.

#Evaluate hours/week variable
 
> summary (TrainSet$hoursperweek)
Min. 1st Qu. Median Mean 3rd Qu. Max.
1.00 40.00 40.00 40.93 45.00 99.00
 
boxplot (hoursperweek ~ incomelevel, data = TrainSet,
main = "Hours Per Week distribution for different income levels",
xlab = "Income Levels", ylab = "Hours Per Week", col = "salmon")

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

Точно так же мы будем оценивать и категориальные переменные. В приведенном ниже разделе я создал q-графики для каждой переменной, и после оценки графиков стало ясно, что эти переменные важны для прогнозирования уровня дохода человека.

Изучение переменной рабочего класса

#Evaluating work-class variable
qplot (incomelevel, data = TrainSet, fill = workclass) + facet_grid (. ~ workclass)

#Evaluating occupation variable
qplot (incomelevel, data = TrainSet, fill = occupation) + facet_grid (. ~ occupation)

#Evaluating marital-status variable
qplot (incomelevel, data = TrainSet, fill = maritalstatus) + facet_grid (. ~ maritalstatus)

#Evaluating relationship variable
qplot (incomelevel, data = TrainSet, fill = relationship) + facet_grid (. ~ relationship)

Все эти графики показывают, что этот набор переменных-предикторов важен для построения нашей прогнозной модели.

Все эти графики показывают, что этот набор переменных-предикторов важен для построения нашей прогнозной модели.

Шаг 4. Построение модели

Итак, после оценки всех наших переменных-предикторов, наконец, пришло время выполнить прогнозную аналитику. На этом этапе мы построим прогнозную модель, которая предскажет, заработает ли человек более 50 000 долларов США или нет, на основе переменных-предикторов, которые мы оценили в предыдущем разделе.

  1. Уровень дохода ‹= 50 000 долларов США
  2. Уровень дохода ›50 000 долларов США

Чтобы построить эту модель, я использовал алгоритм повышения, поскольку мы должны классифицировать человека в любой из двух классов, то есть:

#Building the model
set.seed (32323)
 
trCtrl = trainControl(method = "cv", number = 10)
 
boostFit = train (incomelevel ~ age + workclass + education + educationnum +
maritalstatus + occupation + relationship +
race + capitalgain + capitalloss + hoursperweek +
nativecountry, trControl = trCtrl,
method = "gbm", data = TrainSet, verbose = FALSE)

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

Шаг 5. Проверка точности модели

Чтобы оценить точность модели, мы воспользуемся матрицей неточностей:

#Checking the accuracy of the model
 
> confusionMatrix (TrainSet$incomelevel, predict (boostFit, TrainSet))
Confusion Matrix and Statistics
 
Reference
Prediction <=50K >50K
<=50K 21404 1250 >50K 2927 4581
 
Accuracy : 0.8615
95% CI : (0.8576, 0.8654)
No Information Rate : 0.8067
P-Value [Acc > NIR] : < 2.2e-16
 
Kappa : 0.5998
 
Mcnemar's Test P-Value : < 2.2e-16
 
Sensitivity : 0.8797
Specificity : 0.7856
Pos Pred Value : 0.9448
Neg Pred Value : 0.6101
Prevalence : 0.8067
Detection Rate : 0.7096
Detection Prevalence : 0.7511
Balanced Accuracy : 0.8327
 
'Positive' Class : <=50K

Выходные данные показывают, что наша модель рассчитывает уровень дохода человека с точностью примерно 86%, что является хорошим числом.

До сих пор мы использовали набор обучающих данных для построения модели, теперь пришло время проверить модель с помощью набора данных тестирования.

Шаг 5. Загрузите и оцените набор тестовых данных

Так же, как мы очищали наш обучающий набор данных, наши тестовые данные также должны быть подготовлены таким образом, чтобы в них не было никаких нулевых значений или ненужных переменных-предикторов, только тогда мы можем использовать тестовые данные для проверки нашей модели.

Начните с загрузки набора данных тестирования:

#Load the testing data set
testing = read.table (testFile, header = FALSE, sep = ",",
strip.white = TRUE, col.names = colNames,
na.strings = "?", fill = TRUE, stringsAsFactors = TRUE)

Далее мы изучаем структуру нашего набора данных.

#Display structure of the data
> str (testing)
'data.frame': 16282 obs. of 15 variables:
$ age : Factor w/ 74 levels "|1x3 Cross validator",..: 1 10 23 13 29 3 19 14 48 9 ...
$ workclass : Factor w/ 9 levels "","Federal-gov",..: 1 5 5 3 5 NA 5 NA 7 5 ...
$ fnlwgt : int NA 226802 89814 336951 160323 103497 198693 227026 104626 369667 ...
$ education : Factor w/ 17 levels "","10th","11th",..: 1 3 13 9 17 17 2 13 16 17 ...
$ educationnum : int NA 7 9 12 10 10 6 9 15 10 ...
$ maritalstatus: Factor w/ 8 levels "","Divorced",..: 1 6 4 4 4 6 6 6 4 6 ...
$ occupation : Factor w/ 15 levels "","Adm-clerical",..: 1 8 6 12 8 NA 9 NA 11 9 ...
$ relationship : Factor w/ 7 levels "","Husband","Not-in-family",..: 1 5 2 2 2 5 3 6 2 6 ...
$ race : Factor w/ 6 levels "","Amer-Indian-Eskimo",..: 1 4 6 6 4 6 6 4 6 6 ...
$ sex : Factor w/ 3 levels "","Female","Male": 1 3 3 3 3 2 3 3 3 2 ...
$ capitalgain : int NA 0 0 0 7688 0 0 0 3103 0 ...
$ capitalloss : int NA 0 0 0 0 0 0 0 0 0 ...
$ hoursperweek : int NA 40 50 40 40 30 30 40 32 40 ...
$ nativecountry: Factor w/ 41 levels "","Cambodia",..: 1 39 39 39 39 39 39 39 39 39 ...
$ incomelevel : Factor w/ 3 levels "","<=50K.",">50K.": 1 2 2 3 3 2 2 2 3 2 ...

В приведенном ниже фрагменте кода мы ищем полные наблюдения, в которых нет нулевых или отсутствующих данных.

> table (complete.cases (testing))
FALSE TRUE
1222 15060
> summary  (testing [!complete.cases(testing),])
      age                 workclass       fnlwgt               education    educationnum   
 20     : 73   Private         :189   Min.   :  13862   Some-college:366   Min.   : 1.000  
 19     : 71   Self-emp-not-inc: 24   1st Qu.: 116834   HS-grad     :340   1st Qu.: 9.000  
 18     : 64   State-gov       : 16   Median : 174274   Bachelors   :144   Median :10.000  
 21     : 62   Local-gov       : 10   Mean   : 187207   11th        : 66   Mean   : 9.581  
 22     : 53   Federal-gov     :  9   3rd Qu.: 234791   10th        : 53   3rd Qu.:10.000  
 17     : 35   (Other)         : 11   Max.   :1024535   Masters     : 47   Max.   :16.000  
 (Other):864   NA's            :963   NA's   :1         (Other)     :206   NA's   :1       
               maritalstatus           occupation          relationship                 race    
 Never-married        :562   Prof-specialty : 62                 :  1                     :  1  
 Married-civ-spouse   :413   Other-service  : 32   Husband       :320   Amer-Indian-Eskimo: 10  
 Divorced             :107   Sales          : 30   Not-in-family :302   Asian-Pac-Islander: 72  
 Widowed              : 75   Exec-managerial: 28   Other-relative: 65   Black             :150  
 Separated            : 33   Craft-repair   : 23   Own-child     :353   Other             : 13  
 Married-spouse-absent: 28   (Other)        : 81   Unmarried     :103   White             :976  
 (Other)              :  4   NA's           :966   Wife          : 78                           
     sex       capitalgain       capitalloss       hoursperweek         nativecountry 
       :  1   Min.   :    0.0   Min.   :   0.00   Min.   : 1.00   UnitedStates 
 Female:508   1st Qu.:    0.0   1st Qu.:   0.00   1st Qu.:20.00   Mexico    
              Mean   :  608.3   Mean   :  73.81   Mean   :33.49   South                 
              3rd Qu.:    0.0   3rd Qu.:   0.00   3rd Qu.:40.00   England                 
              Max.   :99999.0   Max.   :2603.00   Max.   :99.00   (Other)               
              NA's   :1         NA's   :1         NA's   :1       NA's         :274

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

Removing NAs
TestSet = testing [!is.na (testing$workclass) & !is.na (testing$occupation), ]
TestSet = TestSet [!is.na (TestSet$nativecountry), ]
 
#Removing unnecessary variables
TestSet$fnlwgt = NULL

Шаг 6. Проверьте модель

Набор тестовых данных применяется к прогнозной модели для проверки эффективности модели. В следующем фрагменте кода показано, как это делается:

#Testing model
TestSet$predicted = predict (boostFit, TestSet)
table(TestSet$incomelevel, TestSet$predicted)
 
actuals_preds <- data.frame(cbind(actuals=TestSet$incomelevel, predicted=TestSet$predicted)) # make actuals_predicteds dataframe.
correlation_accuracy <- cor(actuals_preds)
head(actuals_preds)

Таблица используется для сравнения прогнозируемых значений с фактическим уровнем доходов человека. Эта модель может быть дополнительно улучшена путем введения в нее некоторых вариаций или использования альтернативного алгоритма.

Итак, мы только что выполнили весь проект по науке о данных с нуля.

В приведенном ниже разделе я собрал набор проектов, которые помогут вам получить опыт в очистке данных, статистическом анализе, моделировании и визуализации данных.

Считайте это своей домашней работой.

Проекты в области науки о данных для резюме

Прогнозирование продаж Walmart

Data Science играет огромную роль в прогнозировании продаж и рисков в розничном секторе. Большинство ведущих розничных магазинов внедряют Data Science, чтобы отслеживать потребности своих клиентов и принимать более обоснованные бизнес-решения. Walmart - один из таких ритейлеров.

Постановка проблемы: для анализа набора данных о продажах Walmart с целью прогнозирования продаж по отделам для каждого из их магазинов.

Описание набора данных: набор данных, используемый для этого проекта, содержит исторические данные обучения, которые охватывают данные о продажах с 05.02.2010 по 01.11.2012. Для анализа этой проблемы используются следующие переменные-предикторы:

  1. Магазин - номер магазина
  2. Dept - номер отдела
  3. Дата - неделя
  4. CPI - индекс потребительских цен
  5. Weekly_Sales - продажи для данного отдела в данном магазине
  6. IsHoliday - является ли неделя особой праздничной неделей

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

Логика:

  1. Импортировать набор данных: набор данных, необходимый для этого проекта, можно скачать с Kaggle.
  2. Очистка данных: на этом этапе вы должны убедиться, что устранены все несоответствия, такие как отсутствующие значения и любые повторяющиеся переменные.
  3. Исследование данных: на этом этапе вы можете построить коробчатые и qplots, чтобы понять значимость каждой переменной-предиктора. Обратитесь к проекту доходов переписи, чтобы понять, как можно использовать графики для изучения значимости каждой переменной.
  4. Моделирование данных: для этой конкретной постановки задачи, поскольку результатом является непрерывная переменная (количество продаж), разумно построить модель регрессии. Алгоритм линейной регрессии может использоваться для решения таких проблем, поскольку он специально используется для прогнозирования непрерывных зависимых переменных.
  5. Подтвердите модель: на этом этапе вы должны оценить эффективность модели данных, используя набор данных тестирования, и, наконец, рассчитать точность модели, используя матрицу неточностей.

Анализ преступности в Чикаго

С увеличением количества преступлений, совершаемых в Чикаго, правоохранительные органы изо всех сил пытаются понять причину таких действий. Подобные анализы могут не только помочь понять причины этих преступлений, но и предотвратить дальнейшие преступления.

Постановка проблемы: для анализа и изучения набора данных о преступности в Чикаго, чтобы понять тенденции и закономерности, которые помогут предсказать любые будущие случаи таких преступлений.

Описание набора данных: набор данных, используемый для этого проекта, состоит из каждого зарегистрированного случая преступления в городе Чикаго с 01.01.2014 по 24.10.2016.

Для этого анализа набор данных содержит множество переменных-предикторов, таких как:

  1. ID - Идентификатор записи
  2. Номер дела - номер RD в сети полиции Чикаго
  3. Дата - Дата происшествия
  4. Описание - Вторичное описание кода МСОП
  5. Место - Место происшествия.

Логика:

Как и в любом другом проекте Data Science, выполняется описанная ниже последовательность шагов:

  1. Импортировать набор данных: набор данных, необходимый для этого проекта, можно скачать с Kaggle.
  2. Очистка данных: на этом этапе вы должны убедиться, что устранены все несоответствия, такие как отсутствующие значения и любые повторяющиеся переменные.
  3. Анализ данных: вы можете начать этот этап с преобразования данных о преступлениях в сюжеты на географической карте города. Графическое изучение каждой переменной-предиктора поможет вам понять, какие переменные необходимы для построения модели.
  4. Моделирование данных: для этой конкретной постановки задачи, поскольку характер преступлений варьируется, разумно построить модель кластеризации. K-средних является наиболее подходящим алгоритмом для этого анализа, поскольку кластеры легко построить с помощью k-средних.
  5. Анализ закономерностей. Поскольку эта постановка задачи требует от вас выявления закономерностей и понимания преступлений, этот шаг в основном включает создание отчетов и вывод на основе модели данных.
  6. Подтвердите модель: на этом этапе вы должны оценить эффективность модели данных, используя набор данных тестирования, и, наконец, рассчитать точность модели, используя матрицу неточностей.

Система рекомендаций по фильмам

Каждый успешный специалист по анализу данных за свою карьеру создал хотя бы один механизм рекомендаций. Механизмы персонализированных рекомендаций считаются святым Граалем проектов Data Science, поэтому я добавил этот проект в блог.

Постановка проблемы: для анализа набора данных Movie Lens, чтобы понять тенденции и закономерности, которые помогут рекомендовать пользователям новые фильмы.

Описание набора данных. Набор данных, используемый для этого проекта, был собран в рамках исследовательского проекта GroupLens в Университете Миннесоты.

Набор данных состоит из следующих переменных-предикторов:

  1. 100k оценок от 943 пользователей на наборе из 1682 фильмов.
  2. Каждый пользователь оценил не менее 20 фильмов.
  3. Данные пользователя, такие как возраст, пол, род занятий, география и т. Д.

Изучая эти переменные-предикторы, можно построить модель для рекомендации фильмов пользователям.

Логика:

  1. Импортировать набор данных: набор данных, необходимый для этого проекта, можно скачать с Kaggle.
  2. Очистка данных: на этом этапе выполняется необходимая очистка и преобразование, чтобы модель могла предсказать точный результат.
  3. Анализ данных: на этом этапе вы можете оценить, как жанр фильма повлиял на рейтинг зрителя. Точно так же вы можете оценить выбор фильма пользователем в зависимости от его возраста, пола и рода занятий. Графическое изучение каждой переменной-предиктора поможет вам понять, какие переменные необходимы для построения модели.
  4. Моделирование данных. Для этой постановки задачи вы можете использовать алгоритм кластеризации k-средних, чтобы сгруппировать пользователей на основе схожих шаблонов просмотра фильмов. Вы также можете использовать интеллектуальный анализ ассоциативных правил для изучения корреляции между пользователями и их выбором фильмов.
  5. Подтвердите модель: на этом этапе вы должны оценить эффективность модели данных, используя набор данных тестирования, и, наконец, рассчитать точность модели, используя матрицу неточностей.

Текстовый анализ

Наличие проекта Text Mining в вашем резюме определенно увеличит ваши шансы получить работу в качестве специалиста по данным. Он включает в себя расширенную аналитику и интеллектуальный анализ данных, которые сделают вас опытным специалистом по данным. Популярным приложением интеллектуального анализа текста является анализ настроений, который чрезвычайно полезен при мониторинге социальных сетей, поскольку помогает получить представление о более широком общественном мнении по определенным темам.

Постановка проблемы: для выполнения предварительной обработки, анализа текста, интеллектуального анализа текста и визуализации набора документов с использованием методов обработки естественного языка.

Описание набора данных: этот набор данных содержит сценарии знаменитого сериала "Звездные войны" из эпизодов исходной трилогии, то есть IV, V и VI.

Логика:

  1. Импортируйте набор данных: Для этого проекта вы можете найти набор данных на Kaggle.
  2. Предварительная обработка. На этом этапе процесса интеллектуального анализа текста вы должны избавиться от несоответствий, таких как стоп-слова, знаки препинания, пробелы и т. д. Такие процессы, как лемматизация и выделение корней данных, также могут выполняться для лучший анализ.
  3. Постройте матрицу терминов документа (DTM). Этот шаг включает создание матрицы терминов документа (DTM). Это матрица, в которой указывается частота использования слов в документе. По этой матрице выполняется анализ текста.
  4. Анализ текста. Анализ текста включает в себя анализ частоты встречаемости каждого слова в документе и поиск корреляций между словами, чтобы сделать выводы.
  5. Визуализация текста. Использование гистограмм и облаков слов для представления значимых слов - один из важных шагов в интеллектуальном анализе текста, поскольку он помогает понять наиболее важные слова в документе.

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

Кроме того, не забудьте поделиться своей реализацией в разделе комментариев, я хотел бы знать, как получилось ваше решение.

На этом мы подошли к концу этого блога. Если у вас есть какие-либо вопросы по этой теме, оставьте комментарий ниже, и мы свяжемся с вами. Если вы хотите ознакомиться с другими статьями о самых популярных технологиях на рынке, таких как Python, DevOps, Ethical Hacking, вы можете обратиться к Официальный сайт Эдурека.

Обязательно обратите внимание на другие статьи в этой серии, которые объяснят различные другие аспекты Data Science.

1. Учебник по науке о данных

2. Математика и статистика для науки о данных

3. Линейная регрессия в R

4. Учебник по науке о данных

5. Логистическая регрессия в R

6. Алгоритмы классификации

7. Случайный лес в R

8. Дерево решений в R

9. Введение в машинное обучение

10. Наивный Байес в R

11. Статистика и вероятность

12. Как создать идеальное дерево решений?

13. 10 главных мифов о роли специалистов по данным

14. 5 лучших алгоритмов машинного обучения

15. Data Analyst vs Data Engineer vs Data Scientist

16. Типы искусственного интеллекта

17. R против Python

18. Искусственный интеллект против машинного обучения против глубокого обучения

19. Проекты машинного обучения

20. Интервью с аналитиком данных: вопросы и ответы

21. Инструменты для анализа данных и машинного обучения для непрограммистов

22. 10 лучших фреймворков машинного обучения

23. Статистика машинного обучения

24. Случайный лес в R

25. Алгоритм поиска в ширину

26. Линейный дискриминантный анализ в R

27. Предпосылки для машинного обучения

28. Интерактивные веб-приложения с использованием R Shiny

29. 10 лучших книг по машинному обучению

30. Обучение без учителя

31.1 0 лучших книг по науке о данных

32. Обучение с учителем

Первоначально опубликовано на https://www.edureka.co 18 июня 2019 г.