От разработването на първата невронна мрежа от неврофизиолога Уорън Маккулох и математика Уолтър Питс, когато и двамата велики учени написаха статия за невроните и оттогава светът е свидетел на много разработки и изобретения в областта на машинното обучение. Сега една машина може да се учи от огромното количество данни, налични днес, и да прогнозира в рамките на няколко секунди.

Можете да намерите пълния бележник за кода тук: https://www.kaggle.com/harshitkhandelwal/classification-algorithm-s-comparison.

В този урок ще сравня някои от класификационните алгоритми, присъстващи в обществото днес и които се използват активно. Тук ще представя само параметрите по подразбиране, предадени на модела за прогнозиране, така че той ще предостави само приблизителна оценка за това как се представя даден алго. Останалото зависи от човека какви настройки прави, за да получи по-висока точноста.

Така че нека се потопим направо, като първо импортираме данните, за да ги опознаем. Наборът от данни присъства в kaggle под името „Качество на червеното вино“.

Време е да си поиграем с данните. Първата задача е да се запознаете с данните. Подобно на това, което показва изображението по-долу, са две най-важни неща, първо, колоната за качество има категорична стойност, варираща от 3 до 8, като 8 е най-високата колона. Второ, алкохолното съдържание на виното се увеличава с повишаване на качеството на виното. Така по-високо е качеството на виното, толкова по-високо ще бъде и качеството на виното.

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

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

Малкото от прозренията, които могат да бъдат извлечени от следната топлинна карта, са:

  • Колоната с pH има силно отрицателна корелация с колоната с фиксирана киселинност, което означава, че ако колоната с фиксирана киселинност се повиши, тогава pH определено ще се понижи или обратното.
  • Както е обяснено в горната лентова графика, ако качеството на виното се повиши, тогава алкохолното съдържание на виното също ще се повиши и което също може да се види от топлинната карта, че колоната за алкохол има много добра положителна корелация с колоната за качество.
  • И така нататък и така нататък вървим напред.

По-долу е кодът, който беше използван за разработване на списък за сравнение, съдържащ всички алгоритми, използвани в ядрото.

from sklearn.svm import SVC,NuSVC 
from xgboost import XGBClassifier 
from sklearn.metrics import accuracy_score 
from sklearn.preprocessing import LabelEncoder 
from sklearn.neighbors import KNeighborsClassifier 
from sklearn.model_selection import train_test_split 
from sklearn.naive_bayes import GaussianNB,MultinomialNB 
from sklearn.linear_model import SGDClassifier, LogisticRegression from sklearn.tree import DecisionTreeClassifier, ExtraTreeClassifier from sklearn.discriminant_analysis import QuadraticDiscriminantAnalysis, LinearDiscriminantAnalysis 
from sklearn.ensemble import RandomForestClassifier, AdaBoostClassifier, GradientBoostingClassifier 
classification_algos_name = 
["SVC", "NuSVC", "KNeighborsClassifier","GaussianNB",
 "MultinomialNB",
 "SGDClassifier",
 "LogisticRegression", 
"DecisionTreeClassifier",                             "ExtraTreeClassifier",
 "QuadraticDiscriminantAnalysis",
 "LinearDiscriminantAnalysis", 
"RandomForestClassifier",
 "AdaBoostClassifier",
"GradientBoostingClassifier", "XGBClassifier"] 
classification_algos=
[SVC(),NuSVC(nu=0.285),
KNeighborsClassifier(),
GaussianNB(),MultinomialNB(),
SGDClassifier(),
LogisticRegression(),                       DecisionTreeClassifier(),                       ExtraTreeClassifier(),                       QuadraticDiscriminantAnalysis(),                       LinearDiscriminantAnalysis(),                       RandomForestClassifier(),                       AdaBoostClassifier(),                       GradientBoostingClassifier(),
XGBClassifier()

Тъй като вече разбрахме данните и създадохме списъка с алгоритми, които да се използват при сравнението, нека преминем към подготовката на данните за напасване и прогнозиране.

Първата стъпка от подготовката на данните е преобразуването на колоната за качество в двоична колона. Така че създадох 2 контейнера, които ще разделят цялата колона на куп „добри“ и „лоши“ етикети. Тогава класът LabelEncoder на библиотеката sklearn се използва за преобразуване на етикетите в двоични стойности.

Сега нека разделим данните на два отделни набора от данни за обучение и тестване.

Използвайки цикъла „за“, предвиждам, използвайки всеки алгоритъм, който е дефиниран по-горе, и след това записах тяхната точност в списък (резултатът от който е показан по-долу).

Само като предимство начертах точността на всеки модел върху лентова графика. За съжаление добавих инструмента за задържане към боке графиката, който не може да бъде показан тук - така че отидете на връзката kaggle, предоставена по-горе, за да видите страхотната анимация.

Надявам се, че сте харесали този малък урок и, моля, внимавайте за бъдещите уроци. Ако има някаква грешка, моля, посочете я, за да мога да ги подобря.