Scikit learn - Machine Learning met Python



Scikit learn blog laat je kennismaken met Machine Learning in Python. Het bevat een use-case waarin we logistieke regressie zullen implementeren met behulp van scikit learn.

In deze blog zullen we het leren over Scikit in python bespreken. Voordat we het hebben over Scikit-leren, moet men het concept van machine learning begrijpenen moet weten hoe te gebruiken . Met machine learning hoeft u uw inzichten niet handmatig te verzamelen. U heeft alleen een algoritme nodig en de machine doet de rest voor u! Is dit niet spannend? Scikit leren is een van de attracties waar we machine learning kunnen implementeren met Python. Hetis een gratis machine learning-bibliotheek met eenvoudige en efficiënte tools voor data-analyse en mining.Ik zal je door de volgende onderwerpen leiden, die als basis zullen dienen voor de aankomende blogs:

Wat is machine learning?

Machine learning is een soort kunstmatige intelligentie waarmee softwaretoepassingen kunnen leren van de gegevens en nauwkeuriger resultaten kunnen voorspellen zonder menselijke tussenkomst. Maar hoe gebeurt dat? Daarvoor moet de machine worden getraind op enkele gegevens en op basis daarvan zal hij een patroon detecteren om een ​​model te maken.Bij dit proces van het verkrijgen van kennis uit de data en het leveren van krachtige inzichten draait alles om machine learning. Raadpleeg de onderstaande afbeelding voor een beter begrip van de werking ervan:





MachineLearning - Scikit Learn - Edureka

Met behulp van de gegevens leert het systeem een ​​algoritme en gebruikt het vervolgens om een ​​voorspellend model te bouwen. Later passen we het model aan of vergroten we de nauwkeurigheid van het model met behulp van de feedbackdata. Met behulp van deze feedbackdata stemmen we het model af en voorspellen we actie op de nieuwe dataset. Wij zullenbespreek een use case van een van de algoritmebenaderingen waarbij we de gegevens zullen trainen en testen die u zullen helpen een beter idee te krijgen of het goed past bij uw specifieke probleem of niet.



Vervolgens zijn er drie soorten machine learning:

    • Leren onder toezicht : Dit is een proces van een algoritme dat leert van de trainingsdataset. Bij begeleid leren genereert u een mappingfunctie tussen de invoervariabele (X) en een uitvoervariabele (Y) en gebruikt u een algoritme om een ​​functie daartussen te genereren. Het is ook bekend als voorspellende modellering, wat verwijst naar een proces van het maken van voorspellingen met behulp van de gegevens. Enkele van de algoritmen zijn lineaire regressie, logistische regressie, beslissingsboom, willekeurig bos en naïeve Bayes-classificatie. We zullen verder een use case van begeleid leren bespreken, waarbij we de machine trainen met logistieke regressie .
    • Ongecontroleerd leren : Dit is een proces waarbij een model wordt getraind met behulp van informatie die niet is gelabeld. Dit proces kan worden gebruikt om de invoergegevens in klassen te clusteren op basis van hun statistische eigenschappen. Ongecontroleerd leren wordt ook wel c genoemdlusteringanalyse, wat betekent dat objecten worden gegroepeerd op basis van de informatie in de gegevens die de objecten of hun relatie beschrijven. Het doel is dat objecten in de ene groep op elkaar lijken, maar verschillen van objecten in een andere groep. Enkele van de algoritmen omvatten K-mean-clustering, hiërarchische clustering enz.
    • Versterkend leren: Bekrachtigend leren is leren door interactie met een ruimte of een omgeving.Een RL-agent leert van de gevolgen van zijn acties, in plaats van expliciet te worden onderwezen. Het selecteert zijn acties op basis van zijn ervaringen uit het verleden (exploitatie) en ook door nieuwe keuzes (verkenning).

Overzicht van Scikit Learn

Scikit Learn is een bibliotheek die wordt gebruikt om machine learning in Python uit te voeren. Scikit Learn is een open source-bibliotheek met een BSD-licentie en is herbruikbaar in verschillende contexten, wat academisch en commercieel gebruik aanmoedigt. Het biedt een reeks gesuperviseerde en niet-gesuperviseerde leeralgoritmen in Python.Scikit Learn bestaat uit populaire algoritmen en bibliotheken. Afgezien daarvan bevat het ook de volgende pakketten:



  • NumPy
  • Matplotlib
  • SciPy (Wetenschappelijke Python)

Om Scikit Learn te implementeren, moeten we eerst de bovenstaande pakketten importeren. Als je niet bekend bent met deze bibliotheken, kun je mijn vorige blogs bekijken op en . U kunt deze twee pakketten downloaden met de opdrachtregel of als u PYCharm, je kunt het direct installeren door naar je instelling te gaan op dezelfde manier als voor andere pakketten.

Vervolgens op een vergelijkbare manier, je moet Sklearn importeren.Scikit Learn is gebouwd op de SciPy (Scientific Python) die moet worden geïnstalleerd voordat u Scikit-learn kunt gebruiken. U kunt hiernaar verwijzen website om hetzelfde te downloaden. Installeer ook Scipy en het wielpakket als het niet aanwezig is, je kunt het onderstaande commando typen:

pip scipy installeren

Ik heb het al gedownload en geïnstalleerd, u kunt de onderstaande schermafbeelding raadplegen voor eventuele verwarring.

Laten we na het importeren van de bovenstaande bibliotheken dieper graven en begrijpen hoe Scikit Learn precies wordt gebruikt.

Scikit Learn wordt geleverd met voorbeeldgegevenssets, zoals iris en cijfers . U kunt de datasets importeren en ermee spelen. Daarna moet u SVM importeren, wat staat voor Support Vector Machine. SVM is een vorm van machine learning die wordt gebruikt om gegevens te analyseren.

standaardwaarde van string in java

Laten we een voorbeeld nemen dat we zullen nemen cijfers dataset en het zal de nummers voor ons categoriseren, bijvoorbeeld 0 1 2 3 4 5 6 7 8 9. Raadpleeg de onderstaande code:

importeer matplotlib.pyplot als plt uit sklearn importeer datasets uit sklearn import svm digits = datasets.load_digits () print (digits.data)

Uitgang -

[[0. 0. 5. ..., 0. 0. 0.] [0. 0. 0. ..., 10. 0. 0.] [0. 0. 0. ..., 16. 9. 0.] ..., [0. 0. 1. ..., 6. 0. 0.] [0. 0. 2. ..., 12. 0. 0.] [0, 0. 10. ..., 12. 1. 0.]]

Hier hebben we zojuist de bibliotheken, SVM, datasets geïmporteerd en de data afgedrukt. Het is een lange reeks cijfers waarin de gegevens worden opgeslagen. Het geeft toegang tot de functies die kunnen worden gebruikt om het cijfers monsters. Vervolgens kunt u ook enkele andere bewerkingen proberen, zoals doel, afbeeldingen enz. Beschouw het onderstaande voorbeeld:

importeer matplotlib.pyplot als plt uit sklearn importeer datasets uit sklearn import svm digits = datasets.load_digits () print (digits.target) print (digits.images [0])

Uitvoer -

[0 1 2 ..., 8 9 8] // doel van de gegevens [[0. 0. 5. 13. 9. 1. 0. 0.] // afbeelding van de gegevens [0. 0. 13. 15. 10. 15. 5. 0.] [0. 3. 15. 2. 0. 11. 8. 0.] [0. 4. 12. 0. 0. 8. 8. 0.] [0. 5. 8. 0. 0. 9. 8. 0.] [0. 4. 11. 0. 1. 12. 7. 0.] [0. 2. 14. 5. 10. 12. 0. 0. ] [0. 0. 6. 13. 10. 0. 0. 0.]]

Zoals u hierboven kunt zien, worden de doelcijfers en de afbeelding van de cijfers afgedrukt. cijfers. doel geeft de grondwaarheid voor de cijfer dataset, dat is het nummer dat overeenkomt met elke cijferafbeelding. Vervolgens zijn gegevens altijd een 2D-array met een vorm (n_samples, n_features), hoewel de originele gegevens mogelijk een andere vorm hebben gehad. Maar in het geval van de cijfers is elk origineel monster een afbeelding met een vorm (8,8) en kan worden geopend met cijfers . beeld.

Leren en voorspellen

verhoog iets tot een macht in java

Vervolgens hebben we in Scikit Learn een dataset gebruikt (steekproef van 10 mogelijke klassen, cijfers van nul tot negen) en we moeten de cijfers voorspellen wanneer een afbeelding wordt gegeven. Om de klas te voorspellen, hebben we een schatter wat helpt bij het voorspellen van de klassen waartoe ongeziene monsters behoren. In Scikit Learn hebben we een schatter voor classificatie, een python-object dat de methoden implementeert passen (x, y) en voorspellen (T). Laten we het onderstaande voorbeeld eens bekijken:

importeer matplotlib.pyplot als plt uit sklearn importeer datasets uit sklearn import svm digits = datasets.load_digits () // dataset clf = svm.SVC (gamma = 0.001, C = 100) print (len (digits.data)) x, y = digits.data [: - 1], digits.target [: - 1] // train de gegevens clf.fit (x, y) print ('Prediction:', clf.predict (digits.data [-1]) ) // voorspel de gegevens plt.imshow (digits.images [-1], cmap = plt.cm.gray_r, interpolation = 'dichtstbijzijnde') plt.show ()

Uitgang -

1796
Voorspelling: [8]


In het bovenstaande voorbeeld hadden we eerst de lengte gevonden en 1796 voorbeelden geladen. Vervolgens hebben we deze gegevens gebruikt als leergegevens, waarbij we het laatste element en het eerste negatieve element moeten testen. We moeten ook controleren of de machine de juiste gegevens heeft voorspeld of niet. Daarvoor hadden we Matplotlib gebruikt waar we de afbeelding van cijfers hadden weergegeven.Dus tot slot: je hebt cijfers over gegevens, je hebt het doel, je past en voorspelt het en dus ben je klaar om te gaan! Het is echt snel en gemakkelijk, nietwaar?

U kunt de doellabels ook visualiseren met een afbeelding, raadpleeg hiervoor de onderstaande code:

importeer matplotlib.pyplot als plt uit sklearn importeer datasets uit sklearn import svm digits = datasets.load_digits () # Voeg de afbeeldingen en doellabels samen in een lijst images_and_labels = list (zip (digits.images, digits.target)) # voor elk element in de lijst voor index, (afbeelding, label) in enumerate (images_and_labels [: 8]): # initialiseer een subplot van 2X4 op de i + 1-de positie plt. subplot (2, 4, index + 1) # Afbeeldingen weergeven in alle subplots plt.imshow (afbeelding, cmap = plt.cm.gray_r, interpolation = 'dichtstbijzijnde') # Voeg een titel toe aan elke subplot plt.title ('Training:' + str (label)) # Toon de plot plt. tonen()

Uitvoer-


Zoals je in de bovenstaande code kunt zien, hebben we de ‘zip’ -functie gebruikt om de afbeeldingen en doellabels in een lijst samen te voegen en deze vervolgens op te slaan in een variabele, bijvoorbeeld images_and_labels. Daarna hebben we op elke positie de eerste acht elementen in een raster van 2 bij 4 geïndexeerd. Daarna hebben we met behulp van Matplotlib zojuist de afbeeldingen getoond en de titel als ‘training’ toegevoegd.

Use Case - Voorspelling met behulp van logistieke regressie

Probleemstelling - Een autobedrijf heeft een nieuwe SUV op de markt gebracht. Met behulp van de eerdere gegevens over de verkoop van hun SUV's willen ze de categorie mensen voorspellen die mogelijk geïnteresseerd zijn om dit te kopen.

Laten we hiervoor een dataset bekijken waar ik heb UserId, geslacht, leeftijd, geschat salaris en gekocht als kolommen. Dit is slechts een voorbeelddataset, u kunt de volledige dataset downloaden van hier . Zodra we de gegevens in pyCharm hebben geïmporteerd, ziet het er ongeveer zo uit.

Laten we deze gegevens nu eens begrijpen. Zoals je kunt zien in de bovenstaande dataset, hebben we categorieën zoals id, geslacht, leeftijd etc. Nu gebaseerd op deze categorieën gaan we onze machine trainen en het nee voorspellen. van aankopen. Dus hier hebben we onafhankelijke variabelen als ‘leeftijd’, ‘verwacht salaris’ en afhankelijke variabele als ‘gekocht’. Nu gaan we leren onder begeleiding toepassen, d.w.z. logistisch regressie-algoritme om het aantal aankopen te achterhalen met behulp van de bestaande gegevens.

Laten we eerst een overzicht krijgen van logistieke regressie.

Logistieke regressie - Logistische regressie levert resultaten op in een binair formaat dat wordt gebruikt om de uitkomst van een categorisch afhankelijke variabele te voorspellen. Het wordt het meest gebruikt wanneer de afhankelijke variabele binair is, d.w.z. het aantal beschikbare categorieën is twee, zoals de gebruikelijke outputs van logistieke regressie zijn -

  • Ja en nee
  • Goed en fout
  • Hoog en laag
  • Pass en mislukken

Om nu met de code te beginnen, zullen we eerst deze bibliotheken importeren - Numpy, Matplotlib en Pandas. Het is vrij eenvoudig om panda's in Pycharm te importeren door de onderstaande stappen te volgen:

Instellingen -> Pakket toevoegen -> Panda's -> Installeren

Hierna zullen we de dataset en aparte afhankelijke variabele (gekocht) en onafhankelijke variabele (leeftijd, salaris) importeren door:

dataset = pd.read_csv ('Social_Network_Ads.csv') X = dataset.iloc [:, [2, 3]]. waarden y = dataset.iloc [:, 4] .values ​​print (X) print (y)

De volgende stap is het trainen en testen van de gegevens. Een gebruikelijke strategie is om alle gelabelde gegevens op te splitsen in trainings- en testsubsets, die meestal wordt genomen met een verhouding van 70-80% voor de trainingssubset en 20-30% voor de testsubset. Daarom hebben we trainings- en testsets gemaakt met behulp van cross_validation.

van sklearn.cross_validation import train_test_split X_train, X_test, y_train, y_test = train_test_split (X, y, test_size = 0.25, random_state = 0)

We kunnen de invoerwaarden ook schalen voor betere prestaties met StandarScaler, zoals hieronder weergegeven:

van sklearn.preprocessing import StandardScaler sc = StandardScaler () X_train = sc.fit_transform (X_train) X_test = sc.transform (X_test)

Nu gaan we ons Logistic Regression-model maken.

java wat is een instantievariabele
van sklearn.linear_model import LogisticRegression classifier = LogisticRegression (random_state = 0) classifier.fit (X_train, y_train)

We kunnen dit gebruiken en de resultaten van onze testset voorspellen.

y_pred = classifier.predict (X_test)

Nu kunnen we controleren hoeveel voorspellingen juist waren en hoeveel niet verwarring matrix . Laten we Y definiëren als positieve instanties en N als negatieve instanties. De vier uitkomsten zijn geformuleerd in 2 * 2 verwarringmatrix, zoals hieronder weergegeven:

van sklearn.metrics import confusion_matrix cm = confusion_matrix (y_test, y_pred) print (cm)

Uitvoer-

[[65 3] [8 24]]

Vervolgens kunnen we op basis van onze verwarringmatrix de nauwkeurigheid berekenen. Dus in ons bovenstaande voorbeeld zou de nauwkeurigheid zijn:

= TP + TN / FN + FP

= 65 + 24/65 +3+ 8 + 24

= 89%

We hebben dit handmatig gedaan! Laten we nu eens kijken hoe de machine hetzelfde voor ons berekent, daarvoor hebben we een ingebouwde functie ‘nauwkeurigheid_score’ die de nauwkeurigheid berekent en deze afdrukt, zoals hieronder weergegeven:

van sklearn.metrics import accurate_score // importeer de functie accuratesse_score print (accuratesse_score (y_test, y_pred) * 100) // print de nauwkeurigheid

Uitgang -

89,0

Hoera! We hebben dus met succes logistieke regressie geïmplementeerd met Scikit Learn met een nauwkeurigheid van 89%.

Klik hier om de volledige bron van de bovenstaande voorspelling te krijgen met behulp van Python Scikit leerbibliotheek.

Hiermee hebben we slechts een van de vele populaire algoritmen behandeld die Python te bieden heeft.We hebben alle basisprincipes van Scikit behandeld, leer de bibliotheek,zodat u nu kunt beginnen met oefenen. Hoe meer je oefent, hoe meer je leert. Blijf op de hoogte voor meer blogs over python-tutorials!

Heeft u een vraag voor ons? Vermeld het in het commentaargedeelte van deze “Scikit learn” -blog en we nemen zo snel mogelijk contact met u op. Om diepgaande kennis van Python en zijn verschillende toepassingen te krijgen, kunt u dat voor live online training met 24/7 ondersteuning en levenslange toegang.