14 verktyg för öppen källkod för att få ut så mycket som möjligt av maskininlärning

Spamfiltrering, ansiktsigenkänning, rekommendationsmotorer - när du har en stor datamängd som du vill utföra prediktiv analys eller mönsterigenkänning är maskininlärning vägen att gå. Spridningen av gratis programvara med öppen källkod har gjort maskininlärning enklare att implementera både på enskilda maskiner och i stor skala och på de mest populära programmeringsspråken. Dessa öppen källkodsverktyg inkluderar bibliotek för sådana som Python, R, C ++, Java, Scala, Clojure, JavaScript och Go.

Apache Mahout

Apache Mahout ger ett sätt att bygga miljöer för att vara värd för maskininlärningsapplikationer som kan skalas snabbt och effektivt för att möta efterfrågan. Mahout arbetar främst med ett annat välkänt Apache-projekt, Spark, och var ursprungligen tänkt att arbeta med Hadoop för att driva distribuerade applikationer, men har utökats till att arbeta med andra distribuerade bakändar som Flink och H2O.

Mahout använder ett domänspecifikt språk i Scala. Version 0.14 är en stor intern refaktor för projektet, baserat på Apache Spark 2.4.3 som standard.

Komponera

Komponera, av Innovation Labs, riktar sig mot en vanlig fråga med maskininlärningsmodeller: märkning av rådata, vilket kan vara en långsam och tråkig process, men utan vilken en maskininlärningsmodell inte kan ge användbara resultat. Med Compose kan du skriva i Python en uppsättning märkningsfunktioner för dina data, så att märkning kan göras så programmatiskt som möjligt. Olika transformationer och trösklar kan ställas in på dina data för att göra märkningsprocessen enklare, till exempel att placera data i lagerplatser baserat på diskreta värden eller kvantiteter.

Core ML-verktyg

Apples Core ML-ramverk låter dig integrera maskininlärningsmodeller i appar, men använder sitt eget distinkta inlärningsmodellformat. Den goda nyheten är att du inte behöver förutbilda modeller i Core ML-formatet för att använda dem; du kan konvertera modeller från nästan alla vanliga ramar för maskininlärning till Core ML med Core ML-verktyg.

Core ML-verktyg körs som ett Python-paket, så det integreras med mängden Python-maskininlärningsbibliotek och verktyg. Modeller från TensorFlow, PyTorch, Keras, Caffe, ONNX, Scikit-learning, LibSVM och XGBoost kan alla konverteras. Neurala nätverksmodeller kan också optimeras för storlek genom att använda kvantisering efter träning (t.ex. till ett litet bitdjup som fortfarande är exakt).

Bark

Cortex ger ett bekvämt sätt att betjäna förutsägelser från maskininlärningsmodeller med Python och TensorFlow, PyTorch, Scikit-learning och andra modeller. De flesta Cortex-paket består av endast ett fåtal filer - din kärn Python-logik, en cortex.yaml-fil som beskriver vilka modeller som ska användas och vilka typer av beräkningsresurser som ska tilldelas, och en krav.txt-fil för att installera alla Python-krav som behövs. Hela paketet distribueras som en Docker-behållare till AWS eller ett annat Docker-kompatibelt värdsystem. Datorresurser tilldelas på ett sätt som motsvarar definitionerna som används i Kubernetes för samma, och du kan använda GPU: er eller Amazon Inferentia ASIC för att snabba betjäningen.

Funktionsverktyg

Feature engineering, eller funktionsskapande, innebär att man tar data som används för att träna en maskininlärningsmodell och producerar, vanligtvis för hand, en transformerad och aggregerad version av data som är mer användbar för att träna modellen. Featuretools ger dig funktioner för att göra detta med hjälp av högnivå Python-objekt byggda genom att syntetisera data i dataframar och kan göra detta för data som extraheras från en eller flera dataframar. Featuretools tillhandahåller också vanliga primitiver för syntesoperationerna (t.ex. för time_since_previousatt ge tid som gått mellan instanser av tidsstämplad data), så att du inte behöver rulla dem på egen hand.

GoLearn

GoLearn, ett maskininlärningsbibliotek för Googles Go-språk, skapades med de dubbla målen enkelhet och anpassningsbarhet, enligt utvecklaren Stephen Whitworth. Enkelheten ligger i hur data laddas och hanteras i biblioteket, som är mönstrat efter SciPy och R. Anpassningen ligger i hur vissa datastrukturer enkelt kan utökas i en applikation. Whitworth har också skapat ett Go-omslag för Vowpal Wabbit-biblioteket, ett av biblioteken som finns i Shogun-verktygslådan.

Gradio

En vanlig utmaning när man bygger applikationer för maskininlärning är att bygga ett robust och lättanpassat användargränssnitt för modellträning och förutsägelsemekanismer. Gradio tillhandahåller verktyg för att skapa webbaserade användargränssnitt som låter dig interagera med dina modeller i realtid. Flera inkluderade exempelprojekt, såsom ingångsgränssnitt till Inception V3-bildklassificeraren eller MNIST-handskriftsigenkänningsmodellen, ger dig en uppfattning om hur du kan använda Gradio med dina egna projekt.

H2O

H2O, som nu är i sin tredje större version, ger en hel plattform för maskininlärning i minnet, från träning till betjäningsprognoser. H2O: s algoritmer är anpassade för affärsprocesser - till exempel bedrägeri eller trendförutsägelser - snarare än, till exempel, bildanalys. H2O kan interagera på ett fristående sätt med HDFS-butiker, ovanpå GÅR, i MapReduce eller direkt i en Amazon EC2-instans.

Hadoop-mavens kan använda Java för att interagera med H2O, men ramverket ger också bindningar för Python, R och Scala, så att du också kan interagera med alla tillgängliga bibliotek på dessa plattformar. Du kan också komma tillbaka till REST-samtal som ett sätt att integrera H2O i de flesta rörledningar.

Oryx

Oryx, med tillstånd av skaparna av Cloudera Hadoop-distributionen, använder Apache Spark och Apache Kafka för att köra maskininlärningsmodeller på realtidsdata. Oryx ger ett sätt att bygga projekt som kräver beslut just nu, som rekommendationsmotorer eller detektering av liveavvikelser, som informeras av både nya och historiska data. Version 2.0 är en nästan fullständig redesign av projektet, med dess komponenter löst kopplade i en lambda-arkitektur. Nya algoritmer och nya abstraktioner för dessa algoritmer (t.ex. för val av hyperparameter) kan läggas till när som helst.

PyTorch Lightning

När ett kraftfullt projekt blir populärt kompletteras det ofta med tredjepartsprojekt som gör det lättare att använda. PyTorch Lightning tillhandahåller ett organisatoriskt omslag för PyTorch, så att du kan fokusera på koden som spelar roll istället för att skriva pannplatta för varje projekt.

Blixtprojekt använder en klassbaserad struktur, så varje gemensamt steg för ett PyTorch-projekt är inkapslat i en klassmetod. Utbildnings- och valideringsslingorna är halvautomatiserade, så du behöver bara ange din logik för varje steg. Det är också lättare att ställa in träningsresultaten i flera GPU: er eller olika hårdvarumix, eftersom instruktionerna och objektreferenserna för detta är centraliserade.

Scikit-lär dig

Python har blivit ett programmeringsspråk för matematik, naturvetenskap och statistik på grund av att det är lätt att anta och bredden på bibliotek tillgängliga för nästan alla applikationer. Scikit-learning utnyttjar denna bredd genom att bygga på flera befintliga Python-paket - NumPy, SciPy och Matplotlib - för matematik och naturvetenskap. De resulterande biblioteken kan användas för interaktiva ”workbench” -applikationer eller inbäddas i annan programvara och återanvändas. Satsen är tillgänglig under en BSD-licens, så den är helt öppen och återanvändbar.

Shogun

Shogun är ett av de längsta livsprojekten i denna samling. Den skapades 1999 och skrevs i C ++, men kan användas med Java, Python, C #, Ruby, R, Lua, Octave och Matlab. Den senaste stora versionen, 6.0.0, lägger till integrerat stöd för Microsoft Windows och Scala-språket.

Även om det är populärt och omfattande har Shogun konkurrens. Ett annat C ++ - baserat maskininlärningsbibliotek, Mlpack, har funnits bara sedan 2011, men säger sig vara snabbare och lättare att arbeta med (genom en mer integrerad API-uppsättning) än konkurrerande bibliotek.

Spark MLlib

Maskininlärningsbiblioteket för Apache Spark och Apache Hadoop, MLlib har många vanliga algoritmer och användbara datatyper, utformade för att köras i hastighet och skala. Även om Java är det främsta språket för att arbeta i MLlib kan Python-användare ansluta MLlib till NumPy-biblioteket, Scala-användare kan skriva kod mot MLlib och R-användare kan ansluta till Spark från och med version 1.5. Version 3 av MLlib fokuserar på att använda Sparks DataFrame API (i motsats till det äldre RDD API) och ger många nya klassificerings- och utvärderingsfunktioner.

Ett annat projekt, MLbase, bygger på MLlib för att göra det lättare att få resultat. I stället för att skriva kod gör användare frågor med ett deklarativt språk à la SQL.

Weka

Weka, skapat av Machine Learning Group vid University of Waikato, betecknas som "maskininlärning utan programmering." Det är en GUI-arbetsbänk som gör det möjligt för datakämpar att montera rörledningar för maskininlärning, träna modeller och köra förutsägelser utan att behöva skriva kod. Weka arbetar direkt med R, Apache Spark och Python, den senare via ett direkt omslag eller genom gränssnitt för vanliga numeriska bibliotek som NumPy, Pandas, SciPy och Scikit-learning. Wekas ​​stora fördel är att den erbjuder webbläsbara, vänliga gränssnitt för alla aspekter av ditt jobb inklusive pakethantering, förbehandling, klassificering och visualisering.