logo

Lære modellbygging i Scikit-learn

Scikit-learn er et åpen kildekode Python-bibliotek som forenkler prosessen med å bygge maskinlæringsmodeller. Den tilbyr et rent og konsistent grensesnitt som hjelper både nybegynnere og erfarne brukere å jobbe effektivt.

  • Støtter oppgaver som klassifiseringsregresjonsgruppering og forbehandling
  • Gjør modellbygging rask og pålitelig
  • Gir klare verktøy for opplæring og evaluering
  • Reduserer kompleksiteten ved å unngå manuell implementering av algoritmer

Installere og bruke Scikit-learn

Før vi begynner å bygge modeller må vi installere Scikit-lær. Det krever Python 3.8 eller nyere og avhenger av to viktige biblioteker: NumPy og SciPy. Sørg for at disse er installert først.

som skapte skolen

For å installere Scikit-learn kjør følgende kommando:



pip install -U scikit-learn

Dette vil laste ned og installere den nyeste versjonen av Scikit-learn sammen med dens avhengigheter. La oss se ulike trinn involvert i prosessen med å bygge modell ved hjelp av Scikit-learn-biblioteket.

Trinn 1: Laste et datasett

Et datasett består av:

  • Funksjoner (X): Inndatavariabler som beskriver dataene
  • Mål (y): Verdien vi ønsker å forutsi

Scikit-learn tilbyr innebygde datasett som Iris Digits og Boston Housing. Bruke Iris-datasettet:

ops
  • load_iris() laster dataene
  • X lagrer funksjonsdata
  • y lagrer måletiketter
  • funksjonsnavn og målnavn gir beskrivende navn

Vi kan inspisere de første radene for å forstå strukturen. For egendefinerte datasett Pandaer brukes ofte til å laste eksterne filer som CSV-er.

Python
from sklearn.datasets import load_iris iris = load_iris() X = iris.data y = iris.target feature_names = iris.feature_names target_names = iris.target_names print('Feature names:' feature_names) print('Target names:' target_names) print('nType of X is:' type(X)) print('nFirst 5 rows of X:n' X[:5]) 

Produksjon: 

modell1' title=Laster datasett

Noen ganger må vi jobbe med våre egne tilpassede data, så laster vi et eksternt datasett. Til dette kan vi bruke pandas bibliotek for enkel lasting og manipulering av datasett.

For dette kan du referere til vår artikkel om Hvordan importere csv-fil i pandaer ?

Trinn 2: Deling av datasettet

For å evaluere en modell rettferdig deler vi data inn i:

  • Treningssett: Brukes til å trene modellen
  • Testsett: Brukes til å evaluere hvor godt modellen generaliserer

Ved å bruke train_test_split deler vi opp Iris-datasettet slik at 60 % er til trening og 40 % til testing (test_size=0,4). random_state=1 sikrer reproduserbarhet.

Etter splitting får vi:

  • X_train y_train -> Treningsdata
  • X_test y_test -> Testing av data

Kontroll av formene sikrer at dataene deles riktig.

omvendt streng i java
Python
from sklearn.model_selection import train_test_split X_train X_test y_train y_test = train_test_split(X y test_size=0.4 random_state=1) 

La oss nå sjekke Former av de delte dataene for å sikre at begge settene har riktige proporsjoner av data for å unngå potensielle feil i modellevaluering eller opplæring.

Python
print('X_train Shape:' X_train.shape) print('X_test Shape:' X_test.shape) print('Y_train Shape:' y_train.shape) print('Y_test Shape:' y_test.shape) 

Produksjon:

modell2' loading='lazy' title=Form av delte data

Trinn 3: Håndtering av kategoriske data

Maskinlæringsalgoritmer fungerer med numeriske innganger, så kategoriske (tekst)data må konverteres til tall. Hvis de ikke er riktig kodet, kan modeller mistolke kategorier. Scikit-learn tilbyr flere kodingsmetoder:

1. Etikettkoding : Den konverterer hver kategori til et unikt heltall. For eksempel i en kolonne med kategorier som 'katt' 'hund' og 'fugl' vil den konvertere dem til henholdsvis 0 1 og 2. Denne metoden fungerer bra når kategoriene har en meningsfull rekkefølge som Lav Middels og Høy.

  • LabelEncoder(): Den er initialisert for å lage et koderobjekt som vil konvertere kategoriske verdier til numeriske etiketter.
  • fit_transform(): Denne metoden tilpasser først koderen til de kategoriske dataene og transformerer deretter kategoriene til tilsvarende numeriske etiketter.
Python
from sklearn.preprocessing import LabelEncoder categorical_feature = ['cat' 'dog' 'dog' 'cat' 'bird'] encoder = LabelEncoder() encoded_feature = encoder.fit_transform(categorical_feature) print('Encoded feature:' encoded_feature) 

Produksjon:

Kodet funksjon: [1 2 2 1 0]

2. One-Hot-koding : One-Hot Encoding oppretter separate binære kolonner for hver kategori. Dette er nyttig når kategorier ikke har noen naturlig rekkefølge. Eksempel: katt hund fugl -> 3 nye kolonner (katt/hund/fugl) med 1-er og 0-er.

  • Inndata må omformes til en 2D-array
  • OneHotEncoder(sparse_output=False) genererer binære kolonner
Python
from sklearn.preprocessing import OneHotEncoder import numpy as np categorical_feature = ['cat' 'dog' 'dog' 'cat' 'bird'] categorical_feature = np.array(categorical_feature).reshape(-1 1) encoder = OneHotEncoder(sparse_output=False) encoded_feature = encoder.fit_transform(categorical_feature) print('OneHotEncoded feature:n' encoded_feature) 

Produksjon:

historie i java
modell3' loading='lazy' title=

I tillegg til Label Encoding og One-Hot Encoding er det andre teknikker som Gjennomsnittlig koding .

Trinn 4: Trening av modellen

Nå som dataene våre er klare, er det på tide å trene opp en maskinlæringsmodell. Scikit-learn har mange algoritmer med et konsistent grensesnitt for treningsprediksjon og evaluering. Her skal vi bruke Logistisk regresjon som et eksempel.

Note : Vi vil ikke gå inn på detaljene om hvordan algoritmen fungerer, da vi kun er interessert i å forstå implementeringen av den. 

  • log_reg = LogisticRegression(max_iter=200): Opprette et logistisk regresjonsklassifiseringsobjekt.
  • log_reg.fit(X_train y_train): Bruker denne den logistiske regresjonsmodellen justerer modellens parametere slik at de passer best til dataene.
Python
from sklearn.linear_model import LogisticRegression log_reg = LogisticRegression(max_iter=200) log_reg.fit(X_train y_train) 
model4' loading='lazy' title=Trening ved hjelp av logistisk regresjon.

Trinn 5: Lag spådommer

Når vi er trent bruker vi modellen til å lage spådommer på testdataene X_test ved å kalle prediksjonsmetoden. Dette returnerer anslåtte etiketter y_pred.

  • log_reg.predict: Den bruker trent logistisk regresjonsmodell for å forutsi etiketter for testdataene X_test.
Python
y_pred = log_reg.predict(X_test) 

Trinn 6: Evaluering av modellens nøyaktighet

Sjekk hvor godt modellen vår presterer ved å sammenligne y_test og y_pred. Her bruker vi metrikkmodulens metode accuracy_score.

streng til int-konverter
Python
from sklearn import metrics print('Logistic Regression model accuracy:' metrics.accuracy_score(y_test y_pred)) 

Produksjon:

Logistikkregresjonsmodellnøyaktighet: 0,9666666666666667

Nå vil vi at modellen vår skal lage spådommer på nye prøvedata. Da kan prøveinngangen ganske enkelt sendes på samme måte som vi passerer en hvilken som helst funksjonsmatrise. Her brukte vi det som eksempel = [[3 5 4 2] [2 3 5 4]]

Python
sample = [[3 5 4 2] [2 3 5 4]] preds = log_reg.predict(sample) pred_species = [iris.target_names[p] for p in preds] print('Predictions:' pred_species) 

Produksjon: 

Spådommer: [np.str_('virginica') np.str_('virginica')]

Funksjoner ved Scikit-learn

Scikit-learn brukes fordi det gjør det enkelt og effektivt å bygge maskinlæringsmodeller. Her er noen viktige grunner:

  1. Verktøy som er klare til bruk : Den har innebygde funksjoner for vanlige oppgaver som treningsmodeller for dataforbehandling og å lage spådommer. Dette sparer tid ved å unngå behovet for å kode algoritmer fra bunnen av.
  2. Enkel modellvurdering : Med verktøy som kryssvalidering og ytelsesmålinger hjelper det å måle hvor godt modellen vår fungerer og identifisere områder for forbedring.
  3. Bred algoritmestøtte : Den tilbyr mange populære maskinlæringsalgoritmer, inkludert klassifiseringsregresjon og clustering som gir oss fleksibilitet til å velge riktig modell for problemet vårt.
  4. Glatt integrasjon : Bygget på toppen av viktige Python-biblioteker som NumPy og SciPy slik at det passer inn i vår eksisterende dataanalysearbeidsflyt.
  5. Enkelt og konsekvent grensesnitt : Den samme enkle syntaksen fungerer på tvers av forskjellige modeller og hjelper til med å gjøre det enklere å lære og bytte mellom algoritmer.
  6. Enkel modellinnstilling : Verktøy som rutenettsøk hjelper oss med å finjustere modellens innstillinger for å forbedre nøyaktigheten uten ekstra problemer.

Fordeler med å bruke Scikit-learn

  • Brukervennlig : Scikit-learns konsekvente og enkle grensesnitt gjør det tilgjengelig for nybegynnere og best for eksperter.
  • Tidsbesparende: Forhåndsbygde verktøy og algoritmer reduserer utviklingstiden, noe som gjør at vi kan fokusere mer på å løse problemer enn å kode detaljer.
  • Bedre modellytelse : Brukervennlige innstillings- og evalueringsverktøy hjelper til med å forbedre modellens nøyaktighet og pålitelighet.
  • Fleksibel og skalerbar : Støtter et bredt spekter av algoritmer og integreres jevnt med andre Python-biblioteker og hjelper til med å gjøre det egnet for prosjekter av alle størrelser.
  • Sterk samfunnsstøtte : Et stort aktivt fellesskap sørger for regelmessige oppdateringer omfattende dokumentasjon og massevis av ressurser for å hjelpe når vi står fast.
Lag quiz