Programmering

14 verktøy med åpen kildekode for å få mest mulig ut av maskinlæring

Søppelpostfiltrering, ansiktsgjenkjenning, anbefalingsmotorer - når du har et stort datasett som du vil utføre prediktiv analyse eller mønstergjenkjenning på, er maskinlæring veien å gå. Spredningen av gratis åpen kildekode-programvare har gjort maskinlæring lettere å implementere både på enkeltmaskiner og i stor skala, og på de mest populære programmeringsspråkene. Disse open source-verktøyene inkluderer biblioteker for slike som Python, R, C ++, Java, Scala, Clojure, JavaScript og Go.

Apache Mahout

Apache Mahout gir en måte å bygge miljøer for å være vert for maskinlæringsapplikasjoner som kan skaleres raskt og effektivt for å møte etterspørselen. Mahout jobber hovedsakelig med et annet kjent Apache-prosjekt, Spark, og ble opprinnelig utviklet for å samarbeide med Hadoop for å kjøre distribuerte applikasjoner, men har blitt utvidet til å jobbe med andre distribuerte bakenden som Flink og H2O.

Mahout bruker et domenespesifikt språk i Scala. Versjon 0.14 er en viktig intern refaktor for prosjektet, basert på Apache Spark 2.4.3 som standard.

Komponer

Komponer, av Innovation Labs, retter seg mot et vanlig problem med maskinlæringsmodeller: Merking av rådata, som kan være en langsom og kjedelig prosess, men uten hvilken en maskinlæringsmodell ikke kan levere nyttige resultater. Med Compose kan du i Python skrive et sett med merkingsfunksjoner for dataene dine, slik at merking kan gjøres så programmatisk som mulig. Ulike transformasjoner og terskler kan settes på dataene dine for å gjøre merkingsprosessen enklere, for eksempel å plassere data i kasser basert på diskrete verdier eller kvantiler.

Core ML-verktøy

Apples Core ML-rammeverk lar deg integrere maskinlæringsmodeller i apper, men bruker sitt eget distinkte læringsmodellformat. Den gode nyheten er at du ikke trenger å trene modeller i Core ML-formatet for å bruke dem; Du kan konvertere modeller fra omtrent alle vanlige rammeverk for maskinlæring til Core ML med Core ML Tools.

Core ML Tools kjører som en Python-pakke, slik at den integreres med en mengde Python maskinlæringsbiblioteker og verktøy. Modeller fra TensorFlow, PyTorch, Keras, Caffe, ONNX, Scikit-learning, LibSVM og XGBoost kan alle konverteres. Nevrale nettverksmodeller kan også optimaliseres for størrelse ved å bruke kvantisering etter trening (f.eks. Til en liten bit dybde som fortsatt er nøyaktig).

Cortex

Cortex gir en praktisk måte å betjene spådommer fra maskinlæringsmodeller ved hjelp av Python og TensorFlow, PyTorch, Scikit-learning og andre modeller. De fleste Cortex-pakker består av bare noen få filer - kjernen din Python-logikk, en cortex.yaml-fil som beskriver hvilke modeller du skal bruke og hvilke typer beregningsressurser som skal tildeles, og en krav.txt-fil for å installere de nødvendige Python-kravene. Hele pakken er distribuert som en Docker-container til AWS eller et annet Docker-kompatibelt vertssystem. Beregningsressurser tildeles på en måte som gjenspeiler definisjonene som brukes i Kubernetes for samme, og du kan bruke GPUer eller Amazon Inferentia ASIC for å få raskere servering.

Funksjonelle verktøy

Funksjonsteknikk, eller oppretting av funksjoner, innebærer å ta dataene som brukes til å trene en maskinlæringsmodell og produsere, typisk for hånd, en transformert og samlet versjon av dataene som er mer nyttig for å trene modellen. Featuretools gir deg funksjoner for å gjøre dette ved hjelp av høyt nivå Python-objekter bygget ved å syntetisere data i datarammer, og kan gjøre dette for data hentet fra en eller flere datarammer. Featuretools gir også vanlige primitiver for synteseoperasjonene (f.eks. tid_siden_ tidligere, for å gi tid som er gått mellom forekomster av tidsstemplede data), slik at du ikke trenger å rulle dem alene.

GoLearn

GoLearn, et maskinlæringsbibliotek for Googles Go-språk, ble opprettet med de to målene enkelhet og tilpassbarhet, ifølge utvikler Stephen Whitworth. Enkelheten ligger i måten data lastes inn og håndteres i biblioteket, som er mønstret etter SciPy og R. Tilpassbarheten ligger i hvordan noen av datastrukturene enkelt kan utvides i et program. Whitworth har også opprettet en Go-innpakning for Vowpal Wabbit-biblioteket, en av bibliotekene som finnes i Shogun-verktøykassen.

Gradio

En vanlig utfordring når du bygger applikasjoner for maskinlæring er å bygge et robust og enkelt tilpasset brukergrensesnitt for modellopplæring og prediksjonsserveringsmekanismer. Gradio tilbyr verktøy for å lage nettbaserte brukergrensesnitt som lar deg samhandle med modellene dine i sanntid. Flere inkluderte eksempler på prosjekter, som inngangsgrensesnitt til Inception V3-bildeklassifiseringen eller MNIST-håndskriftgjenkjenningsmodellen, gir deg en ide om hvordan du kan bruke Gradio med dine egne prosjekter.

H2O

H2O, nå i sin tredje store revisjon, gir en hel plattform for maskinlæring i minnet, fra trening til servering av spådommer. H2Os algoritmer er rettet mot forretningsprosesser - for eksempel svindel eller trendforutsigelser - i stedet for for eksempel bildeanalyse. H2O kan samhandle på en frittstående måte med HDFS-butikker, på toppen av GARN, i MapReduce, eller direkte i en Amazon EC2-forekomst.

Hadoop mavens kan bruke Java til å samhandle med H2O, men rammeverket gir også bindinger for Python, R og Scala, slik at du også kan samhandle med alle bibliotekene som er tilgjengelige på disse plattformene. Du kan også falle tilbake til REST-samtaler som en måte å integrere H2O i de fleste rørledninger.

Oryx

Oryx, med tillatelse fra skaperne av Cloudera Hadoop-distribusjonen, bruker Apache Spark og Apache Kafka til å kjøre maskinlæringsmodeller på sanntidsdata. Oryx gir en måte å bygge prosjekter som krever avgjørelser i øyeblikket, som anbefalingsmotorer eller live avvik, som blir informert av både nye og historiske data. Versjon 2.0 er en nesten fullstendig redesign av prosjektet, med komponentene løst koblet i en lambda-arkitektur. Nye algoritmer og nye abstraksjoner for disse algoritmene (f.eks. For valg av hyperparameter) kan legges til når som helst.

PyTorch Lyn

Når et kraftig prosjekt blir populært, suppleres det ofte med tredjepartsprosjekter som gjør det enklere å bruke. PyTorch Lightning gir en organisatorisk innpakning for PyTorch, slik at du kan fokusere på koden som betyr noe i stedet for å skrive kjeleplate for hvert prosjekt.

Lynprosjekter bruker en klassebasert struktur, så hvert vanlige trinn for et PyTorch-prosjekt er innkapslet i en klassemetode. Trenings- og valideringsløkkene er halvautomatiske, så du trenger bare å oppgi logikken din for hvert trinn. Det er også lettere å sette opp treningsresultatene i flere GPUer eller forskjellige maskinvareblandinger, fordi instruksjonene og objektreferansene for å gjøre det er sentralisert.

Scikit-lær

Python har blitt et godt programmeringsspråk for matematikk, naturfag og statistikk på grunn av dets enkle adopsjon og bredden av biblioteker som er tilgjengelige for nesten alle applikasjoner. Scikit-learning utnytter denne bredden ved å bygge på toppen av flere eksisterende Python-pakker - NumPy, SciPy og Matplotlib - for matematikk og naturfag. De resulterende bibliotekene kan brukes til interaktive "arbeidsbenk" -applikasjoner eller innebygd i annen programvare og gjenbrukes. Settet er tilgjengelig under en BSD-lisens, så det er helt åpent og gjenbrukbart.

Shogun

Shogun er et av de lengste levetidsprosjektene i denne samlingen. Den ble opprettet i 1999 og skrevet i C ++, men kan brukes med Java, Python, C #, Ruby, R, Lua, Octave og Matlab. Den siste store versjonen, 6.0.0, legger til innfødt støtte for Microsoft Windows og Scala-språket.

Selv om det er populært og omfattende, har Shogun konkurranse. Et annet C ++ - basert maskinlæringsbibliotek, Mlpack, har eksistert bare siden 2011, men bekjenner seg for å være raskere og lettere å jobbe med (ved hjelp av et mer integrert API-sett) enn konkurrerende biblioteker.

Spark MLlib

Maskinlæringsbiblioteket for Apache Spark og Apache Hadoop, MLlib har mange vanlige algoritmer og nyttige datatyper, designet for å kjøre i hastighet og skala. Selv om Java er det primære språket for å jobbe i MLlib, kan Python-brukere koble MLlib til NumPy-biblioteket, Scala-brukere kan skrive kode mot MLlib, og R-brukere kan plugge inn i Spark fra og med versjon 1.5. Versjon 3 av MLlib fokuserer på å bruke Sparks DataFrame API (i motsetning til den eldre RDD API), og gir mange nye klassifiserings- og evalueringsfunksjoner.

Et annet prosjekt, MLbase, bygger på toppen av MLlib for å gjøre det lettere å utlede resultater. I stedet for å skrive kode, gjør brukerne spørsmål ved hjelp av et deklarativt språk à la SQL.

Weka

Weka, opprettet av Machine Learning Group ved University of Waikato, blir betegnet som "maskinlæring uten programmering." Det er en GUI-arbeidsbenk som gjør det mulig for data wranglers å sette sammen maskinlæringsrørledninger, trene modeller og kjøre spådommer uten å måtte skrive kode. Weka jobber direkte med R, Apache Spark og Python, sistnevnte ved hjelp av en direkte innpakning eller gjennom grensesnitt for vanlige numeriske biblioteker som NumPy, Pandas, SciPy og Scikit-learning. Wekas ​​store fordel er at den gir nettlesbare, vennlige grensesnitt for alle aspekter av jobben din, inkludert pakkehåndtering, forbehandling, klassifisering og visualisering.

$config[zx-auto] not found$config[zx-overlay] not found