Vytváření prvního klasifikátoru strojového učení v Pythonu



Tento článek vám pomůže sestavit klasifikátor strojového učení v Pythonu od Scratch. Poskytne vám také podrobnou znalost klasifikace.

je právě teď módní slovo. Některé neuvěřitelné věci se dějí pomocí strojového učení. Z toho, že jsme naši osobní asistent , k rozhodování o našich cestovní trasy , pomáhat nám nakupovat, pomáhat nám při řízení našich podniků, starat se o naše zdraví a wellness, strojové učení je integrováno do naší každodenní existence na tak základních úrovních, že si většinou ani neuvědomujeme, že se na to spoléháme. V tomto článku se budeme řídit přístupem začátečníka k implementaci standardního klasifikátoru strojového učení v Pythonu.

Přehled strojového učení

Machine Learning je koncept, který umožňuje stroji učit se z příkladů a zkušeností, a to i bez výslovného programování. Takže místo toho, abyste psali kód, je to, že dáváte data do obecného algoritmu a algoritmus / stroj vytváří logiku na základě daných dat.





Klasifikátor strojového učení

Strojové učení zahrnuje schopnost strojů přijímat rozhodnutí, hodnotit výsledky svých akcí a zlepšovat své chování, aby postupně dosahovaly lepších výsledků.



Proces učení probíhá třemi hlavními způsoby

  • Kontrolované učení
  • Učení bez dozoru
  • Posílení učení

Šablona pro klasifikátory strojového učení

Nástroje pro strojové učení jsou poměrně pohodlně poskytovány v knihovně Pythonu pojmenované jako scikit-learn, ke které je velmi jednoduchý přístup a použití.



Nainstalujte scikit-learn pomocí příkazového řádku pomocí:

pip install -U scikit-learn

Pokud jste uživatelem anakondy, můžete ve výzvě anakondy použít:

conda install scikit-learn

Instalace vyžaduje předchozí instalaci balíčků NumPy a SciPy do vašeho systému.

Předběžné zpracování: Prvním a nejdůležitějším krokem v jakékoli analýze dat na základě strojového učení je předzpracování. Správné znázornění a vyčištění dat je naprosto nezbytné, aby model ML dobře trénoval a dosahoval svého potenciálu.

Krok 1 - Importujte potřebné knihovny

importovat numpy jako np importovat pandy jako pd importovat matplotlib.pyplot jako plt

Krok 2 - Importujte datovou sadu

datová sada = pd.read_csv ()

Pak rozdělíme datovou sadu na nezávislé a závislé proměnné. Nezávislými proměnnými jsou vstupní data a závislou proměnnou jsou výstupní data.

X = hodnoty dataset.iloc []. Y = hodnoty dataset.iloc []

Krok 3 - Zacházejte s chybějícími údaji

Datová sada může obsahovat prázdné nebo nulové hodnoty, což může způsobit chyby v našich výsledcích. Proto se musíme s těmito záznamy vypořádat. Běžnou praxí je nahradit hodnoty null běžnou hodnotou, jako je průměrná nebo nejčastější hodnota v daném sloupci.

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

Krok 4 - Převést kategorické proměnné na číselné proměnné

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

Nyní po kódování se může stát, že stroj předpokládá číselná data jako pořadí pro kódované sloupce. Abychom tedy poskytli stejnou váhu, musíme převést čísla na jedno horké vektory pomocí třídy OneHotEncoder.

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

Krok 5 - Proveďte změnu měřítka

co je indexof v JavaScriptu

Tento krok má řešit nesrovnalosti vyplývající z neodpovídajících stupnic proměnných. Proto je všechny škálujeme na stejný rozsah, aby při vstupu do modelu dostali stejnou váhu. Pro tento účel používáme objekt třídy StandardScaler.

ze sklearn.preprocessing import StandardScaler sc_X = StandardScaler () X = sc_X.fit_transform (X)

Krok 6 - Rozdělte datovou sadu na tréninková a testovací data

Jako poslední krok předzpracování je nutné datovou sadu rozdělit na tréninkovou sadu a testovací sadu. Standardní poměr rozdělení vlakové zkoušky je 75% - 25%. Můžeme upravit podle požadavků. Funkce train_test_split () to může udělat za nás.

ze sklearn.model_selection import train_test_split X_train, X_test, y_train, y_test = train_test_split (X, y, test_size = 0,25)

Vytváření modelu: Tento krok je ve skutečnosti docela jednoduchý. Jakmile se rozhodneme, který model použijeme na data, můžeme vytvořit objekt odpovídající třídy a umístit objekt na naši tréninkovou sadu, přičemž X_train jako vstup a y_train jako výstup.

od sklearn. importovat klasifikátor = () classifier.fit (X_train, y_train)

Model je nyní vyškolený a připravený. Nyní můžeme náš model použít na testovací sadu a najít předpokládaný výstup.

y_pred = classifier.predict (X_test)

Zobrazení výsledků: Výkon klasifikátoru lze posoudit parametry přesnosti, přesnosti, odvolání a skóre f1. Tyto hodnoty lze zobrazit pomocí metody známé jako klasifikace_report (). Na t lze také pohlížet jako na matici zmatků, která nám pomáhá zjistit, kolik z které kategorie dat bylo správně klasifikováno.

java najít největší číslo v poli
ze sklearn.metrics import confusion_matrix cm = confusion_matrix (y_test, y_pred) tisk (cm) ze sklearn.metrics import klasifikace_report target_names = [] tisk (klasifikace_report (y_test, y_pred, target_names = target_names))

Problém klasifikátoru strojového učení

Použijeme velmi populární a jednoduchý datový soubor Iris, který obsahuje rozměry květin ve 3 kategoriích - Iris-setosa, Iris-versicolor a Iris-virginica. V datové sadě je 150 záznamů.

# Import knihoven import numpy jako np import matplotlib.pyplot jako plt import pandas jako pd # Import datové sady dataset = pd.read_csv ('iris.csv')

Podívejme se nyní na datovou sadu.

dataset.head ()

Máme 4 nezávislé proměnné (kromě Id), jmenovitě čísla sloupců 1-4 a sloupec 5 je závislá proměnná. Takže je můžeme oddělit.

X = dataset.iloc [:, 1: 5] .hodnoty y = dataset.iloc [:, 5] .hodnoty

Nyní můžeme rozdělit datovou sadu na školení a testování.

# Rozdělení datové sady na tréninkovou sadu a testovací sadu ze sklearn.model_selection import train_test_split X_train, X_test, y_train, y_test = train_test_split (X, y, test_size = 0,25)

Nyní na datovou sadu použijeme klasifikátor logistické regrese.

# Sestavování a trénování modelu z sklearn.linear_model import LogisticRegression classifier = LogisticRegression () classifier.fit (X_train, y_train) # Predikce výsledků testovací sady y_pred = classifier.predict (X_test)

Posledním krokem bude analýza výkonu trénovaného modelu.

# Vytvoření matice zmatku z sklearn.metrics import confusion_matrix cm = confusion_matrix (y_test, y_pred) tisk (cm)

To nám ukazuje, že 13 položek první kategorie, 11 druhé a 9 třetí kategorie model správně předpovídá.

# Generování přesnosti, přesnosti, odvolání a skóre f1 ze sklearn.metrics import classification_report target_names = ['Iris-setosa', 'Iris-versicolor', 'Iris-virginica'] tisk (klasifikace_report (y_test, y_pred, target_names = target_names) )

Zpráva ukazuje hodnoty přesnosti, vyvolání, skóre f1 a přesnosti modelu na naší testovací sadě, která se skládá z 38 položek (25% datové sady).

Gratulujeme, úspěšně jste vytvořili a implementovali svůj první klasifikátor strojového učení v Pythonu! Chcete-li získat podrobné znalosti spolu s jeho různými aplikacemi se můžete zaregistrovat k živému online trénování Pythonu s podporou 24/7 a celoživotním přístupem.