Изграждане на първия ви класификатор за машинно обучение в Python



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

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

Преглед на машинното обучение

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





Класификатор за машинно обучение

Машинното обучение включва способността на машините да вземат решения, да оценяват резултатите от своите действия и да подобряват поведението си, за да постигат по-добри резултати последователно.



Учебният процес протича по три основни начина

какво е hashmap и hashtable в java
  • Контролирано обучение
  • Учене без надзор
  • Подсилващо обучение

Шаблон за класификатори за машинно обучение

Инструментите за машинно обучение се предоставят доста удобно в библиотека на Python, наречена scikit-learn, които са много лесни за достъп и прилагане.



Инсталирайте scikit-learn чрез командния ред, като използвате:

pip install -U scikit-learn

Ако сте потребител на anaconda, в подканата за anaconda можете да използвате:

conda инсталирайте scikit-learn

Инсталацията изисква предварително инсталиране на пакети NumPy и SciPy във вашата система.

Предварителна обработка: Първата и най-необходима стъпка във всеки анализ на данни, базиран на машинно обучение, е частта за предварителна обработка. Правилното представяне и почистване на данните е абсолютно необходимо за модела ML да се обучава добре и да изпълнява потенциала си.

Етап 1 - Импортирайте необходимите библиотеки

импортиране на numpy като np импортиране на панди като pd импортиране на matplotlib.pyplot като plt

Стъпка 2 - Импортиране на набора от данни

набор от данни = pd.read_csv ()

След това разделяме набора от данни на независими и зависими променливи. Независимите променливи трябва да бъдат входните данни, а зависимата променлива - изходните данни.

X = набор от данни.iloc []. Стойности y = набор от данни.iloc []. Стойности

Стъпка 3 - Обработвайте липсващи данни

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

от sklearn.preprocessing import Imputer imputer = Imputer (missing_values ​​= 'NaN', strategy = 'mean', axis = 0) imputer = imputer.fit (X []) X [] = imputer.transform (X [])

Стъпка 4 - Преобразувайте категориалните променливи в числови променливи

от sklearn.preprocessing import LabelEncoder le_X = LabelEncoder () X [] = le_X.fit_transform (X []) labelencoder_y = LabelEncoder () y = labelencoder_y.fit_transform (y)

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

от sklearn.preprocessing import OneHotEncoder oneHE = OneHotEncoder (categorical_features = []) X = oneHE.fit_transform (X) .toarray ()

Стъпка 5 - Извършете мащабиране

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

от sklearn.preprocessing import StandardScaler sc_X = StandardScaler () X = sc_X.fit_transform (X)

Стъпка 6 - Разделете набора от данни в данни за обучение и тестване

разлика между bigdata и hadoop

Като последна стъпка от предварителната обработка наборът от данни трябва да бъде разделен на набор за обучение и набор от тестове. Стандартното съотношение на разделянето на влак-тест е 75% -25%. Можем да модифицираме според изискванията. Функцията train_test_split () може да направи това вместо нас.

от sklearn.model_selection внос train_test_split X_train, X_test, y_train, y_test = train_test_split (X, y, test_size = 0.25)

Изграждане на модел: Тази стъпка всъщност е доста проста. След като решим кой модел да приложим върху данните, можем да създадем обект от съответния клас и да поставим обекта в нашия учебен набор, като разглеждаме X_train като вход и y_train като изход.

от sklearn. импортиране на класификатор = () Classifier.fit (X_train, y_train)

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

y_pred = класификатор.predict (X_test)

Преглед на резултатите: Ефективността на класификатора може да бъде оценена чрез параметрите на точност, точност, изземване и f1-резултат. Тези стойности могат да се видят с помощта на метод, известен като класификация_отчет (). t може да се разглежда и като матрица на объркване, която ни помага да разберем колко от коя категория данни са класифицирани правилно.

от sklearn.metrics импортиране на confusion_matrix cm = confusion_matrix (y_test, y_pred) print (cm) от sklearn.metrics import класификация_отчет target_names = [] print (класификация_отчет (y_test, y_pred, target_names = target_names))

Проблем с класификатора на машинното обучение

Ще използваме много популярния и прост набор от данни за Iris, съдържащ размери на цветя в 3 категории - Iris-setosa, Iris-versicolor и Iris-virginica. В набора от данни има 150 записа.

# Импортиране на библиотеки импортиране на numpy като np импорт matplotlib.pyplot като plt импортиране на панди като pd # Импортиране на набора от данни = pd.read_csv ('iris.csv')

Нека да разгледаме набора от данни сега.

набор от данни.head ()

Имаме 4 независими променливи (без Id), а именно номера на колони 1-4, а колона 5 е зависимата променлива. Така че можем да ги отделим.

X = набор от данни.iloc [:, 1: 5] .values ​​y = набор от данни.iloc [:, 5] .values

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

# Разделяне на набора от данни в учебния комплект и тестовия набор от sklearn.model_selection импортиране train_test_split X_train, X_test, y_train, y_test = train_test_split (X, y, test_size = 0.25)

Сега ще приложим класификатор на логистична регресия към набора от данни.

# Изграждане и обучение на модела от sklearn.linear_model import LogisticRegression klasifikator = LogisticRegression () klasifikator.fit (X_train, y_train) # Предвиждане на резултатите от тестовия набор y_pred = klasifier.predict (X_test)

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

# Създаване на матрицата за объркване от sklearn.metrics импортиране на confusion_matrix cm = confusion_matrix (y_test, y_pred) print (cm)

Това ни показва, че 13 записа от първата категория, 11 от втората и 9 от третата категория са правилно предвидени от модела.

# Генериране на точност, прецизност, извикване и f1-резултат от sklearn.metrics импортиране на classic_report target_names = ['Iris-setosa', 'Iris-versicolor', 'Iris-virginica'] print (report_class (y_test, y_pred, target_names = target_names) )

Докладът показва стойностите на точността, изземването, f1-оценката и точността на модела в нашия тестов набор, който се състои от 38 записа (25% от набора от данни).

Поздравления, успешно създадохте и внедрихте първия си класификатор за машинно обучение в Python! За да получите задълбочени познания по заедно с различните му приложения, можете да се запишете за онлайн обучение на Python на живо с 24/7 поддръжка и доживотен достъп.