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

PewDiePie - шведский ютубер, у него 100 миллионов подписчиков на YouTube (он мой любимый). Он набирает тысячи подписчиков каждый день, поэтому я подумал о написании учебника о его увеличении числа подписчиков. Итак, я хотел показать вам практическую реализацию алгоритма линейной регрессии машинного обучения. Здесь мы можем применить линейную регрессию для прогнозирования его ежедневных подписчиков на YouTube. Я расскажу вам, как это сделать, на протяжении всего урока. Полный код этого руководства можно найти на моем GitHub. Я не буду объяснять теорию алгоритмов линейной регрессии, потому что, по моему мнению, теория не так важна, очень важна только реализация, потому что вам нужно знать, как и где применять алгоритм. Тем не менее, я рекомендую вам изучить некоторые теории в Интернете, одна из лучших статей показана ниже:



Давайте начнем:

Шаги, которые мы предпримем для завершения этой реализации:

  1. Импорт необходимых библиотек.
  2. Чтение набора данных из файла CSV.
  3. Разделение набора данных на независимые (x) и зависимые (y) переменные.
  4. Разделение полного набора данных на набор данных для обучения и тестирования.
  5. Реализуйте наш классификатор на основе простой линейной регрессии.

1. Импорт необходимых библиотек.

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

  1. тупой
  2. панды
  3. sklearn.linear
  4. sklearn.model_selection

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



Pandas: Как вы знаете, я использую данные PewDiePie с YouTube, мне нужно сохранить их в какой-либо форме фрейма данных, чтобы сохранить данные во фрейме данных, я использую фрейм данных pandas, использовать фрейм данных pandas очень просто и интересно. Чтобы прочитать официальную документацию библиотеки pandas, перейдите по ссылке ниже:



Sklearn.linear: Как вы знаете, сейчас я использую алгоритм линейной регрессии для прогнозирования данных, мне нужно импортировать библиотеку линейной регрессии, но вы не можете напрямую импортировать библиотеку линейной регрессии, хотя вам нужно чтобы импортировать sci-kit, узнайте, с помощью которого вы можете получить доступ к библиотеке линейной регрессии. Вот почему я использую sklearn.linear. Чтобы прочитать официальную документацию библиотеки, перейдите по ссылке ниже:



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



Небольшое примечание для импорта любой библиотеки в Python. Все, что вам нужно сделать, это просто сказать «import name_of_the_library», имя библиотеки, например pandas, numpy и многие другие.

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

import numpy as np
import pandas as pd
from sklearn.linear_model import LinearRegression
from sklearn.model_selection import train_test_split

2. Чтение набора данных из файла CSV.

Я сохранил данные подписчиков PewDiePie в формате CSV в Kaggle. Kaggle - это место, где люди со всего мира публикуют и хранят набор данных. Здесь я сохранил данные в формате CSV (значения, разделенные запятыми). Чтобы загрузить набор данных, перейдите по ссылке ниже:



Вы можете загрузить набор данных, щелкнув опцию загрузки. Чтобы получить данные в формате на Python, вы должны использовать фрейм данных pandas. Перед этим вам нужно загрузить данные в записную книжку (я использую Google Colab для ввода всего кода на Python). Есть несколько способов загрузить данные в записную книжку, доступную онлайн, но самый простой способ - в Google Colab в левой части блокнота вы найдете (больше символа). Когда вы нажмете на нее, вы найдете вкладку с тремя вариантами, вам просто нужно выбрать файлы. Затем вы можете легко загрузить свой файл с помощью опции Загрузить. Нет необходимости подключаться к диску Google или использовать какие-либо конкретные библиотеки, просто загрузите набор данных, и ваша работа будет выполнена. На этом этапе следует помнить одну вещь: загруженные файлы будут удалены при повторном использовании этой среды выполнения. Вот так я получил набор данных в блокнот.

# Storing the data in a pandas data frame.

df = pd.read_csv(“PewDiePie.csv”)
df.head(5)

Как видите, приведенный выше набор данных содержит два столбца, данные и подписчиков. Я знаю, что столбец даты может сбивать с толку, не беспокойтесь и не думайте об этом, он просто хранится в первый день мая 2019 года (например, 1 мая, 2 мая и т. Д.). А столбец подписчика содержит всех подписчиков PewDiePie.

3. Разделение набора данных на независимые (x) и зависимые (y) переменные.

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

x = df.iloc[:, :-1]
y = df.iloc[:, 1]

Здесь значение «x» содержит данные, а значение «y» - подписчиков, а iloc используется для получения значений из фрейма данных. Причина, по которой я использовал [:,: -1], заключается в том, что мне нужен второй последний столбец из фрейма данных, а [: 1] дает мне последний столбец фрейма данных. Вы можете распечатать значение для подтверждения.

4. Разделение полного набора данных на набор данных для обучения и тестирования.

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

x_train, x_test, y_train, y_test = train_test_split(x, y, test_size = 0.3, random_state = 0)

Здесь переменные 'x' и 'y' разделены на данные обучения и тестирования, как видно из приведенного выше фрагмента кода, размер тестовых данных составляет 0,3 или 30%, а остальное - 70% (данные обучения), random_state - начальное число, используемое генератором случайных чисел.

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

HINT: print(x_test)

5. Реализуйте наш классификатор на основе простой линейной регрессии.

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

simplelinearRegression = LinearRegression()
simplelinearRegression.fit(x_train, y_train)
LinearRegression(copy_X=True, fit_intercept=True, n_jobs=None, normalize=False)

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

y_predict = simplelinearRegression.predict(x_test)
predict = pd.DataFrame(y_predict)
predict.apply(np.round)

А затем нам нужно спрогнозировать эти значения, используя метод then прогнозирования, для этого нам нужно передать проверенное значение переменной «x», таким образом мы получим прогнозируемые значения (подписчиков). И следующая строка кода - это просто преобразование, это связано с тем, что y_predict имеет тип массива numpy, поэтому нам нужно преобразовать это во фрейм данных только тогда, когда мы сможем применить функцию раунда. Теперь прогнозируемая переменная содержит всех прогнозируемых подписчиков, как показано ниже:

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

while i <= 28:
 print(“Total number of increase in subscribers on May %d ==>” %(i) , int(simplelinearRegression.predict([[i]])))
 i= i+1 
Total number of increase in subscribers on May 21 ==> 29154 
Total number of increase in subscribers on May 22 ==> 28210 
Total number of increase in subscribers on May 23 ==> 27266 
Total number of increase in subscribers on May 24 ==> 26322 
Total number of increase in subscribers on May 25 ==> 25378 
Total number of increase in subscribers on May 26 ==> 24434 
Total number of increase in subscribers on May 27 ==> 23491 
Total number of increase in subscribers on May 28 ==> 22547

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

Как видно ниже, когда вы сравниваете результаты прогнозируемых значений с фактическим подписчиком из приведенного выше, полученного Social Blade, результаты почти такие же, за исключением того, что здесь и там можно найти несколько более или менее подписчиков, но это нормально, машина обучение не может предсказать на 100% точно. Следовательно, вот как вы можете использовать алгоритмы машинного обучения для прогнозирования ежедневных подписчиков PewDiePie. Если у вас есть какие-либо сомнения по поводу кода, все комментарии в вашем разделе. Свяжитесь со мной только в случае сомнений. Также код можно найти в моем репозитории GitHub. Спасибо, ребята, что прочитали мою статью. Пока, начни практиковать код и увидимся в следующий раз.