Bouw je eerste Machine Learning Classifier in Python



Dit artikel helpt je bij het bouwen van een Machine Learning Classifier in Python from Scratch. Het geeft u ook een gedetailleerde kennis van classificatie.

is het modewoord op dit moment. Er worden ongelooflijke dingen gedaan met behulp van machine learning. Van ons zijn persoonlijke assistent , om onze te beslissen reisroutes , ons helpen bij het winkelen, ons helpen bij het runnen van onze bedrijven, om voor ons te zorgen gezondheid en welzijn, machine learning is op zulke fundamentele niveaus in ons dagelijks bestaan ​​geïntegreerd, dat we ons meestal niet eens realiseren dat we erop vertrouwen. In dit artikel zullen we een beginnersaanpak volgen om een ​​standaard machine learning classifier in Python te implementeren.

Overzicht van machine learning

Machine Learning is een concept waarmee de machine kan leren van voorbeelden en ervaringen, en dat ook zonder expliciet te worden geprogrammeerd. Dus in plaats van dat u de code schrijft, voert u gegevens naar het generieke algoritme in, en het algoritme / de machine bouwt de logica op basis van de gegeven gegevens.





Machine Learning Classifier

Machine Learning omvat het vermogen van machines om beslissingen te nemen, de resultaten van hun acties te beoordelen en hun gedrag te verbeteren om achtereenvolgens betere resultaten te behalen.



Het leerproces vindt plaats op drie belangrijke manieren

  • Leren onder toezicht
  • Ongecontroleerd leren
  • Versterkend leren

Een sjabloon voor classificatoren voor machine learning

Tools voor machinaal leren worden vrij gemakkelijk geleverd in een Python-bibliotheek met de naam scikit-learn, die heel eenvoudig toegankelijk en toe te passen zijn.



Installeer scikit-learn via de opdrachtprompt met behulp van:

pip install -U scikit-learn

Als je een anaconda-gebruiker bent, kun je op de anaconda-prompt gebruiken:

conda installeer scikit-learn

De installatie vereist voorafgaande installatie van NumPy- en SciPy-pakketten op uw systeem.

Voorverwerking: De eerste en meest noodzakelijke stap in elke op machine learning gebaseerde data-analyse is het voorverwerkingsgedeelte. Correcte weergave en opschoning van de gegevens is absoluut essentieel voor het ML-model om goed te trainen en optimaal te presteren.

Stap 1 - Importeer noodzakelijke bibliotheken

importeer numpy als np importeer panda's als pd importeer matplotlib.pyplot als plt

Stap 2 - Importeer de dataset

verschil tussen hash-tabel en hash-map
dataset = pd.read_csv ()

Vervolgens splitsen we de dataset op in onafhankelijke en afhankelijke variabelen. De onafhankelijke variabelen zijn de invoergegevens en de afhankelijke variabele zijn de uitvoergegevens.

X = dataset.iloc []. Waarden y = dataset.iloc []. Waarden

Stap 3 - Omgaan met ontbrekende gegevens

De dataset kan blanco of null-waarden bevatten, wat fouten in onze resultaten kan veroorzaken. Daarom moeten we dergelijke inzendingen afhandelen. Het is gebruikelijk om de null-waarden te vervangen door een gemeenschappelijke waarde, zoals het gemiddelde of de meest voorkomende waarde in die kolom.

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

Stap 4 - Converteer categorische variabelen naar numerieke variabelen

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

Nu, na het coderen, kan het gebeuren dat de machine de numerieke gegevens aanneemt als een rangorde voor de gecodeerde kolommen. Om een ​​gelijk gewicht te geven, moeten we de getallen dus converteren naar one-hot-vectoren, met behulp van de OneHotEncoder-klasse.

wanneer u dit moet gebruiken. in java
van sklearn.preprocessing import OneHotEncoder oneHE = OneHotEncoder (categorical_features = []) X = oneHE.fit_transform (X) .toarray ()

Stap 5 - Voer schaalvergroting uit

Deze stap is bedoeld om discrepanties op te lossen die voortkomen uit niet-overeenkomende schalen van de variabelen. Daarom schalen we ze allemaal naar hetzelfde bereik, zodat ze hetzelfde gewicht krijgen terwijl ze in het model worden ingevoerd. Hiervoor gebruiken we een object uit de klasse StandardScaler.

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

Stap 6 - Splits de dataset in trainings- en testgegevens

Als laatste stap van de voorverwerking moet de dataset worden onderverdeeld in een trainingsset en testset. De standaardverhouding van de treintestverdeling is 75% -25%. We kunnen wijzigen volgens vereisten. De train_test_split () functie kan dit voor ons doen.

van sklearn.model_selection importeer train_test_split X_train, X_test, y_train, y_test = train_test_split (X, y, test_size = 0.25)

Model gebouw: Deze stap is eigenlijk vrij eenvoudig. Zodra we hebben besloten welk model op de gegevens moet worden toegepast, kunnen we een object van de bijbehorende klasse maken en het object op onze trainingsset plaatsen, waarbij we X_train als de invoer en y_train als de uitvoer beschouwen.

van sklearn. importeer classifier = () classifier.fit (X_train, y_train)

Het model is nu getraind en klaar. We kunnen nu ons model toepassen op de testset en voorspelde output vinden.

y_pred = classifier.predict (X_test)

Resultaten bekijken: De prestaties van een classifier kunnen worden beoordeeld aan de hand van de parameters nauwkeurigheid, precisie, recall en f1-score. Deze waarden kunnen worden bekeken met behulp van een methode die bekend staat als classificatie_rapport (). t kan ook worden gezien als een verwarringmatrix die ons helpt te weten hoeveel van welke gegevenscategorieën correct zijn geclassificeerd.

van sklearn.metrics import confusion_matrix cm = confusion_matrix (y_test, y_pred) print (cm) van sklearn.metrics import classificatie_rapport target_names = [] print (classificatie_rapport (y_test, y_pred, target_names = target_names))

Probleem met classificatie van machine learning

We zullen de zeer populaire en eenvoudige Iris-dataset gebruiken, met afmetingen van bloemen in 3 categorieën: Iris-setosa, Iris-versicolor en Iris-virginica. Er zijn 150 items in de dataset.

# De bibliotheken importeren importeer numpy als np importeer matplotlib.pyplot als plt importeer panda's als pd # Importeer de dataset dataset = pd.read_csv ('iris.csv')

Laten we nu de dataset bekijken.

dataset.head ()

We hebben 4 onafhankelijke variabelen (exclusief de Id), namelijk kolomnummers 1-4, en kolom 5 is de afhankelijke variabele. Zodat we ze kunnen scheiden.

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

Nu kunnen we de gegevensset splitsen in training en testen.

# Het splitsen van de dataset in de Trainingsset en Testset vanuit sklearn.model_selection import train_test_split X_train, X_test, y_train, y_test = train_test_split (X, y, test_size = 0.25)

Nu gaan we een Logistic Regression classifier toepassen op de dataset.

# Het model bouwen en trainen vanuit sklearn.linear_model import LogisticRegression classifier = LogisticRegression () classifier.fit (X_train, y_train) # De resultaten van de testset voorspellen y_pred = classifier.predict (X_test)

De laatste stap is het analyseren van de prestaties van het getrainde model.

python def __init__
# De verwarringmatrix maken van sklearn.metrics import confusion_matrix cm = confusion_matrix (y_test, y_pred) print (cm)

Hieruit blijkt dat 13 inzendingen van de eerste categorie, 11 van de tweede en 9 van de derde categorie correct worden voorspeld door het model.

# Nauwkeurigheid, precisie, recall en f1-score genereren uit sklearn.metrics import Classification_report target_names = ['Iris-setosa', 'Iris-versicolor', 'Iris-virginica'] print (classificatie_rapport (y_test, y_pred, target_names = target_names) )

Het rapport toont de precisie-, recall-, f1-score en nauwkeurigheidswaarden van het model op onze testset, die bestaat uit 38 items (25% van de dataset).

Gefeliciteerd, je hebt met succes je eerste machine learning classifier gemaakt en geïmplementeerd in Python! Om diepgaande kennis op te doen over samen met de verschillende toepassingen kunt u zich inschrijven voor live Python online training met 24/7 ondersteuning en levenslange toegang.