„Машинното обучение е подполе на компютърните науки, което се занимава с изграждането на алгоритми, които, за да бъдат полезни, разчитат на колекция от примери за някакво явление. Тези примери могат да идват от природата, да бъдат ръчно изработени от хора или генерирани от друг алгоритъм.

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

2. Инсталиране на софтуера (само за Windows)

„Освен ако не сте учен изследовател или работите за огромна корпорация с голям бюджет за научноизследователска и развойна дейност, обикновено не внедрявате сами алгоритми за машинно обучение. Използвате библиотеки, повечето от които са с отворен код. Библиотеката е колекция от алгоритми и поддържащи инструменти, внедрени с мисъл за стабилност и ефективност. Най-често използваната в практиката библиотека за машинно обучение с отворен код е Scikit-learn. Написано е на Python и C.“

На първо място, трябва да имате инсталиран Python на вашия компютър. Ако не, тогава можете да го инсталирате тук: https://python.org/downloads/

За други програми можете просто да използвате pip. За целта трябва да отворите командния ред. Отворете полето за търсене на Windows и въведете cmd. pip идва предварително инсталиран с python, но ако командата не работи за вас, можете да я инсталирате тук: https://pypi.org/project/pip/

Преди да инсталираме scikit-learn библиотеката, трябва да инсталираме numpy и scipy.
За целта можете да използвате

pip install numpy

и

pip инсталирате scipy

И след това,

pip install -U scikit learn

Ако тези програми вече са инсталирани на вашия компютър, ще бъдете информирани. И вече сме готови!

3. Пишете първата си програма за машинно обучение: зад кода

Ако сте инсталирали всичките си програми, отворете Python IDLE.

Знаем, че пишем кода за машинно обучение, защото искаме да предвидим нещо. И за това също се нуждаем от примерни данни, въз основа на които кодът ще ни предостави решението.

Контролирано обучение:
Има различни видове машинно обучение и в този урок ще използваме Контролирано обучение. При контролираното обучение резултатът вече е известен. Например, за проблема с класифицирането на имейли като спам или неспам имаме два вече дефинирани изхода:
спам и не_спам.

При контролираното обучение данните са колекция от примери (характеристики, етикети). Нека вземем пример с лист и дефинираме характеристиките му като здраве и цвят и етикети като нови и стари. Така че, ако едно листо е зелено и здраво, то е ново, но ако е жълт и сух, значи е стар.

Класификатор:
Използвайки този набор от примери, ние изграждаме модел. След това го използваме, за да обучим класификатор. И така, какво е класификатор и какво всъщност прави? За да обучим класификатор, имаме нужда от алгоритъм. Този алгоритъм за обучение ще създаде правилата за класификацията. Така че, основно ще открие модели в данните за обучение.

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

4. Пишете първата си програма за машинно обучение: Кодът

Първият ред код е

импортиране на sklearn

Също така трябва да преобразуваме функциите и етикетите в числа.

характеристики: [цвят, здраве]

нека зададем номер на всеки цвят: зелено — 0, жълто — 1, кафяво — 2,
и за здраве да кажем: здрав — 0, сух — 1

И така, сега имаме

функции = [[0, 0], [1, 0], [2, 1], [0, 1]]

Искаме да обозначим всяка от тези характеристики

да кажем, че 0 е за ново и 1 за старо
така че за [0, 0] или зелено и здраво ние му даваме етикет 0, което означава нов лист

етикети = [0, 1, 1, 1]

Сега дефинираме класификатор на дърво на решения

clf= tree.DecisionTreeClassifier()

и подайте примерните данни

clf = clf.fit(функции, етикети)

Ако подадем нови данни, да речем [1, 1], които са жълти и сухи, трябва да се отпечата 1.
И наистина е така, дори ако този пример не е включен в нашите примерни данни. Колко е интересно!

Имайте предвид, че функциите са вход, а етикетите са изход.

И това е само шест реда код! Невероятно!

от дървото за импортиране на sklearn

#характеристики : [цвят, здраве]
#цвят: зелено 0 | кафяво 1 | портокал 2
#здраве: здравословно 0| суха 1
характеристики = [[0, 0], [1, 1], [2, 1], [0, 1]]

#ново 0 | старо 1
#зелено → ново | оранжево, кафяво → стари
етикети = [0, 1, 1, 1]

clf= tree.DecisionTreeClassifier()
clf = clf.fit(features, labels)
print(clf.predict([[1, 1]]))

4. Заключението

Така че можем ясно да видим потенциала на машинното обучение. Не сме използвали действителната картина на листа в примера, но такива програми вече съществуват и работят!
http://www.ijfis.org/journal/view.html?doi=10.5391/IJFIS .2017.17.1.26
Накрая бих искал да ви благодаря, че дойдохте на това пътуване с мен и че потопихте пръстите си в този красив свят на машинно обучение. Надяваме се, че ще се срещнем отново в друг урок. Дотогава, успех!

Цитатите са от Книгата за машинно обучение от сто страници на Андрий Бурков