В этой статье мы обсудим обучение Scikit на python. Прежде чем говорить о Scikit learn, нужно понять концепцию машинного обучения. Благодаря машинному обучению вам не нужно собирать информацию вручную. Вам просто нужен алгоритм, а все остальное машина сделает за вас! Разве это не интересно? Scikit learn - одна из достопримечательностей, где мы можем реализовать машинное обучение с использованием Python. Это бесплатная библиотека машинного обучения, которая содержит простые и эффективные инструменты для анализа и интеллектуального анализа данных. Я проведу вас по следующим темам, которые послужат основой для следующих блогов:

  • Что такое машинное обучение?
  • Обзор Scikit Learn
  • Установка
  • Пример использования - логистическая регрессия

Что такое машинное обучение?

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

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

Далее, есть три типа машинного обучения:

Контролируемое обучение:

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

Обучение без учителя:

Это процесс, при котором модель обучается с использованием информации, которая не размечена. Этот процесс можно использовать для кластеризации входных данных в классы на основе их статистических свойств. Обучение без учителя также называется кластерным анализом, который означает группировку объектов на основе информации, содержащейся в данных, описывающих объекты или их взаимосвязь. Цель состоит в том, чтобы объекты одной группы были похожи друг на друга, но отличались от объектов другой группы. Некоторые из алгоритмов включают кластеризацию K-средних, иерархическую кластеризацию и т. Д.

Обучение с подкреплением:

Обучение с подкреплением - это обучение посредством взаимодействия с пространством или окружающей средой. Агент RL учится на последствиях своих действий, а не на явном обучении. Он выбирает свои действия на основе своего прошлого опыта (эксплуатация), а также на основе нового выбора (исследование).

Обзор Scikit Learn

Scikit learn - это библиотека, используемая для машинного обучения на Python. Scikit learn - это библиотека с открытым исходным кодом, которая находится под лицензией BSD и может повторно использоваться в различных контекстах, поощряя академическое и коммерческое использование. Он предоставляет ряд контролируемых и неконтролируемых алгоритмов обучения на Python. Scikit learn состоит из популярных алгоритмов и библиотек. Кроме того, он также содержит следующие пакеты:

  • NumPy
  • Matplotlib
  • SciPy (научный Python)

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

Затем аналогичным образом вам нужно импортировать Sklearn. Scikit learn построен на SciPy (Scientific Python), который необходимо установить, прежде чем вы сможете использовать Scikit-learn. Вы можете перейти на этот веб-сайт, чтобы загрузить то же самое. Кроме того, установите пакет Scipy и wheel, если его нет, вы можете ввести следующую команду:

pip install scipy

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

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

Scikit learn поставляется с образцами наборов данных, таких как iris и digits. Вы можете импортировать наборы данных и поэкспериментировать с ними. После этого вам необходимо импортировать SVM, что означает Support Vector Machine. SVM - это форма машинного обучения, которая используется для анализа данных.

Давайте возьмем пример, в котором мы возьмем набор данных цифры, и он классифицирует числа для нас, например: 0 1 2 3 4 5 6 7 8 9. См. Приведенный ниже код:

import matplotlib.pyplot as plt
from sklearn import datasets
from sklearn import svm
digits= datasets.load_digits()
print(digits.data)

Вывод -

[[ 0. 0. 5. ..., 0. 0. 0.]
 [ 0. 0. 0. ..., 10. 0. 0.]
 [ 0. 0. 0. ..., 16. 9. 0.]
 ..., 
 [ 0. 0. 1. ..., 6. 0. 0.]
 [ 0. 0. 2. ..., 12. 0. 0.]
 [ 0. 0. 10. ..., 12. 1. 0.]]

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

import matplotlib.pyplot as plt
from sklearn import datasets
from sklearn import svm
digits= datasets.load_digits()
print(digits.target)
print(digits.images[0])

Вывод -

[0 1 2 ..., 8 9 8]                  // target of the data
[[ 0. 0. 5. 13. 9. 1. 0. 0.]         // image of the data
 [ 0. 0. 13. 15. 10. 15. 5. 0.]
 [ 0. 3. 15. 2. 0. 11. 8. 0.]
 [ 0. 4. 12. 0. 0. 8. 8. 0.]
 [ 0. 5. 8. 0. 0. 9. 8. 0.]
 [ 0. 4. 11. 0. 1. 12. 7. 0.]
 [ 0. 2. 14. 5. 10. 12. 0. 0.]
 [ 0. 0. 6. 13. 10. 0. 0. 0.]]

Как вы можете видеть выше, печатаются целевые цифры и изображение цифр. digits.target дает основную истину для набора данных digit, то есть число, соответствующее каждой цифре изображения. Далее, данные всегда представляют собой 2D-массив, который имеет форму (n_samples, n_features), хотя исходные данные могли иметь другую форму. Но в случае цифр каждый исходный образец представляет собой изображение формы (8,8), и к нему можно получить доступ, используя цифры. image.

Обучение и прогнозирование

Затем, в Scikit learn, мы использовали набор данных (выборка из 10 возможных классов, цифры от нуля до девяти), и нам нужно предсказать цифры, когда выдается изображение. Чтобы предсказать класс, нам понадобится оценщик, который помогает предсказать классы, к которым принадлежат невидимые образцы. В Scikit learn у нас есть оценщик для классификации, который представляет собой объект Python, который реализует методы fit (x, y) и pred (T). Рассмотрим следующий пример:

import matplotlib.pyplot as plt
from sklearn import datasets
from sklearn import svm
digits= datasets.load_digits()                     // dataset
clf = svm.SVC(gamma=0.001, C=100)
print(len(digits.data))
x,y=digits.data[:-1],digits.target[:-1]            // train the data
clf.fit(x,y)
print('Prediction:', clf.predict(digits.data[-1])) //predict data
plt.imshow(digits.images[-1],cmap=plt.cm.gray_r, interpolation="nearest")
plt.show()
Output:
1796
Prediction: [8]

В приведенном выше примере мы сначала нашли длину и загрузили 1796 примеров. Затем мы использовали эти данные в качестве обучающих данных, где нам нужно протестировать последний элемент и первый отрицательный элемент. Кроме того, нам нужно проверить, правильно ли предсказала машина данные или нет. Для этого мы использовали Matplotlib, где отображали изображение цифр. Итак, в заключение, у вас есть числовые данные, у вас есть цель, вы подходите и прогнозируете ее, и, следовательно, все готово! Это действительно быстро и легко, не правда ли?

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

import matplotlib.pyplot as plt
from sklearn import datasets
from sklearn import svm
digits= datasets.load_digits()
# Join the images and target labels in a list
images_and_labels = list(zip(digits.images, digits.target))
# for every element in the list
for index, (image, label) in enumerate(images_and_labels[:8]):
    # initialize a subplot of 2X4 at the i+1-th position
    plt.subplot(2, 4, index + 1)
    # Display images in all subplots
    plt.imshow(image, cmap=plt.cm.gray_r,interpolation='nearest')
    # Add a title to each subplot
    plt.title('Training: ' + str(label))
# Show the plot
plt.show()

Вывод -

Как вы можете видеть в приведенном выше коде, мы использовали функцию «zip», чтобы объединить изображения и целевые метки в список, а затем сохранить его в переменной, например images_and_labels. После этого мы проиндексировали первые восемь элементов в сетке 2 на 4 в каждой позиции. После этого мы просто отобразили изображения с помощью Matplotlib и добавили заголовок как «обучение».

Пример использования - прогнозирование с использованием логистической регрессии

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

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

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

Во-первых, давайте рассмотрим логистическую регрессию.

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

  • И да и нет
  • Правда и ложь
  • Высокий и низкий
  • Прохождение и провал

Теперь, чтобы начать с кода, мы сначала импортируем эти библиотеки - Numpy, Matplotlib и Pandas. Импортировать панд в Pycharm довольно просто, выполнив следующие шаги:

Settings -> Add Package ->  Pandas -> Install

После этого мы импортируем набор данных и отдельную зависимую переменную (куплено) и независимую переменную (возраст, зарплата):

dataset = pd.read_csv('Social_Network_Ads.csv')
X = dataset.iloc[:, [2, 3]].values
y = dataset.iloc[:, 4].values
print(X)
print(y)

Следующим шагом будет обучение и проверка данных. Общая стратегия состоит в том, чтобы взять все помеченные данные и разделить на подмножества обучения и тестирования, что обычно берется с соотношением 70–80% для подмножества обучения и 20–30% для подмножества тестирования. Следовательно, мы создали наборы для обучения и тестирования с помощью cross_validation.

from sklearn.cross_validation import train_test_split
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size = 0.25, random_state = 0)

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

from sklearn.preprocessing import StandardScaler
sc = StandardScaler()
X_train = sc.fit_transform(X_train)
X_test = sc.transform(X_test)

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

from sklearn.linear_model import LogisticRegression
classifier = LogisticRegression(random_state = 0)
classifier.fit(X_train, y_train

Мы можем использовать это и предсказать результаты нашего тестового набора.

y_pred = classifier.predict(X_test)

Теперь мы можем проверить, сколько прогнозов было точным, а какое - без использования матрицы ошибок. Определим Y как положительные примеры, а N как отрицательные. Четыре результата сформулированы в матрице путаницы 2 * 2, как показано ниже:

from sklearn.metrics import confusion_matrix
cm = confusion_matrix(y_test, y_pred)
print(cm)

Вывод -

[[65 3]
 [ 8 24]]

Затем, основываясь на нашей матрице неточностей, мы можем вычислить точность. Итак, в нашем примере выше точность будет:

= TP + TN / FN + FP

= 65+24 / 65 +3+ 8 + 24

=89%

Мы сделали это вручную! Теперь давайте посмотрим, как машина рассчитывает то же самое для нас, для этого у нас есть встроенная функция «precision_score», которая вычисляет точность и распечатывает ее, как показано ниже:

// import the function accuracy_score
from sklearn.metrics import accuracy_score    

print(accuracy_score(y_test, y_pred)*100)     // prints the accuracy

Вывод -

89.0

Ура! Таким образом, мы успешно реализовали логистическую регрессию с помощью Scikit learn с точностью 89%.

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

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

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

1. Учебник по Python

2. » «Язык программирования Python

3. Функции Python

4. » «Обработка файлов в Python

5. » «Учебник по Python Numpy

6. Учебник по Python Pandas

7. Учебник по Matplotlib

8. Учебник Tkinter

9. Учебник по запросам

10. Учебник PyGame

11. Учебное пособие по OpenCV

12. Веб-парсинг с помощью Python

13. Учебное пособие по PyCharm

14. Учебник по машинному обучению

15. Алгоритм линейной регрессии с нуля на Python

16. Python для науки о данных

17. Python Regex

18. Циклы в Python

19. Проекты Python

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

21. Массивы в Python

22. Множества в Python

23. Многопоточность в Python

24. Вопросы для собеседования по Python

25. Java vs Python

26. Как стать разработчиком Python?

27. Лямбда-функции Python

28. Как Netflix использует Python?

29. Что такое программирование сокетов в Python

30. Подключение к базе данных Python

31. Голанг против Питона

32. Учебник по Python Seaborn

33. Карьерные возможности в Python

Первоначально опубликовано на www.edureka.co 4 декабря 2017 г.