Programmēšana

Pārskats: Scikit-learn spīd vienkāršākai mašīnmācībai

Scikits ir uz Python balstītas zinātniskās rīkkopas, kas izveidotas ap SciPy, Python bibliotēku zinātniskai skaitļošanai. Scikit-learn ir atvērta pirmkoda projekts, kas vērsts uz mašīnmācīšanos: klasifikāciju, regresiju, kopu veidošanu, dimensiju samazināšanu, modeļa izvēli un pirmapstrādi. Tas ir diezgan konservatīvs projekts, kas uzturēšanas un ierobežotu izstrādātāju resursu dēļ ir diezgan piesardzīgs, lai izvairītos no darbības jomas slīdēšanas un lēkšanas uz nepierādītiem algoritmiem. No otras puses, tam ir diezgan jauka cieto algoritmu izvēle, un tas izmanto Cython (kompilatoru Python-to-C) funkcijām, kurām jābūt ātrām, piemēram, iekšējām cilpām.

Starp jomām, ko dara Scikit-learn ietver dziļu mācīšanos, mācības pastiprināšanu, grafiskos modeļus un secības prognozēšanu. Tas ir definēts kā tas, kas atrodas Python un ir paredzēts Python, tāpēc tam nav API citām valodām. Scikit-learn neatbalsta PyPy - ātru un savlaicīgu Python ieviešanas apkopošanu, jo tā atkarības NumPy un SciPy pilnībā neatbalsta PyPy.

Scikit-learn neatbalsta GPU paātrinājumu vairāku iemeslu dēļ, kas saistīti ar tā sarežģītību un mašīnu atkarībām. Tad atkal, izņemot neironu tīklus, Scikit-learn ir maz vajadzīga GPU paātrināšana.

Scikit-learn funkcijas

Kā jau minēju, Scikit-learn ir laba algoritmu izvēle klasifikācijai, regresijai, kopām, dimensiju samazināšanai, modeļu atlasei un pirmapstrādei. Klasifikācijas apgabalā, kas attiecas uz kategorijas noteikšanu, kurai pieder objekts, un ko sauc par uzraudzītu mācīšanos, tā ievieš atbalsta vektoru mašīnas (SVM), tuvākos kaimiņus, loģistisko regresiju, nejaušu mežu, lēmumu kokus utt. daudzlīmeņu perceptrona (MLP) neironu tīkls.

Tomēr Scikit-learn MLP ieviešana nav skaidri paredzēta liela mēroga lietojumiem. Lai iegūtu plaša mēroga GPU bāzes ieviešanu un padziļinātu mācīšanos, meklējiet daudzos saistītos Scikit-learn projektus, kas ietver Python draudzīgu dziļu neironu tīkla ietvarus, piemēram, Keras un Theano.

Regresijai, kas paredz nepārtraukti vērtēta atribūta, kas saistīts ar objektu, prognozēšanu (piemēram, akcijas cenu), Scikit-learn ir atbalsta vektora regresija (SVR), kores regresija, Lasso, Elastic Net, vismazākā leņķa regresija (LARS ), Bajesa regresija, dažāda veida spēcīga regresija utt. Tas faktiski ir lielāks regresijas algoritmu klāsts, nekā lielākā daļa analītiķu varētu vēlēties, taču katram no tiem ir labi izmantošanas gadījumi.

Klasterizācijai - bez uzraudzības mācīšanās paņēmienam, kurā līdzīgi objekti tiek automātiski sagrupēti kopās, Scikit-learn ir k-līdzekļi, spektrālā kopu veidošana, vidējā nobīde, hierarhiskā kopu veidošana, DBSCAN un daži citi algoritmi. Atkal ir iekļauta konservatīvo algoritmu gamma.

Dimensiju samazināšana ir aptuveni apsveramo nejaušo mainīgo skaita samazināšana, izmantojot sadalīšanās paņēmienus, piemēram, galveno komponentu analīzi (PCA) un negatīvas matricas faktorizāciju (NMF), vai pazīmju izvēles paņēmienus. Modeļa atlase ir saistīta ar parametru un modeļu salīdzināšanu, apstiprināšanu un izvēli, un tajā tiek izmantoti tādi algoritmi kā režģa meklēšana, savstarpēja validācija un metriskās funkcijas. Abās jomās Scikit-learn iekļauj visus labi pārbaudītos algoritmus un metodes viegli pieejamās API.

Pirmapstrāde, kas ietver iezīmju iegūšanu un normalizēšanu, ir viena no pirmajām un vissvarīgākajām mašīnmācīšanās procesa daļām. Normalizēšana pārveido iezīmes par jauniem mainīgajiem, bieži vien ar nulles vidējo un vienības dispersiju, bet dažreiz atrodas starp norādīto minimālo un maksimālo vērtību, bieži 0 un 1. Funkciju izvilkšana tekstu vai attēlus pārvērš skaitļos, kurus var izmantot mašīnmācībai. Šeit atkal Scikit-learn pasniedz visus garšīgos klasiskos ēdienus, ko jūs sagaidāt šajā smorgasbordā. Jūs varat brīvi savākt to, kurš jums patīk.

Ievērojiet šo funkciju ieguve ir diezgan atšķirīgs no funkcijas atlase, kas minēts iepriekš sadaļā dimensiju samazināšana. Funkciju izvēle ir veids, kā uzlabot mācīšanos, noņemot nemainīgas, kovārijas vai citādi statistiski nesvarīgas funkcijas.

Īsāk sakot, Scikit-learn ietver pilnu algoritmu un metožu komplektu dimensiju samazināšanai, modeļa izvēlei, funkciju izdalīšanai un normalizēšanai, lai gan to veikšanai trūkst jebkāda veida darbplūsmas, izņemot labu piemēru kolekciju un labu dokumentāciju.

Scikit-learn instalēšana un palaišana

Iespējams, ka mana Scikit-learn instalēšana ir bijusi mana vienkāršākā mašīnmācīšanās ietvara instalēšana jebkad. Tā kā visi priekšnosacījumi man jau bija instalēti un pietiekami atjaunināti (Python, Numpy un Scipy), tam bija nepieciešama viena komanda:

$ sudo pip install -U scikit-learn

Labi, man vajadzēja divas komandas, jo pirmo reizi aizmirsu sudo.

Tas man lika Scikit-mācīties 0.18.1. Labam nolūkam es arī pārbaudīju GitHub repozitoriju, instalēju deguna testēšanas ietvaru un izveidoju Scikit-learn no avota izstrādes versiju, kas bija tikpat vienkārša kā pāreja uz repozitorija sakni un rakstīšana veidot. Pagāja zināms laiks, lai sastādītu Python, ģenerētu un apkopotu visus C failus, saistītu montāžu un palaistu visus testus, taču nebija nepieciešama nekāda iejaukšanās.

Izpildīt savu pirmo Scikit-learn piemēru arī bija ļoti viegli. No vispārīgo piemēru lapas es noklikšķināju uz piemēru, lai uzzīmētu savstarpēji apstiprinātas prognozes, izlasīju piezīmju grāmatiņu, lejupielādēju Python avota kodu un Jupyter piezīmjdatoru un palaidu tos. Python avots dažas sekundes pakavējās, ģenerēja dažus brīdinājuma ziņojumus un uznāca diagramma. Jupyter piezīmju grāmatiņa būtībā darīja to pašu, kad es to vadīju interaktīvi, kā redzat attēlā zemāk.

Scikit-learn nopelna visaugstākās atzīmes par izstrādes vieglumu starp visām mašīnmācīšanās sistēmām, kuras esmu pārbaudījis, galvenokārt tāpēc, ka algoritmi darbojas kā reklamēti un dokumentēti, API ir konsekventi un labi izstrādāti, un starp tiem ir maz “pretestības neatbilstību”. datu struktūras. Ir prieks strādāt ar bibliotēku, kurā funkcijas ir pilnībā papildinātas un kļūdas ir rūpīgi izskalotas.

Mācīties Scikit-mācīties

Scikit-learn dokumentācija ir laba, un piemēru ir daudz - kopā aptuveni 200. Lielākajā daļā piemēru ir vismaz viens grafiks, kas iegūts no analizētajiem datiem, izmantojot Matplotlib. Tas viss veicina bibliotēkas vieglumu attīstīt un mācīties.

Ir viena gara apmācība "Mācība par statistikas apguvi zinātnisko datu apstrādei", kurā ir piecas sadaļas un pielikums par palīdzības meklēšanu. Apmācība ir diezgan laba, gan aptverot pamatjēdzienus, gan parādot piemērus, izmantojot faktiskos datus, kodu un diagrammas. Tas izsauc arī ar tekstu saistītus piemērus, piemēram, četru dažādu SVM klasifikatoru salīdzinājumu, kas parādīts zemāk redzamajā attēlā.

Piemēri, ar kuriem es strādāju, viņu tīmekļa vietnēs bija diezgan skaidri redzami. Daudzos gadījumos, kad es lejupielādēju un izpildīju piemērus, viņi metīs brīdinājumus, kas nav redzami tīmekļa lapā, bet vienmēr radīs vienādus rezultātus. Pirmais attēls, kas parāda manu Jupyter piezīmjdatora izvadi, lai uzzīmētu savstarpēji apstiprinātas prognozes, ir labs piemērs.

Lielāko daļu brīdinājumu es attiecinu uz Apple vecLib ietvara defektiem un Python bibliotēku evolūciju. Daži, šķiet, ir brīdinājumi programmā Python 2.7.10, kas nebija pieejami jebkurā tīmekļa lapas versijā. Zemāk redzamajā attēlā ir šāds brīdinājums; atbilstošā tīmekļa lapa nav.

Kā Python bibliotēka mašīnmācībai ar apzināti ierobežotu darbības jomu, Scikit-learn ir ļoti laba. Tam ir plašs labi izveidotu algoritmu sortiments ar integrētu grafiku. To ir salīdzinoši viegli instalēt, iemācīties un izmantot, un tajā ir labi piemēri un apmācības.

No otras puses, Scikit-learn neattiecas uz dziļu mācīšanos vai mācīšanos pastiprināšanu, kas atstāj pašreizējās smagās, bet svarīgās problēmas, piemēram, precīzu attēlu klasifikāciju un uzticamu reāllaika valodas parsēšanu un tulkošanu. Turklāt tas neietver grafiskos modeļus vai secības paredzēšanu, to īsti nevar izmantot no citām valodām, izņemot Python, un tas neatbalsta PyPy vai GPU.

Uz satverošā naga veiktspēja, ko Scikit-learn sasniedz mašīnmācībai, kas nav neironu tīkli, ir diezgan laba, pat bez PyPy vai GPU paātrinājuma. Python bieži ir zippier, nekā cilvēki sagaida no tulka, un Cython izmantošana, lai ģenerētu C kodu iekšējām cilpām, novērš lielāko daļu Scikit-learn vājo vietu.

Skaidrs, ka, ja jūs interesē padziļināta mācīšanās, jums vajadzētu meklēt citur. Neskatoties uz to, ir daudz problēmu - sākot no prognozēšanas funkcijas izveidošanas, kas savieno dažādus novērojumus, līdz novērojumu klasificēšanai un struktūras apguvei bez etiķetes esošā datu kopā - tās ir vienkāršas vecās mašīnmācības, neprasot desmitiem neironu slāņu, un šīm jomām -mācīties ir ļoti labi.

Ja esat Python ventilators, Scikit-learn var būt labākais risinājums vienkāršo mašīnmācīšanās bibliotēku vidū. Ja vēlaties Scala, tad Spark ML varētu būt labāka izvēle. Un, ja jums patīk veidot mācību cauruļvadus, zīmējot diagrammas un neregulāri uzrakstot Python vai R fragmentu, tad Microsoft Cortana Analytics Suite - it īpaši Azure Machine Learning Studio - varētu labi atbilst jūsu vēlmēm.

---

Izmaksas: Bezmaksas atvērtā koda.Platforma: Nepieciešams Python, NumPy, SciPy un Matplotlib. Izlaidumi ir pieejami MacOS, Linux un Windows.

Rezultātu karteModeļi un algoritmi (25%) Attīstības vienkāršība (25%) Dokumentācija (20%) Izrāde (20%) Izvietošanas ērtums (10%) Kopējais rādītājs (100%)
Scikit-mācīties 0.18.199989 8.8
$config[zx-auto] not found$config[zx-overlay] not found