Zephyrnet-logotyp

Hur man utvecklar en obalanserad klassificeringsmodell för att upptäcka oljeutsläpp

Datum:


Många obalanserade klassificeringsuppgifter kräver en skicklig modell som förutsäger en skarp klassetikett, där båda klasserna är lika viktiga.

Ett exempel på ett problem med obalanserad klassificering där en klassmärkning krävs och båda klasserna är lika viktiga är upptäckten av oljeutsläpp eller slicks i satellitbilder. Att upptäcka ett spill kräver att man mobiliserar en dyr reaktion, och att missa en händelse är lika dyrt och orsakar skador på miljön.

Ett sätt att utvärdera obalanserade klassificeringsmodeller som förutsäger skarpa etiketter är att beräkna den separata noggrannheten för den positiva klassen och den negativa klassen, kallad sensitivitet och specificitet. Dessa två mått kan sedan medelvärdesberäknas med hjälp av det geometriska medelvärdet, kallat G-medelvärdet, som är okänsligt för den skeva klassfördelningen och korrekt rapporterar om modellens skicklighet i båda klasserna.

I den här handledningen kommer du att upptäcka hur du utvecklar en modell för att förutsäga förekomsten av ett oljeutsläpp i satellitbilder och utvärdera det med G-medelvärde.

När du har slutfört denna handledning vet du:

  • Hur man laddar och utforskar datasatsen och genererar idéer för dataförberedelse och modellval.
  • Hur man utvärderar en serie av sannolikhetsmodeller och förbättrar deras prestanda med lämplig dataförberedelse.
  • Hur man passar in i en slutmodell och använder den för att förutsäga klassetiketter för specifika fall.

Upptäck SMOTE, klassificering i en klass, kostnadskänsligt lärande, tröskelrörelse och mycket mer i min nya bok, med 30 steg-för-steg-tutorials och full Python-källkod.

Låt oss börja.

Utveckla en obalanserad klassificeringsmodell för att upptäcka oljeutsläpp

Utveckla en obalanserad klassificeringsmodell för att upptäcka oljeutsläpp
Foto: Lenny K fotografi, vissa rättigheter reserverade.

Översikt över handledning

Denna handledning är uppdelad i fem delar; dom är:

  1. Dataset för oljespill
  2. Utforska datasättet
  3. Modelltest och baslinjeresultat
  4. Utvärdera modeller
    1. Utvärdera sannolikhetsmodeller
    2. Utvärdera balanserad logistisk regression
    3. Utvärdera omsampling med probabilistiska modeller
  5. Gör förutsägelse om nya data

Dataset för oljespill

I detta projekt kommer vi att använda en standard obalanserad datamaskininlärningsdatasystem som kallas "oljeutsläpp" dataset, "olja slicks" dataset eller helt enkelt "olja. "

Datauppsättningen introducerades i 1998 års tidning av Miroslav Kubatet al. med titeln "Maskininlärning för detektering av oljeutsläpp i satellitradarbilder.” Datauppsättningen krediteras ofta Robert Holte, en medförfattare till tidningen.

Datauppsättningen utvecklades genom att börja med satellitbilder av havet, av vilka några innehåller ett oljeutsläpp och andra som inte gör det. Bilder delades upp i sektioner och bearbetades med hjälp av datorseendealgoritmer för att tillhandahålla en vektor av funktioner för att beskriva innehållet i bildavsnittet eller lappen.

Ingången till [systemet] är en rå pixelbild från en radarsatellit. Bildbehandlingstekniker används […] Utdata från bildbehandlingen är en funktionsvektor med fast längd för varje misstänkt område. Under normal drift matas dessa funktionsvektorer in i en klassare för att bestämma vilka bilder och vilka regioner i en bild som ska presenteras för mänsklig inspektion.

- Maskininlärning för detektering av oljeutsläpp i satellitradarbilder1998

Uppgiften ges en vektor som beskriver innehållet i en lapp i en satellitbild, för att sedan förutsäga om lappen innehåller ett oljeutsläpp eller inte, t.ex. från olaglig eller oavsiktlig dumpning av olja i havet.

Det finns 937 fall. Varje fodral består av 48 numeriska datorseende funktioner, ett patchnummer och en klassetikett.

Totalt nio satellitbilder bearbetades till patchar. Fall i datamängden sorteras efter bild och den första kolumnen i datasetet representerar patchnumret för bilden. Detta tillhandahölls i syfte att uppskatta modellprestanda per bild. I det här fallet är vi inte intresserade av bilden eller patchnumret och denna första kolumn kan tas bort.

Normalfallet är inget oljeutsläpp som har klassmärkningen 0, medan ett oljeutsläpp indikeras med en klassmärkning på 1. Det finns 896 fall för inget oljeutsläpp och 41 fall av ett oljeutsläpp.

Den andra kritiska egenskapen hos oljeutsläppsdomänen kan kallas en obalanserad träningsuppsättning: det finns väldigt många fler negativa exempel på lookalikes än positiva exempel på oljeutsläpp. Mot de 41 positiva exemplen har vi 896 negativa exempel majoritetsklassen utgör alltså nästan 96% av datan.

- Maskininlärning för detektering av oljeutsläpp i satellitradarbilder1998

Vi har inte tillgång till programmet som används för att förbereda funktioner för datorseende från satellitbilderna, därför är vi begränsade till att arbeta med de extraherade funktionerna som samlades in och gjordes tillgängliga.

Låt oss nu titta närmare på uppgifterna.

Vill du komma igång med obalansklassificering?

Ta min gratis 7-dagars e-postkraschkurs nu (med provkod).

Klicka för att registrera dig och få en gratis PDF-ebook-version av kursen.

Ladda ner din GRATIS minikurs

Utforska datasättet

Ladda ner först datasatsen och spara den i din nuvarande arbetskatalog med namnet "oil-spill.csv"

Granska innehållet i filen.

De första få raderna i filen ska se ut på följande sätt:

Vi kan se att den första kolumnen innehåller heltal för patchnumret. Vi kan också se att funktionerna härledda från datorvision är verkligt värderade med olika skalor som tusentals i den andra kolumnen och bråk i andra kolumner.

Alla indatavariabler är numeriska och det saknas inga värden markerade med "?" karaktär.

För det första kan vi ladda CSV-datauppsättningen och bekräfta antalet rader och kolumner.

Datasatsen kan laddas som en DataFrame med hjälp av read_csv () Pandas-funktion, ange platsen och det faktum att det inte finns någon rubrikrad.

När vi laddat kan vi sammanfatta antalet rader och kolumner genom att skriva ut formen på DataFrame.

Vi kan också sammanfatta antalet exempel i varje klass med hjälp av Motverka objekt.

Koppla detta tillsammans, det kompletta exemplet med att ladda och sammanfatta datasatsen listas nedan.

Att köra exemplet laddar först datauppsättningen och bekräftar antalet rader och kolumner.

Klassfördelningen sammanfattas sedan, vilket bekräftar antalet oljeutsläpp och icke-utsläpp samt andelen fall i minoritets- och majoritetsklasserna.

Vi kan också ta en titt på fördelningen av varje variabel genom att skapa ett histogram för varje variabel.

Med 50 variabler är det många plotter, men vi kanske ser några intressanta mönster. Med så många plotter måste vi också stänga av axeletiketterna och plottitlarna för att minska röran. Det fullständiga exemplet listas nedan.

Genom att köra exemplet skapas figuren med en histogramsubplot för var och en av de 50 variablerna i datamängden.

Vi kan se många olika distributioner, vissa med Gaussliknande distributioner, andra med till synes exponentiella eller diskreta fördelningar.

Beroende på valet av modelleringsalgoritmer skulle vi förvänta oss att skala fördelningarna till samma intervall vara användbart, och kanske användningen av vissa krafttransformer.

Histogram för varje variabel i datauppsättningen för oljespill

Histogram för varje variabel i datauppsättningen för oljespill

Nu när vi har granskat datasatsen, låt oss titta på att utveckla ett testsele för utvärdering av kandidatmodeller.

Modelltest och baslinjeresultat

Vi kommer att utvärdera kandidatmodeller med upprepad stratifierad k-faldig korsvalidering.

Smakämnen k-faldigt korsvalideringsförfarande ger en bra allmän uppskattning av modellprestanda som inte är för optimistiskt partisk, åtminstone jämfört med en enda tågtestdelning. Vi kommer att använda k = 10, vilket innebär att varje vikning kommer att innehålla cirka 937/10 eller cirka 94 XNUMX exempel.

Stratifierad betyder att varje veck kommer att innehålla samma blandning av exempel efter klass, det vill säga cirka 96 % till 4 % icke-spill och spill. Upprepad betyder att utvärderingsprocessen kommer att utföras flera gånger för att undvika slumpresultat och bättre fånga variansen i den valda modellen. Vi kommer att använda tre upprepningar.

Detta innebär att en enda modell kommer att passa och utvärderas 10 * 3, eller 30 gånger, och medelvärdet och standardavvikelsen för dessa körningar kommer att rapporteras.

Detta kan uppnås med hjälp av RepeatedStratifiedKFold klass för scikit-learning.

Vi förutsäger klassetiketter om en satellitbildspatch innehåller ett spill eller inte. Det finns många mått vi skulle kunna använda, även om författarna till artikeln valde att rapportera känsligheten, specificiteten och det geometriska medelvärdet för de två poängen, kallat G-medelvärde.

För detta ändamål har vi huvudsakligen använt det geometriska medelvärdet (g-medelvärde) […] Detta mått har den särskiljande egenskapen att vara oberoende av fördelningen av exempel mellan klasser, och är således robust under omständigheter där denna fördelning kan förändras med tiden eller vara annorlunda i tränings- och testseten.

- Maskininlärning för detektering av oljeutsläpp i satellitradarbilder1998

Kom ihåg att sensitiviteten är ett mått på noggrannheten för den positiva klassen och specificitet är ett mått på noggrannheten för den negativa klassen.

  • Känslighet = TruePositives / (TruePositives + FalseNegatives)
  • Specificitet = TrueNegatives / (TrueNegatives + FalsePositives)

G-medel söker en balans mellan dessa poäng, geometriskt medelvärde, där dålig prestanda för det ena eller det andra resulterar i ett lågt G-medelvärde.

  • G-medelvärde = sqrt (känslighet * specificitet)

Vi kan beräkna G-medelvärdet för en uppsättning förutsägelser gjorda av en modell med hjälp av geometric_mean_score () -funktion tillhandahålls av det obalanserade-lär biblioteket.

Först kan vi definiera en funktion för att ladda datamängden och dela upp kolumnerna i in- och utdatavariabler. Vi kommer också att ta bort kolumn 22 eftersom kolumnen innehåller ett enda värde, och den första kolumnen som definierar bildpatchnumret. De load_dataset () funktion nedan implementerar detta.

Vi kan sedan definiera en funktion som kommer att utvärdera en given modell på datamängden och returnera en lista med G-Mean poäng för varje veck och upprepa.

Smakämnen evaluate_model () funktion nedan implementerar detta, tar datasatsen och modellen som argument och returnerar listan med poäng.

Slutligen kan vi utvärdera en baslinjemodell på datasatsen med hjälp av detta testsele.

En modell som förutsäger majoritetsklassetiketten (0) eller minoritetsklassetiketten (1) för alla fall kommer att resultera i ett G-medelvärde på noll. Som sådan skulle en bra standardstrategi vara att slumpmässigt förutsäga en eller annan klassetikett med 50 % sannolikhet och sikta på ett G-medelvärde på cirka 0.5.

Detta kan uppnås med hjälp av DummyClassifier-klass från scikit-learn-biblioteket och ställ in "strategi”Argument till”likformig".

När modellen har utvärderats kan vi rapportera medel- och standardavvikelsen för G-medelvärdena direkt.

Genom att knyta ihop detta listas det kompletta exemplet på att ladda datamängden, utvärdera en baslinjemodell och rapportera prestanda nedan.

Om du kör exemplet laddas först och sammanfattar datasatsen.

Vi kan se att vi har rätt antal rader laddade och att vi har 47 indatavariabler härledda från datorsyn, med konstantvärdeskolumnen (index 22) och patchnummerkolumnen (index 0) borttagna.

Viktigt är att vi kan se att klassetiketterna har korrekt mappning till heltal med 0 för majoritetsklassen och 1 för minoritetsklassen, vanligt för obalanserad binär klassificeringsdatauppsättning.

Därefter rapporteras genomsnittet av G-medelvärdena.

Dina specifika resultat kommer att variera med tanke på algoritmens stokastiska karaktär; överväga att köra exemplet några gånger.

I det här fallet kan vi se att baslinjealgoritmen uppnår ett G-medelvärde på cirka 0.47, nära det teoretiska maximumet 0.5. Denna poäng ger en lägre gräns för modellförmåga; alla modeller som uppnår ett genomsnittligt G-medelvärde över cirka 0.47 (eller verkligen över 0.5) har skicklighet, medan modeller som uppnår en poäng under detta värde inte har skicklighet i detta datasæt.

Det är intressant att notera att ett bra G-medelvärde som rapporterades i tidningen var cirka 0.811, även om modellutvärderingsproceduren var annorlunda. Detta ger ett grovt mål för "god” prestanda på denna datauppsättning.

Nu när vi har en testsele och en baslinje i prestanda kan vi börja utvärdera vissa modeller på detta datasæt.

Utvärdera modeller

I det här avsnittet kommer vi att utvärdera en serie olika tekniker på datasatsen med hjälp av testselen som utvecklats i föregående avsnitt.

Målet är att både demonstrera hur man systematiskt arbetar genom problemet och att visa förmågan hos vissa tekniker utformade för obalanserade klassificeringsproblem.

Den rapporterade prestandan är bra, men inte mycket optimerad (t.ex. hyperparametrar är inte inställda).

Vilken poäng kan du få? Om du kan uppnå bättre G-medelprestanda med samma testsele, skulle jag gärna höra om det. Låt mig veta i kommentarerna nedan.

Utvärdera sannolikhetsmodeller

Låt oss börja med att utvärdera några probabilistiska modeller på datamängden.

Probabilistiska modeller är de modeller som passar in på data under ett probabilistiskt ramverk och ofta fungerar bra generellt för obalanserade klassificeringsdatauppsättningar.

Vi kommer att utvärdera följande probabilistiska modeller med standardhyperparametrar i datamängden:

  • Logistisk regression (LR)
  • Linjär diskriminantanalys (LDA)
  • Gaussisk naiv Bayes (NB)

Både LR och LDA är känsliga för indatavariablernas skala och förväntar sig och/eller presterar ofta bättre om indatavariabler med olika skalor normaliseras eller standardiseras som ett förbearbetningssteg.

I det här fallet kommer vi att standardisera datamängden innan vi anpassar varje modell. Detta kommer att uppnås med hjälp av en Pipeline och Standardskalare klass. Användningen av en Pipeline säkerställer att StandardScaler passar in på träningsdatauppsättningen och appliceras på tåg- och testuppsättningarna inom varje k-faldig korsvalideringsutvärdering, vilket undviker dataläckage som kan resultera i ett optimistiskt resultat.

Vi kan definiera en lista över modeller att utvärdera på vår testsele enligt följande:

När vi väl har definierats kan vi räkna upp listan och utvärdera var och en i tur och ordning. Medelvärdet och standardavvikelsen för G-medelvärdena kan skrivas ut under utvärderingen och provet av poäng kan lagras.

Algoritmer kan jämföras direkt baserat på deras genomsnittliga G-medelvärde.

I slutet av körningen kan vi använda poängen för att skapa en ruta och morrhårsplott för varje algoritm.

Genom att skapa plotterna sida vid sida kan fördelningarna jämföras både med avseende på medelpoängen, men också de mellersta 50 procenten av fördelningen mellan 25:e och 75:e percentilen.

Tillsammans med detta listas det kompletta exemplet som jämför tre probabilistiska modeller på oljeutsläppsdatasetet med testselen nedan.

Genom att köra exemplet utvärderas var och en av de probabilistiska modellerna på datamängden.

Dina specifika resultat kommer att variera med tanke på inlärningsalgoritmernas stokastiska karaktär; överväga att köra exemplet några gånger.

Du kan se några varningar från LDA-algoritmen som "Variabler är kolinjära". Dessa kan säkert ignoreras för nu, men antyder att algoritmen kan dra nytta av funktionsval för att ta bort några av variablerna.

I det här fallet kan vi se att varje algoritm har skicklighet, vilket uppnår ett genomsnittligt G-medelvärde över 0.5. Resultaten tyder på att en LDA kan vara den bästa prestanda av de testade modellerna.

Fördelningen av G-medelpoängen sammanfattas med hjälp av en figur med en ruta och morrhårsplott för varje algoritm. Vi kan se att distributionen för både LDA och NB är kompakt och skicklig och att LR kan ha några resultat under körningen där metoden fungerade dåligt, vilket trycker ner distributionen.

Detta understryker att det inte bara är den genomsnittliga prestandan, utan också modellens konsistens som bör beaktas när man väljer en modell.

Box and Whisker plot av probabilistiska modeller på datauppsättningen för obalanserat oljeutsläpp

Box and Whisker plot av probabilistiska modeller på datauppsättningen för obalanserat oljeutsläpp

Vi har fått en bra start, men vi kan göra bättre.

Utvärdera balanserad logistisk regression

Den logistiska regressionsalgoritmen stöder en modifiering som justerar vikten av klassificeringsfel till att vara omvänt proportionell mot klassviktningen.

Detta gör det möjligt för modellen att bättre lära sig klassgränsen till förmån för minoritetsklassen, vilket kan hjälpa den övergripande G-mean prestanda. Vi kan uppnå detta genom att ställa in "klass_vikt” argument av Logistisk tillbakagång till "balanserad".

Som nämnts är logistisk regression känslig för skalan av indatavariabler och kan prestera bättre med normaliserade eller standardiserade indata; som sådan är det en bra idé att testa båda för en given datamängd. Dessutom kan en effektfördelning användas för att sprida fördelningen av varje ingångsvariabel och göra dessa variabler med en Gaussliknande fördelning mer Gaussiska. Detta kan gynna modeller som Logistic Regression som gör antaganden om fördelningen av indatavariabler.

Kraftakterspegeln kommer att använda Yeo-Johnson-metoden som stöder positiva och negativa ingångar, men vi kommer också att normalisera data före transformationen. Även Krafttransformator klass som används för transformationen kommer också att standardisera varje variabel efter transformationen.

Vi kommer att jämföra en Logistisk tillbakagång med en balanserad klassviktning till samma algoritm med tre olika databeredningsscheman, specifikt normalisering, standardisering och en effekttransform.

Tillsammans med detta listas jämförelsen av balanserad logistisk regression med olika databeredningsscheman nedan.

Genom att köra exemplet utvärderas varje version av den balanserade logistiska regressionsmodellen på datamängden.

Dina specifika resultat kommer att variera med tanke på inlärningsalgoritmernas stokastiska karaktär; överväga att köra exemplet några gånger.

Du kan se några varningar från den första balanserade LR-modellen, som "Liblinear misslyckades med att konvergera". Dessa varningar kan säkert ignoreras för tillfället men antyder att algoritmen kan dra nytta av funktionsval för att ta bort några av variablerna.

I det här fallet kan vi se att den balanserade versionen av logistisk regression presterar mycket bättre än alla probabilistiska modeller som utvärderades i föregående avsnitt.

Resultaten tyder på att användningen av balanserad LR med datanormalisering för förbearbetning kanske presterar bäst på denna datauppsättning med ett genomsnittligt G-medelvärde på cirka 0.852. Detta är i intervallet eller bättre än resultaten som rapporterades i 1998 års tidning.

En figur skapas med kartong- och morrhårsdiagram för varje algoritm, vilket gör att fördelningen av resultat kan jämföras.

Vi kan se att fördelningen för den balanserade LR generellt sett är snävare än den obalanserade versionen i föregående avsnitt. Vi kan också se att medianresultatet (orange linje) för den normaliserade versionen är högre än medelvärdet, över 0.9, vilket är imponerande. Ett medelvärde som skiljer sig från medianen tyder på en skev fördelning för resultaten, vilket drar ned medelvärdet med några dåliga utfall.

Box and Whisker plot av balanserade logistiska regressionsmodeller på datauppsättningen för obalanserat oljeutsläpp

Box and Whisker plot av balanserade logistiska regressionsmodeller på datauppsättningen för obalanserat oljeutsläpp

Vi har nu utmärkta resultat med lite arbete; låt oss se om vi kan ta det ett steg längre.

Utvärdera datasampling med probabilistiska modeller

Dataprovering ger ett sätt att bättre förbereda det obalanserade träningsdatasättet innan du monterar en modell.

Den kanske mest populära datasamplingen är slog översamplingsteknik för att skapa nya syntetiska exempel för minoritetsklassen. Detta kan kopplas ihop med redigerade närmaste granne (ENN) algoritm som kommer att lokalisera och ta bort exempel från datamängden som är tvetydiga, vilket gör det lättare för modeller att lära sig att skilja mellan de två klasserna.

Denna kombination kallas SMOTE-ENN och kan implementeras med hjälp av SMOTEENN klass från biblioteket med obalanserat lärande; till exempel:

SMOTE och ENN fungerar båda bättre när indata skalas i förväg. Detta beror på att båda teknikerna innebär att den närmaste grannalgoritmen används internt och denna algoritm är känslig för indatavariabler med olika skalor. Därför kommer vi att kräva att data normaliseras som ett första steg, sedan samplas och sedan användas som input till den (obalanserade) logistiska regressionsmodellen.

Som sådan kan vi använda klassen Pipeline som tillhandahålls av biblioteket med obalanserat lärande för att skapa en sekvens av datatransformeringar inklusive datasamplingsmetoden och slutar med den logistiska regressionsmodellen.

Vi kommer att jämföra fyra varianter av den logistiska regressionsmodellen med datasampling, specifikt:

  • SMOTEENN + LR
  • Normalisering + SMOTEENN + LR
  • Standardisering + SMOTEENN + LR
  • Normalisering + Power + SMOTEENN + LR

Förväntningen är att LR kommer att prestera bättre med SMOTEENN, och att SMOTEENN kommer att prestera bättre med standardisering eller normalisering. Det sista fallet gör mycket, först normaliserar datasetet, applicerar sedan effekttransformen, standardiserar resultatet (kom ihåg att PowerTransformer-klassen kommer att standardisera utdata som standard), tillämpar SMOTEENN, och sedan anpassar man slutligen en logistisk regressionsmodell.

Dessa kombinationer kan definieras enligt följande:

Koppla samman detta, det totala exemplet listas nedan.

Genom att köra exemplet utvärderas varje version av SMOTEENN med logistisk regressionsmodell på datamängden.

Dina specifika resultat kommer att variera med tanke på inlärningsalgoritmernas stokastiska karaktär; överväga att köra exemplet några gånger.

I det här fallet kan vi se att tillägget av SMOTEENN förbättrar prestandan för standard LR-algoritmen, vilket uppnår ett genomsnittligt G-medelvärde på 0.852 jämfört med 0.621 i den första uppsättningen experimentella resultat. Detta är till och med bättre än balanserad LR utan någon dataskalning (föregående avsnitt) som uppnådde ett G-medelvärde på cirka 0.846.

Resultaten tyder på att kanske den slutliga kombinationen av normalisering, krafttransformering och standardisering ger ett något bättre resultat än standard LR med SMOTEENN med ett G-medelvärde på cirka 0.873, även om varningsmeddelandena antyder några problem som måste lösas.

Fördelningen av resultat kan jämföras med rutor och morrhår. Vi kan se att fördelningarna alla har ungefär samma snäva spridning och att skillnaden i medel för resultaten kan användas för att välja modell.

Box and Whisker plot av logistiska regressionsmodeller med datasampling på datauppsättningen för obalanserat oljeutsläpp

Box and Whisker plot av logistiska regressionsmodeller med datasampling på datauppsättningen för obalanserat oljeutsläpp

Gör förutsägelse om nya data

Användningen av SMOTEENN med logistisk regression direkt utan dataskalning ger förmodligen den enklaste och välpresterande modellen som skulle kunna användas framöver.

Denna modell hade ett genomsnittligt G-medelvärde på cirka 0.852 på vår testsele.

Vi kommer att använda denna som vår slutliga modell och använda den för att göra förutsägelser om nya data.

Först kan vi definiera modellen som en pipeline.

När den har definierats kan vi passa den på hela träningsdatasättet.

När vi väl passar kan vi använda den för att göra förutsägelser för ny data genom att ringa förutspå() fungera. Detta returnerar klassetiketten 0 för inget oljeutsläpp eller 1 för oljeutsläpp.

Till exempel:

För att demonstrera detta kan vi använda passformsmodellen för att göra några förutsägelser av etiketter för några fall där vi vet att det inte finns något oljeutsläpp, och några där vi vet att det finns.

Det kompletta exemplet listas nedan.

Att köra exemplet passar först modellen på hela träningsdatasystemet.

Sedan användes passningsmodellen för att förutsäga etiketten för ett oljeutsläpp för fall där vi vet att det inte finns något, vald från datasetfilen. Vi kan se att alla fall är korrekt förutspådda.

Sedan används några fall av faktiska oljeutsläpp som input till modellen och märkningen förutsägs. Som vi kanske hade hoppats, förutspås de korrekta etiketterna igen.

Ytterligare läsning

Det här avsnittet ger fler resurser om ämnet om du vill gå djupare.

Papper

API: er

Artiklar

Sammanfattning

I den här handledningen upptäckte du hur man utvecklar en modell för att förutsäga förekomsten av ett oljeutsläpp i satellitbilder och utvärdera det med G-medelvärde.

Specifikt lärde du dig:

  • Hur man laddar och utforskar datasatsen och genererar idéer för dataförberedelse och modellval.
  • Hur man utvärderar en serie av sannolikhetsmodeller och förbättrar deras prestanda med lämplig dataförberedelse.
  • Hur man passar in i en slutmodell och använder den för att förutsäga klassetiketter för specifika fall.

Har du några frågor?
Ställ dina frågor i kommentarerna nedan så gör jag mitt bästa för att svara.

Få ett handtag om obalanserad klassificering!

Obalanserad klassificering med Python

Utveckla obalanserade inlärningsmodeller på några minuter

... med bara några rader med pythonkod

Upptäck hur i min nya e-bok:
Obalanserad klassificering med Python

Det ger självstudiehandledning och slutprojekt på:
Prestandamätningar, Underprovningsmetoder, slog, Tröskelrörelse, Sannolikskalibrering, Kostnadskänsliga algoritmer
och mycket mer ...

Ta med obalanserade klassificeringsmetoder till dina maskininlärningsprojekt

Se vad som finns inuti


Källa: https://machinelearningmastery.com/imbalanced-classification-model-to-detect-oil-spills/

plats_img

Senaste intelligens

plats_img