Рубрики
Без рубрики

Как начать работу с машиной обучения примерно за 10 минут

Автор оригинала: FreeCodeCapm Team.

Фармидзи Файзал Афлахи

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

Введение в машину обучения с Python

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

Как легко?

for anything in the_list:    print(anything)

Что легко Отказ Синтаксис тесно связан с английским (или человеческим языком, а не машиной). И нет глупых кудрявых скобок, которые путают людей. У меня есть коллега, который находится в обеспечении качества, не инженером программного обеспечения, и она может написать код Python в течение дня на уровне производства. (Серьезно!)

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

  1. Осевать

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

2. Пандас

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

3. matplotlib.

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

4. Морной

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

5. Scikit – учиться

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

6. Tensorflow и Pytorch

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

Проекты Python Machine Учебные проекты

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

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

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

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

Титаник: Машина обучения от катастрофы

Да, печально известная титана. Трагическая катастрофа в 1912 году, что взяла жизнь 1502 человек из 2224 пассажиров и экипажа. Эта конкуренция Kaggle (или я могу сказать, Учебное пособие) дает вам реальные данные о катастрофе. И ваша задача – объяснить данные, чтобы вы могли предсказать, выжил ли личный или нет во время инцидента.

Машина обучения с учебником Python

Прежде чем идти в глубокие данные титановых, давайте установим некоторые инструменты, которые вам нужны.

Конечно, Python. Вам нужно сначала установить его из Официальный сайт Python Отказ Вам необходимо установить версию 3.6+, чтобы сохранить в курсе библиотек.

После этого вам нужно установить все библиотеки через Python Pip. PIP должен быть установлен автоматически с распределением Python, который вы только что скачали.

Затем установите вещи, которые вам нужны через PIP. Откройте свой терминал, командную строку или PowerShell и напишите следующее:

pip install numpypip install pandaspip install matplotlibpip install seabornpip install scikit-learnpip install jupyter

Ну, все выглядит хорошо. Но подожди, что такое jupyter? Jupyter стоит для Юлии, Питона и R, следовательно, Jupytr. Но это странная комбинация слов, поэтому они изменили его в просто Джупитер. Это знаменитая ноутбук, в котором можно вписывать код Python Interactive.

Просто введите Jupyter ноутбук В вашем терминале, и вы откроете страницу браузера, как это:

Напишите код внутри зеленого прямоугольника, и вы можете написать и оценить код Python Interactive.

Теперь вы установили все инструменты. Давайте идти!

Разведка данных

Первый шаг – изучить данные. Вам нужно скачать данные из Страница Titanic в Kaggle Отказ Затем поместите извлеченные данные внутри папки, в которую вы запускаете ноутбук Jupyter.

Затем импортируйте необходимые библиотеки:

import numpy as np import pandas as pdimport matplotlib.pyplot as pltimport seaborn as snsimport warningswarnings.filterwarnings('ignore')%matplotlib inline

Затем загрузите данные:

train_df=pd.read_csv("train.csv")train_df.head()

Вы увидите что-то вроде этого:

Это наши данные. У него есть следующие столбцы:

  1. Пассажир, идентификатор пассажира
  2. Пережил, выжил ли он/она или нет
  3. PClass, класс службы, может быть, 1 – экономика, 2 – это бизнес, а 3 – первый класс
  4. Имя, имя пассажира
  5. Секс
  6. Возраст
  7. Sibsp, или братья и сестры и супруги, количество братьев и сестер и супругов на борту
  8. Парха, или родители и дети, количество из них на борту
  9. Билет, деталь билетов
  10. Кабина, их салон. Нан означает неизвестное
  11. Встал, происхождение посадки, S для Southampton, Q для Queenstown, C для Чербура

При изучении данных мы часто находим Отсутствующие данные Отказ Давайте посмотрим на них:

def missingdata(data):    total = data.isnull().sum().sort_values(ascending = False)    percent = (data.isnull().sum()/data.isnull().count()*100).sort_values(ascending = False)    ms=pd.concat([total, percent], axis=1, keys=['Total', 'Percent'])    ms= ms[ms["Percent"] > 0]    f,ax =plt.subplots(figsize=(8,6))    plt.xticks(rotation='90')    fig=sns.barplot(ms.index, ms["Percent"],color="green",alpha=0.8)    plt.xlabel('Features', fontsize=15)    plt.ylabel('Percent of missing values', fontsize=15)    plt.title('Percent missing data by feature', fontsize=15)    return ms
missingdata(train_df)

Мы увидим результат, как это:

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

Очистка данных

Это то, что мы используем 90% времени. Мы будем делать очистку данных много для каждого проекта оборудования для машины Отказ Когда данные чистые, мы можем легко перейти на следующий шаг, не беспокоясь о чем угодно.

Наиболее распространенной техникой уборки данных является Заполнение отсутствующих данных Отказ Вы можете заполнить данные без вести с Режим, среднее или медиана Отказ На этих вариантах нет абсолютного правила – вы можете попытаться выбрать один за другим и увидеть производительность. Но для правила, вы можете использовать режим только для категорированных данных, и вы можете использовать медиану или подразумевать для непрерывных данных.

Итак, давайте заполним данные посадочных данных с режимом и возрастными данными с Median.

train_df['Embarked'].fillna(train_df['Embarked'].mode()[0], inplace = True)train_df['Age'].fillna(train_df['Age'].median(), inplace = True)

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

drop_column = ['Cabin']train_df.drop(drop_column, axis=1, inplace = True)

Теперь мы можем проверить данные, которые мы очистили.

print('check the nan value in train data')print(train_df.isnull().sum())

Идеально! Отсутствуют отсутствующие данные. Означает, что данные были очищены.

Функция инженерии

Теперь мы убрали данные. Следующее, что мы можем сделать, это функционирование.

Функция Engineering в основном является техникой поиска функции или данных из доступных в настоящее время данных. Есть несколько способов сделать эту технику. Чаще всего речь идет о здравом смысле.

Давайте посмотрим на приступные данные: наполнено Q, S, или C. Библиотека Python не сможет обработать это, поскольку она может обработать номера. Так что вам нужно сделать что-то называемое Одна горячая векторизация изменяя колонку на три столбца. Допустим, Embarked_Q, Embarked_s и Embarked_c, которые заполнены 0 или 1, ли человек встал от этой гавани или нет.

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

Так что вы хотите Создайте другой столбец называется семейный размер, который состоит из Sibsp + Parch + 1 (пассажирский сам).

Последний пример называется Колонны Bin Отказ Это техника, которая создает диапазоны значений для группировки нескольких вещей вместе, поскольку вы предполагаете, что это трудно дифференцировать вещи с аналогичным значением. Например, возраст. Для человека в возрасте от 5 до 6 лет есть существенная разница? Или для человека в возрасте 45 и 46 лет, есть ли большая разница?

Вот почему мы создаем колонны Bin. Может быть, для возраста мы создадим 4 банка. Дети (0-14 лет), подросток (14-20), взрослый (20-40) и старейшины (40+)

Давайте кодируем их:

all_data = train_df
for dataset in all_data :    dataset['FamilySize'] = dataset['SibSp'] + dataset['Parch'] + 1
import re# Define function to extract titles from passenger namesdef get_title(name):    title_search = re.search(' ([A-Za-z]+)\.', name)    # If the title exists, extract and return it.    if title_search:        return title_search.group(1)    return ""# Create a new feature Title, containing the titles of passenger namesfor dataset in all_data:    dataset['Title'] = dataset['Name'].apply(get_title)# Group all non-common titles into one single grouping "Rare"for dataset in all_data:    dataset['Title'] = dataset['Title'].replace(['Lady', 'Countess','Capt', 'Col','Don',                                                  'Dr', 'Major', 'Rev', 'Sir', 'Jonkheer', 'Dona'], 'Rare')
dataset['Title'] = dataset['Title'].replace('Mlle', 'Miss')    dataset['Title'] = dataset['Title'].replace('Ms', 'Miss')    dataset['Title'] = dataset['Title'].replace('Mme', 'Mrs')
for dataset in all_data:    dataset['Age_bin'] = pd.cut(dataset['Age'], bins=[0,14,20,40,120], labels=['Children','Teenage','Adult','Elder'])
for dataset in all_data:    dataset['Fare_bin'] = pd.cut(dataset['Fare'], bins=[0,7.91,14.45,31,120], labels ['Low_fare','median_fare', 'Average_fare','high_fare'])                                                                                traindf=train_dffor dataset in traindf:    drop_column = ['Age','Fare','Name','Ticket']    dataset.drop(drop_column, axis=1, inplace = True)
drop_column = ['PassengerId']traindf.drop(drop_column, axis=1, inplace = True)traindf = pd.get_dummies(traindf, columns = ["Sex","Title","Age_bin","Embarked","Fare_bin"],                             prefix=["Sex","Title","Age_type","Em_type","Fare_type"])

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

sns.heatmap(traindf.corr(),annot=True,cmap='RdYlGn',linewidths=0.2) #data.corr()-->correlation matrixfig=plt.gcf()fig.set_size_inches(20,12)plt.show()

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

Машина обучения с Python

Теперь мы прибыли на вершину учебника: моделирование машинного обучения.

from sklearn.model_selection import train_test_split #for split the datafrom sklearn.metrics import accuracy_score  #for accuracy_scorefrom sklearn.model_selection import KFold #for K-fold cross validationfrom sklearn.model_selection import cross_val_score #score evaluationfrom sklearn.model_selection import cross_val_predict #predictionfrom sklearn.metrics import confusion_matrix #for confusion matrixall_features = traindf.drop("Survived",axis=1)Targeted_feature = traindf["Survived"]X_train,X_test,y_train,y_test = train_test_split(all_features,Targeted_feature,test_size=0.3,random_state=42)X_train.shape,X_test.shape,y_train.shape,y_test.shape

Вы можете выбрать много алгоритмов, включенных в вкусную библиотеку Scikit-Learn.

  1. Логистическая регрессия
  2. Случайный лес
  3. Ов
  4. К ближайшему соседу
  5. Наивный байс
  6. Решения деревьев
  7. Адабуст
  8. ЛДА
  9. Усиление градиента

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

Давайте попробуем это с моим любимым: Случайное алгоритм леса

from sklearn.ensemble import RandomForestClassifiermodel = RandomForestClassifier(criterion='gini', n_estimators=700,                             min_samples_split=10,min_samples_leaf=1,                             max_features='auto',oob_score=True,                             random_state=1,n_jobs=-1)model.fit(X_train,y_train)prediction_rm=model.predict(X_test)print('--------------The Accuracy of the model----------------------------')print('The accuracy of the Random Forest Classifier is', round(accuracy_score(prediction_rm,y_test)*100,2))kfold = KFold(n_splits=10, random_state=22) # k=10, split the data into 10 equal partsresult_rm=cross_val_score(model,all_features,Targeted_feature,cv=10,scoring='accuracy')print('The cross validated score for Random Forest Classifier is:',round(result_rm.mean()*100,2))y_pred = cross_val_predict(model,all_features,Targeted_feature,cv=10)sns.heatmap(confusion_matrix(Targeted_feature,y_pred),annot=True,fmt='3.0f',cmap="summer")plt.title('Confusion_matrix', y=1.05, size=15)

Ух ты! Это дает нам 83% точности. Это достаточно хорошо для нашего впервые.

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

Тонкая настройка

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

model = RandomForestClassifier(criterion='gini', n_estimators=700,                             min_samples_split=10,min_samples_leaf=1,                             max_features='auto',oob_score=True,                             random_state=1,n_jobs=-1)

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

Не волнуйтесь – есть инструмент под названием Поиск сетки , что автоматически находит оптимальные параметры. Звучит отлично, верно?

# Random Forest Classifier Parameters tunning model = RandomForestClassifier()n_estim=range(100,1000,100)
## Search grid for optimal parametersparam_grid = {"n_estimators" :n_estim}
model_rf = GridSearchCV(model,param_grid = param_grid, cv=5, scoring="accuracy", n_jobs= 4, verbose = 1)
model_rf.fit(train_X,train_Y)
# Best scoreprint(model_rf.best_score_)
#best estimatormodel_rf.best_estimator_

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

Заключение

Как это было? Это не кажется очень сложно, не так ли? Машинное обучение с Python легко. Все было выложено для вас. Вы можете просто сделать магию. И принесите счастье людям.

Эта часть была первоначально выпущена в моем блоге на thedatatamage.com.