Scikit lære - Machine Learning ved hjælp af Python

Scikit lær blog vil introducere dig til Machine Learning i python. Det inkluderer en brugssag, hvor vi implementerer logistisk regression ved hjælp af scikit learning.

I denne blog vil vi diskutere Scikit-læring i python. Før man taler om Scikit-læring, skal man forstå begrebet maskinindlæringog skal vide, hvordan man bruger . Med maskinindlæring behøver du ikke samle din indsigt manuelt. Du har bare brug for en algoritme, og maskinen vil gøre resten for dig! Er det ikke spændende? Scikit-læring er en af ​​attraktionerne, hvor vi kan implementere maskinindlæring ved hjælp af Python. Deter et gratis maskinlæringsbibliotek, der indeholder enkle og effektive værktøjer til dataanalyse og minedrift.Jeg tager dig gennem følgende emner, som vil tjene som grundlæggende for de kommende blogs:



Hvad er maskinindlæring?

Maskinindlæring er en type kunstig intelligens, der gør det muligt for softwareapplikationer at lære af dataene og blive mere nøjagtige til at forudsige resultater uden menneskelig indblanding. Men hvordan sker det? Til det skal maskinen trænes i nogle data, og baseret på det vil den opdage et mønster for at oprette en model.Denne proces med at få viden fra dataene og levere stærk indsigt handler om maskinlæring. Se nedenstående billede for at få en bedre forståelse af dets funktion:



MachineLearning - Scikit Learn - Edureka

Ved hjælp af dataene lærer systemet en algoritme og bruger den derefter til at opbygge en forudsigende model. Senere justerer vi modellen, eller forbedrer vi nøjagtigheden af ​​modellen ved hjælp af feedbackdataene. Ved hjælp af disse feedbackdata indstiller vi modellen og forudsiger handling på det nye datasæt. Vi vildiskuterer en brugssag af en af ​​algoritmemetoden, hvor vi vil træne og teste dataene, som hjælper dig med at give en bedre forståelse af, om det passer godt til dit særlige problem eller ej.



Dernæst er der tre typer maskinindlæring:

    • Overvåget læring : Dette er en proces, hvor en algoritme lærer fra træningsdatasættet. Overvåget læring er, hvor du genererer en kortlægningsfunktion mellem inputvariablen (X) og en outputvariabel (Y), og du bruger en algoritme til at generere en funktion imellem dem. Det er også kendt som forudsigende modellering, der refererer til en proces til at forudsige brug af dataene. Nogle af algoritmerne inkluderer lineær regression, logistisk regression, beslutningstræ, tilfældig skov og Naive Bayes-klassifikator. Vi diskuterer yderligere et brugstilfælde af overvåget læring, hvor vi træner maskinen ved hjælp af Logistisk regression .
    • Uovervåget læring : Dette er en proces, hvor en model trænes ved hjælp af en information, der ikke er mærket. Denne proces kan bruges til at samle inputdataene i klasser på basis af deres statistiske egenskaber. Uovervåget læring kaldes også cglansanalyse, der betyder gruppering af objekter baseret på de oplysninger, der findes i dataene, der beskriver objekterne eller deres forhold. Målet er, at objekter i en gruppe skal ligne hinanden, men forskellige fra objekter i en anden gruppe. Nogle af algoritmerne inkluderer K-betyder klyngedannelse, Hierarkisk klyngedannelse osv.
    • Forstærkning læring: Forstærkningslæring er læring ved at interagere med et rum eller et miljø.En RL-agent lærer af konsekvenserne af sine handlinger snarere end at blive undervist eksplicit. Det vælger sine handlinger på baggrund af sine tidligere erfaringer (udnyttelse) og også ved nye valg (udforskning).

Oversigt over Scikit Learn

Scikit learning er et bibliotek, der bruges til at udføre maskinindlæring i Python. Scikit Learn er et open source-bibliotek, der er licenseret under BSD og kan genbruges i forskellige sammenhænge, ​​hvilket tilskynder til akademisk og kommerciel brug. Det giver en række overvågede og ikke-overvågede læringsalgoritmer i Python.Scikit lære består af populære algoritmer og biblioteker. Bortset fra det indeholder den også følgende pakker:



  • NumPy
  • Matplotlib
  • SciPy (videnskabelig python)

For at implementere Scikit Learn skal vi først importere ovenstående pakker. Hvis du ikke er fortrolig med disse biblioteker, kan du se på mine tidligere blogs på og . Du kan downloade disse to pakker ved hjælp af kommandolinjen, eller hvis du bruger PYCharm, du kan installere det direkte ved at gå til din indstilling på samme måde som du gør for andre pakker.

Dernæst på en lignende måde, skal du importere Sklearn.Scikit learning er bygget på SciPy (Scientific Python), der skal installeres, før du kan bruge Scikit-learning. Du kan henvise til dette internet side for at downloade det samme. Installer også Scipy og hjulpakke, hvis den ikke er til stede, kan du skrive nedenstående kommando:

pip install scipy

Jeg har allerede downloadet og installeret det, du kan se nedenstående skærmbillede for enhver forvirring.

Efter at have importeret de ovennævnte biblioteker, lad os grave dybere og forstå, hvordan Scikit learning bruges nøjagtigt.

Scikit lære leveres med eksempeldatasæt, såsom iris og cifre . Du kan importere datasættene og lege med dem. Derefter skal du importere SVM, som står for Support Vector Machine. SVM er en form for maskinlæring, der bruges til at analysere data.

Lad os tage et eksempel, hvor vi vil tage cifre datasæt, og det vil kategorisere numrene for os, for eksempel- 0 1 2 3 4 5 6 7 8 9. Se koden nedenfor:

mvc arkitektur i java med diagram
importer matplotlib.pyplot som plt fra sklearn import datasæt fra sklearn import svm cifre = datasets.load_digits () udskriv (digits.data)

Output -

[[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.]]

Her har vi netop importeret bibliotekerne, SVM, datasæt og udskrevet dataene. Det er en lang række ciferdata, hvor dataene er gemt. Det giver adgang til de funktioner, der kan bruges til at klassificere cifre prøver. Dernæst kan du også prøve nogle andre handlinger som mål, billeder osv. Overvej eksemplet nedenfor:

importer matplotlib.pyplot som plt fra sklearn importer datasæt fra sklearn import svm cifre = datasæt.load_digits () udskriv (digits.target) udskriv (digits.images [0])

Produktion -

[0 1 2 ..., 8 9 8] // mål for dataene [[0. 0. 5. 13. 9. 1. 0. 0.] // billede af dataene [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.]]

Som du kan se ovenfor udskrives målcifrene og billedet af cifrene. cifre. mål giver jorden sandheden for ciffer datasæt, det er det nummer, der svarer til hvert cifferbillede. Derefter er data altid et 2D-array, der har en form (n_samples, n_features), selvom de originale data muligvis har haft en anden form. Men i tilfælde af cifrene er hver originalprøve et billede af formen (8,8) og kan tilgås ved hjælp af cifre . billede.

Læring og forudsigelse

Dernæst i Scikit learning har vi brugt et datasæt (prøve på 10 mulige klasser, cifre fra nul til ni), og vi er nødt til at forudsige cifrene, når et billede gives. For at forudsige klassen har vi brug for en estimator hvilket hjælper med at forudsige de klasser, som usete prøver hører til. I Scikit-læring har vi en estimator til klassificering, som er et python-objekt, der implementerer metoderne pasform (x, y) og forudsige (T). Lad os overveje nedenstående eksempel:

importer matplotlib.pyplot som plt fra sklearn import datasæt fra sklearn import svm cifre = datasæt.load_digits () // datasæt clf = svm.SVC (gamma = 0,001, C = 100) udskriv (len (cifre.data)) x, y = digits.data [: - 1], digits.target [: - 1] // træne data clf.fit (x, y) print ('Prediction:', clf.predict (digits.data [-1]) ) // forudsige data plt.imshow (digits.images [-1], cmap = plt.cm.gray_r, interpolation = 'nærmeste') plt.show ()

Output -

1796
Forudsigelse: [8]

java dato streng til dato


I ovenstående eksempel havde vi først fundet længden og indlæst 1796 eksempler. Dernæst har vi brugt disse data som læringsdata, hvor vi skal teste det sidste element og det første negative element. Vi skal også kontrollere, om maskinen har forudsagt de rigtige data eller ej. Til det havde vi brugt Matplotlib, hvor vi havde vist billedet af cifre.Så for at konkludere, har du ciferdata, du har målet, du passer og forudsiger det, og derfor er du klar til at gå! Det er virkelig hurtigt og nemt, ikke?

Du kan også visualisere målmærkerne med et billede, se bare nedenstående kode:

importer matplotlib.pyplot som plt fra sklearn importer datasæt fra sklearn import svm cifre = datasæt.load_digits () # Deltag i billederne og målmærkerne i en liste images_and_labels = list (zip (digits.images, digits.target)) # for hvert element i listen til indeks, (billede, etiket) i enumerate (images_and_labels [: 8]): # initialiser en delplot på 2X4 i i + 1-th position plt.subplot (2, 4, index + 1) # Vis billeder i alle subplots plt.imshow (billede, cmap = plt.cm.gray_r, interpolation = 'nærmeste') # Tilføj en titel til hver subplot plt.title ('Training:' + str (label)) # Vis plot plt. at vise()

Produktion-


Som du kan se i ovenstående kode, har vi brugt 'zip' -funktionen til at sammenføje billederne og målmærkerne på en liste og derefter gemme den i en variabel, siger images_and_labels. Derefter har vi indekseret de første otte elementer i et gitter på 2 x 4 på hver position. Derefter har vi netop vist billederne ved hjælp af Matplotlib og tilføjet titlen som 'træning'.

Brug sag - Forudsigelse ved hjælp af logistisk regression

Problemformulering - Et bilfirma har frigivet en ny SUV på markedet. Ved hjælp af de tidligere data om salget af deres SUV'er vil de forudsige, hvilken kategori mennesker der kan være interesserede i at købe denne.

Lad os se et datasæt, hvor jeg har det UserId, køn, alder, estimeret løn og købt som kolonner. Dette er kun et eksempel på datasæt, du kan downloade hele datasættet fra her . Når vi først har importeret dataene i pyCharm, ser det lidt sådan ud.

Lad os nu forstå disse data. Som du kan se i ovenstående datasæt, har vi kategorier som id, køn, alder osv. Baseret på disse kategorier skal vi træne vores maskine og forudsige nej. af indkøb. Så her har vi det uafhængige variabler som 'alder', 'forventet løn' og afhængig variabel som 'købt'. Nu vil vi anvende overvåget læring, dvs. logistisk regressionsalgoritme for at finde ud af antallet af køb ved hjælp af de eksisterende data.

Lad os først få et overblik over logistisk regression.

Logistisk regression - Logistisk regression producerer resultater i et binært format, der bruges til at forudsige resultatet af en kategorisk afhængig variabel. Det bruges mest, når den afhængige variabel er binær, dvs. antallet af tilgængelige kategorier er to, såsom de sædvanlige output af logistisk regression er -

  • Ja og nej
  • Sandt og falskt
  • Højt og lavt
  • Pass og mislykkes

For at begynde med koden importerer vi først disse biblioteker - Numpy, Matplotlib og Pandas. Det er ret nemt at importere pandaer i Pycharm ved at følge nedenstående trin:

Indstillinger -> Tilføj pakke -> Pandaer -> Installer

Herefter importerer vi datasættet og den separate afhængige variabel (købt) og uafhængig variabel (alder, løn) efter:

datasæt = pd.read_csv ('Social_Network_Ads.csv') X = datasæt.iloc [:, [2, 3]]. værdier y = datasæt.iloc [:, 4]. værdier udskriver (X) udskriv (y)

Det næste trin ville være at træne og teste dataene. En fælles strategi er at tage alle de mærkede data og opdele i trænings- og testundersæt, hvilket normalt tages med et forhold på 70-80% for træningsundermængde og 20-30% for testundermængde. Derfor har vi oprettet skabe trænings- og testsæt ved hjælp af krydsvalidering.

fra sklearn.cross_validation importerer tog_test_split X_train, X_test, y_train, y_test = train_test_split (X, y, test_size = 0,25, random_state = 0)

Vi kan også skalere inputværdierne for bedre ydeevne ved hjælp af StandarScaler som vist nedenfor:

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

Nu opretter vi vores logistiske regressionsmodel.

fra sklearn.linear_model import LogisticRegression classifier = LogisticRegression (random_state = 0) classifier.fit (X_train, y_train)

Vi kan bruge dette og forudsige resultaterne af vores testsæt.

y_pred = classifier.predict (X_test)

Nu kan vi kontrollere, hvor mange forudsigelser der var nøjagtige, og hvor mange der ikke brugte forvirringsmatrix . Lad os definere Y som positive forekomster og N som negative forekomster. De fire resultater er formuleret i 2 * 2 forvirringsmatrix som vist nedenfor:

fra sklearn.metrics importerer confusion_matrix cm = confusion_matrix (y_test, y_pred) print (cm)

Produktion-

[[65 3] [8 24]]

Dernæst, baseret på vores forvirringsmatrix, kan vi beregne nøjagtigheden. Så i vores ovenstående eksempel ville nøjagtigheden være:

= TP + TN / FN + FP

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

= 89%

Vi har gjort dette manuelt! Lad os nu se, hvordan maskinen beregner det samme for os, for det har vi en indbygget funktion 'nøjagtighed_score', der beregner nøjagtigheden og udskriver den som vist nedenfor:

fra sklearn.metrics importere nøjagtighed_score // importere funktionen nøjagtighed_score-udskrivning (nøjagtighed_score (y_test, y_pred) * 100) // udskriver nøjagtigheden

Output -

java parse streng til dato
89,0

Hurra! Vi har således med succes implementeret logistisk regression ved hjælp af Scikit learning med en nøjagtighed på 89%.

Klik her for at få den fulde komplette kilde til ovenstående forudsigelse ved hjælp af Python Scikit lærebibliotek.

Med dette har vi kun dækket en af ​​de mange populære algoritmer, som python har at tilbyde.Vi har dækket alt det grundlæggende i Scikit, lær biblioteket,så du kan begynde at øve nu. Jo mere du øver jo mere lærer du. Hold øje med yderligere python-tutorials-blogs!

Har du et spørgsmål til os? Nævn det i kommentarfeltet på denne 'Scikit lær' -blog, og vi vender tilbage til dig hurtigst muligt. For at få indgående kendskab til Python sammen med dens forskellige applikationer kan du til live online træning med support døgnet rundt og levetid adgang.