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

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

Давайте погрузимся в это

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

  1. Язык программирования Python
  2. Структуры данных и алгоритмы

Нашей IDE для этого руководства будет Google Colaboratory. Мне это нравится, потому что он дает вам интересные функции прямо из коробки.

Отправляйтесь в Google Colab, это создает новый Colab и готов к нашему уроку.

2. Я подготовил для вас некоторые данные, на которых мы будем тренироваться, в формате CSV. Это выглядит так, как показано ниже. Я разместил его здесь https://modcom.co.ke/datasets/iris.csv или https://drive.google.com/file/d/1V3LcwJ1n9p4s3IYBFrMFGwCcpqRx7LU-/view?usp=sharing

3. Мы импортируем pandas, библиотеку, которая поможет нам прочитать указанный выше файл CSV. Затем создайте переменную с именем data, в которой будут храниться результаты, полученные после чтения файла .csv. Мы распечатываем данные, чтобы проверить, действительно ли мы получаем желаемые результаты.

import pandas
data = pandas.read_csv("https://modcom.co.ke/datasets/iris.csv")
print(data)

Все данные, имеющиеся в нашем файле, будут распечатаны, как показано ниже. (После нажатия черной кнопки воспроизведения от Colab)

При работе с моделями машинного обучения вам необходимо очистить данные, проверив наличие нулей, прежде чем начинать обучение. Итак, мы проверим, существуют ли какие-то нулевые данные для нашего набора данных. Мы напишем код для проверки и суммирования всех нулей в наших данных, если они есть. Добавьте это в новую ячейку в Colab, нажав Вставить - ›Ячейка кода.

data.isnull().sum() # check empty and sum by colm

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

# basic stats
data.describe()

5. Следующим шагом является разделение данных на две части: прогнозирующие и прогнозируемые / целевые. Они будут представлены X и Y.

# Step 1: Split to X, Y
# X reprents the predictors/features/inputs
# Y predicted - target/output
array = data.values
X = array[:, 0: 4]    # sepallength sepalwidth  petallength petalwidth, - 1
Y = array[:, 4]  # class

Обучим модель!

6. Для обучения нашей модели мы собираемся использовать одну из лучших библиотек, называемую scikit-learn, это будет иметь фундаментальное значение для помощи в выполнении классификации, регрессии, кластеризации и выбора модели. Для получения дополнительной информации проверьте здесь https://scikit-learn.org/stable/, мы добавим новую ячейку и импортируем sklearn, в частности, модуль выбора модели.

Основываясь на информации, которая у нас есть выше, (X, Y) мы разделим наши данные на две части, 70% и 30%. Мы обучим эти 70%, чтобы сделать нашу модель более интеллектуальной, и использовать оставшиеся 30%, которые наша модель не видела, и она должна быть в состоянии получить их точно. Для каждого из наших разделенных данных у нас будут X_train, X_test, Y_train, Y_test и использовать выбор модели для обучения. мы будем использовать случайное состояние 42, чтобы увеличить количество точных прогностических анализов.

from sklearn import model_selection
X_train, X_test, Y_train, Y_test = model_selection.train_test_split(X, Y,
test_size=0.30,
random_state=42)

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

from sklearn.tree import DecisionTreeClassifier
from sklearn.neighbors import KNeighborsClassifier
from sklearn.naive_bayes import GaussianNB
from sklearn.ensemble import RandomForestClassifier
from sklearn.ensemble import GradientBoostingClassifier
from sklearn.linear_model import LogisticRegression
from sklearn.svm import SVC
# Its a classifiction , the target is categorical var

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

Мы также можем сделать резервную копию нашей модели в файл SAV для будущего прогноза, поэтому мы импортируем библиотеку pickle, которая будет за это отвечать. Затем мы подгоним классификатор модели (GaussianNB) с X_train и Y_train для классификации. Приведенный ниже код создает новый файл с именем finalized_model.sav внутри файла с именем sample_data (sample_data / finalized_model.sav) и сохраняет там модель.

model = GaussianNB()
model.fit(X_train, Y_train)
import pickle
# save the model to disk
filename = 'sample_data/finalized_model.sav'
pickle.dump(model, open(filename, 'wb'))
loaded_model = pickle.load(open(filename, 'rb'))

Пора протестировать сохраненную модель !!

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

# Step 4 : test the model
predictions = loaded_model.predict(X_test)
print('Model Predicted ', predictions)
print('Expected ', Y_test)

Вот как будет выглядеть ваш прогноз.

Как мы проверяем точность прогнозов?

Чтобы проверить правильность вашей модели, мы используем оценку точности от sklearn. Наша модель должна иметь точность не менее 70%, чтобы мы считали ее верной. Распечатаем отчеты о классификации, матрицу неточностей и метрики.

# Step 5: check accuracy
from sklearn.metrics import accuracy_score
print ('Accuracy ', accuracy_score(Y_test, predictions))
from sklearn.metrics import classification_report
print(classification_report(Y_test, predictions))
from sklearn.metrics import confusion_matrix
print(confusion_matrix(Y_test, predictions))

Бум !!, наша точность составляет 98%, что является хорошим признаком, поэтому мы можем использовать нашу модель, чтобы предсказать, какие параметры цветов у нас есть.

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

длина чашелистика, ширина чашелистика, длина лепестка, ширина лепестка и наша задача - точно определить его класс.

цветок = [[1.3, 1.4, 1.4, 1.5], [3.4,2.3,3.4, 3.4]]

flower = [[1.3, 1.4, 1.4, 1.5],[3.4,2.3,3.4, 3.4]]
predicted = model.predict(flower)
print('The flower are likely to be ', predicted)

Попробуйте использовать этот образец модели с вашими собственными данными, разрешив ввод с консоли, так же, как вы поступили бы с python, используя «input ()».

flower = [[float(input('Sepal le')), float(input('Sepal wi')), float(input('Petal le')), float(input('Petal win'))]]
predicted = model.predict(flower)
print('The flower are likely to be ', predicted)

Ваше задание!

Нанесите на график результаты любых проницательных данных, полученных из этого руководства. Я дам вам подсказку, как нарисовать и построить график в Colab.

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

Тогда увидимся.