„PySpark“ pamoka pradedantiesiems: mokykitės su PAVYZDŽIAIS

Prieš mokydamiesi „PySpark“, suprasime:

Kas yra „Apache Spark“?

„Spark“ yra didelių duomenų sprendimas, kuris pasirodė esąs lengvesnis ir greitesnis nei „Hadoop MapReduce“. „Spark“ yra atviro kodo programinė įranga, kurią 2009 m. Sukūrė „UC Berkeley RAD“ laboratorija. Nuo tada, kai ji buvo išleista visuomenei 2010 m., „Spark“ išpopuliarėjo ir yra naudojama pramonėje beprecedenčio masto.

Didžiųjų duomenų eroje praktikams kaip niekad reikia greitų ir patikimų duomenų perdavimo apdorojimo įrankių. Ankstesni įrankiai, tokie kaip „MapReduce“, buvo mėgstami, tačiau buvo lėti. Norėdami išspręsti šią problemą, „Spark“ siūlo greitą ir bendros paskirties sprendimą. Pagrindinis skirtumas tarp „Spark“ ir „MapReduce“ yra tas, kad „Spark“ skaičiavimus atlieka atmintyje vėliau standžiajame diske. Tai leidžia greitai pasiekti ir apdoroti duomenis, sutrumpinant laiką nuo valandų iki minučių.

Kas yra „PySpark“?

„PySpark“ yra „Apache Spark Community“ sukurtas įrankis, skirtas naudoti „Python“ su „Spark“. Tai leidžia dirbti su RDD („Resilient Distributed Dataset“) „Python“. Ji taip pat siūlo „PySpark Shell“ susieti „Python“ API su „Spark“ šerdimi, kad būtų pradėtas „Spark“ kontekstas. „Spark“ yra vardinis variklis, skirtas realizuoti klasterinius skaičiavimus, o „PySpark“ yra „Python“ biblioteka, skirta naudoti „Spark“.

Šioje „PySpark“ pamokoje pradedantiesiems sužinosite tokius „PySpark“ pagrindus kaip

Kaip veikia „Spark“?

„Spark“ yra pagrįstas skaičiavimo varikliu, o tai reiškia, kad jis rūpinasi planavimo, platinimo ir stebėjimo programomis. Kiekviena užduotis atliekama įvairiose darbuotojų mašinose, vadinamose skaičiavimo klasteriu. Skaičiavimo klasteris reiškia užduočių paskirstymą. Viena mašina atlieka vieną užduotį, o kitos prisideda prie galutinio rezultato atliekant kitą užduotį. Galų gale visos užduotys yra sujungtos, kad būtų sukurtas rezultatas. „Spark“ administratorius pateikia 360 įvairių „Spark“ darbų apžvalgą.

Kaip veikia „Spark“

„Spark“ sukurta darbui

  • Python
  • „Java“
  • Kopėčios
  • SQL

Svarbi „Spark“ savybė yra daugybė integruotos bibliotekos, įskaitant „MLlib“, skirtą mašininiam mokymuisi . „Spark“ taip pat skirta dirbti su „Hadoop“ grupėmis ir gali nuskaityti plataus tipo failus, įskaitant „Hive“ duomenis, CSV, JSON, „Casandra“ duomenis.

Kodėl naudoti „Spark“?

Kaip būsimas duomenų praktikas, turėtumėte būti susipažinę su garsiomis „Python“ bibliotekomis: „Pandas“ ir „scikit-learn“. Šios dvi bibliotekos yra fantastiškos norint ištirti iki vidutinio dydžio duomenų rinkinį. Įprasti mašininio mokymosi projektai yra pagrįsti tokia metodika:

  • Įkelkite duomenis į diską
  • Importuokite duomenis į įrenginio atmintį
  • Apdoroti/analizuoti duomenis
  • Sukurkite mašinų mokymosi modelį
  • Išsaugokite prognozę atgal į diską

Problema kyla, jei duomenų mokslininkas nori apdoroti duomenis, kurie yra per dideli vienam kompiuteriui. Ankstesnėmis duomenų mokslo dienomis praktikai imdavo pavyzdžius, nes ne visada reikėdavo mokyti didžiulius duomenų rinkinius. Duomenų mokslininkas surastų gerą statistinį pavyzdį, atliktų papildomą patikimumą ir sugalvotų puikų modelį.

Tačiau yra tam tikrų problemų:

  • Ar duomenų rinkinys atspindi realų pasaulį?
  • Ar duomenys apima konkretų pavyzdį?
  • Ar modelis tinka mėginių ėmimui?

Paimkite, pavyzdžiui, vartotojų rekomendacijas. Rekomenduotojai, vertindami jų nuostatas, remiasi naudotojų palyginimu su kitais vartotojais. Jei duomenų praktikas paims tik duomenų pogrupį, nebus labai panašių vartotojų grupės. Rekomenduotojai turi paleisti visą duomenų rinkinį arba visai ne.

Koks yra sprendimas?

Sprendimas buvo akivaizdus jau seniai, padalinkite problemą į kelis kompiuterius. Lygiagretus skaičiavimas taip pat turi daug problemų. Kūrėjams dažnai kyla problemų rašant lygiagretų kodą ir jiems tenka išspręsti daugybę sudėtingų problemų, susijusių su pačiu daugialypiu apdorojimu.

„Pyspark“ duomenų mokslininkui suteikia API, kuri gali būti naudojama lygiagrečių duomenų tvarkymo problemoms spręsti. „Pyspark“ tvarko sudėtingus daugiaprocesinius veiksmus, tokius kaip duomenų platinimas, kodo platinimas ir darbuotojų išvesties surinkimas mašinų grupėje.

„Spark“ gali veikti savarankiškai, tačiau dažniausiai veikia ant klasterinės skaičiavimo sistemos, tokios kaip „Hadoop“. Tačiau bandymų ir kūrimo metu duomenų mokslininkas gali efektyviai paleisti „Spark“ savo kūrimo dėžėse ar nešiojamuosiuose kompiuteriuose be klasterio

• Vienas iš pagrindinių „Spark“ pranašumų yra sukurti architektūrą, apimančią duomenų srautų valdymą, sklandžias duomenų užklausas, mašininio mokymosi prognozavimą ir prieigą prie įvairios analizės realiuoju laiku.

• „Spark“ glaudžiai bendradarbiauja su SQL kalba, t. Y. Su struktūrizuotais duomenimis. Tai leidžia užklausti duomenis realiuoju laiku.

• Pagrindinis duomenų mokslininko darbas yra analizuoti ir kurti nuspėjamus modelius. Trumpai tariant, duomenų mokslininkas turi žinoti, kaip atlikti duomenų užklausas naudojant SQL, parengti statistinę ataskaitą ir panaudoti mašininį mokymąsi, kad būtų galima prognozuoti. Duomenų mokslininkas daug laiko praleidžia duomenų valymui, transformavimui ir analizei. Kai duomenų rinkinys ar duomenų darbo eiga yra paruošta, duomenų mokslininkas naudoja įvairius metodus, kad surastų įžvalgas ir paslėptus modelius. Duomenų apdorojimas turėtų būti patikimas ir lengvai naudojamas. „Spark“ yra tinkamas įrankis dėl savo greičio ir turtingų API.

Šioje „PySpark“ pamokoje sužinosite, kaip sukurti klasifikatorių naudojant „PySpark“ pavyzdžius.

Kaip įdiegti „PySpark“ su AWS

„Jupyter“ komanda sukuria „Docker“ įvaizdį, kad efektyviai paleistų „Spark“. Žemiau pateikiami veiksmai, kuriuos galite atlikti norėdami įdiegti „PySpark“ egzempliorių AWS.

Peržiūrėkite mūsų pamoką apie AWS ir „TensorFlow“

1 veiksmas: sukurkite egzempliorių

Pirmiausia turite sukurti egzempliorių. Eikite į savo AWS paskyrą ir paleiskite egzempliorių. Galite padidinti saugyklą iki 15 g ir naudoti tą pačią saugos grupę, kaip ir „TensorFlow“ pamokoje.

2 veiksmas: atidarykite ryšį

Atidarykite ryšį ir įdiekite doko talpyklą. Norėdami gauti daugiau informacijos, skaitykite vadovėlį su „TensorFlow“ su Dokeris . Atminkite, kad turite būti teisingame darbo kataloge.

Norėdami įdiegti „Docker“, tiesiog paleiskite šiuos kodus: | _+_ |

3 veiksmas: iš naujo atidarykite ryšį ir įdiekite „Spark“

Iš naujo atidarę ryšį, galite įdiegti vaizdą, kuriame yra „PySpark“. | _+_ |

4 žingsnis: atidarykite „Jupyter“

Patikrinkite konteinerį ir jo pavadinimą | _+_ |

Paleiskite doką naudodami dokų žurnalus, o po to - doko pavadinimą. Pavyzdžiui, „Docker“ registruoja uolų_goldwasser

Eikite į savo naršyklę ir paleiskite „Jupyter“. Adresas yra http: // localhost: 8888/. Įklijuokite terminalo pateiktą slaptažodį.

Pastaba : jei norite įkelti/atsisiųsti failą į savo AWS įrenginį, galite naudoti programinę įrangą „Cyberduck“, https://cyberduck.io/ .

Kaip įdiegti „PySpark“ sistemoje „Windows“/„Mac“ su „Conda“

Toliau pateikiamas išsamus procesas, kaip įdiegti „PySpark“ „Windows“/„Mac“ naudojant „Anaconda“:

Norint įdiegti „Spark“ vietiniame kompiuteryje, rekomenduojama sukurti naują „conda“ aplinką. Ši nauja aplinka įdiegs „Python 3.6“, „Spark“ ir visas priklausomybes.

„Mac“ vartotojas

 sudo yum update -y sudo yum install -y docker sudo service docker start sudo user-mod -a -G docker ec2-user exit 

„Windows“ vartotojas

 ## Spark docker run -v ~/work:/home/jovyan/work -d -p 8888:8888 jupyter/pyspark-notebook ## Allow preserving Jupyter notebook sudo chown 1000 ~/work ## Install tree to see our working directory next sudo yum install -y tree 

Galite redaguoti .yml failą. Būkite atsargūs su įtrauka. Prieš dvi vietas reikia užpildyti - | _+_ |

Išsaugokite jį ir sukurkite aplinką. Tai užtrunka šiek tiek laiko | _+_ |

Norėdami gauti daugiau informacijos apie vietą, peržiūrėkite mokymo programą „Install TensorFlow“

Galite patikrinti visą įrenginyje įdiegtą aplinką | _+_ | | _+_ |

„Mac“ vartotojas

docker ps 

„Windows“ vartotojas

 cd anaconda3 touch hello-spark.yml vi hello-spark.yml 

Pastaba: Jūs jau sukūrėte konkrečią „TensorFlow“ aplinką, kad galėtumėte vykdyti „TensorFlow“ mokymo programas. Patogiau sukurti naują aplinką, kuri skiriasi nuo „hello-tf“. Nėra prasmės „hello-tf“ perkrauti „Spark“ ar kitomis mašininio mokymosi bibliotekomis.

Įsivaizduokite, kad didžioji jūsų projekto dalis yra „TensorFlow“, tačiau jums reikia naudoti „Spark“ vienam konkrečiam projektui. Visam projektui galite nustatyti „TensorFlow“ aplinką ir sukurti atskirą „Spark“ aplinką. „Spark“ aplinkoje galite pridėti tiek bibliotekų, kiek norite, netrukdydami „TensorFlow“ aplinkai. Baigę „Spark“ projektą, galite jį ištrinti nepažeisdami „TensorFlow“ aplinkos.

Jupyteris

Atidarykite „Jupyter Notebook“ ir pabandykite, ar „PySpark“ veikia. Į naują bloknotą įklijuokite šį „PySpark“ pavyzdžio kodą: | _+_ |

Jei rodoma klaida, tikėtina, kad jūsų kompiuteryje neįdiegta „Java“. „Mac“ sistemoje atidarykite terminalą ir parašykite „java“ versiją, jei yra „Java“ versija, įsitikinkite, kad ji yra 1.8. „Windows“ eikite į „Application“ ir patikrinkite, ar yra „Java“ aplankas. Jei yra „Java“ aplankas, patikrinkite, ar įdiegta „Java 1.8“. Nuo šio rašymo „PySpark“ nesuderinamas su „Java9“ ir naujesnėmis versijomis.

Jei jums reikia įdiegti „Java“, pagalvokite nuoroda ir atsisiųskite jdk-8u181-windows-x64.exe

„Mac“ naudotojui rekomenduojama naudoti „brew“. | _+_ |

Žiūrėkite šį žingsnis po žingsnio vadovėlį kaip įdiegti „Java“

Pastaba : Naudokite pašalinimą, kad visiškai ištrintumėte aplinką. | _+_ |

„Spark“ kontekstas

„SparkContext“ yra vidinis variklis, leidžiantis prisijungti prie grupių. Jei norite paleisti operaciją, jums reikia „SparkContext“.

Sukurkite „SparkContext“

Pirmiausia turite inicijuoti „SparkContext“. | _+_ |

Dabar, kai „SparkContext“ yra paruoštas, galite sukurti duomenų rinkinį, pavadintą RDD, „Resilient Distributed Dataset“. RDD skaičiavimas automatiškai yra lygiagretus visoje grupėje. | _+_ |

Pirmąją eilutę galite pasiekti paspaudę | _+_ | | _+_ |

Galite pritaikyti duomenų transformaciją naudodami lambda funkciją. Žemiau esančiame „PySpark“ pavyzdyje grąžinate skaičių kvadratą. Tai žemėlapio transformacija | _+_ | | _+_ |

SQLContext

Patogesnis būdas yra naudoti „DataFrame“. „SparkContext“ jau nustatytas, galite jį naudoti norėdami sukurti „dataFrame“. Taip pat turite deklaruoti SQLContext

SQLContext leidžia prijungti variklį prie skirtingų duomenų šaltinių. Jis naudojamas „Spark SQL“ funkcijoms inicijuoti. | _+_ |

Dabar šioje „Spark“ pamokoje „Python“ sukurkime „tuple“ sąrašą. Kiekvienoje kortelėje bus nurodytas žmonių vardas ir amžius. Būtina atlikti keturis veiksmus:

1 žingsnis) Sukurkite kortelių sąrašą su informacija | _+_ |

2 žingsnis) Sukurkite RDD

 cd C:UsersAdminAnaconda3 echo.>hello-spark.yml notepad hello-spark.yml 

3 veiksmas) Konvertuoti eilutes | _+_ |

4 veiksmas) Sukurkite „DataFrame“ kontekstą | _+_ |

Jei norite pasiekti kiekvienos funkcijos tipą, galite naudoti printSchema () | _+_ |

Mašinos mokymosi pavyzdys naudojant „PySpark“

Dabar, kai turite trumpą „Spark“ ir „SQLContext“ idėją, esate pasiruošę sukurti savo pirmąją mašinų mokymosi programą.

Toliau pateikiami žingsniai, kaip sukurti mašinų mokymosi programą naudojant „PySpark“:

  • 1 žingsnis) Pagrindinė operacija su „PySpark“
  • 2 žingsnis) Išankstinis duomenų apdorojimas
  • 3 veiksmas) Sukurkite duomenų apdorojimo grandinę
  • 4 veiksmas) Sukurkite klasifikatorių: logistinis
  • 5 veiksmas) Mokykite ir įvertinkite modelį
  • 6 veiksmas) Sureguliuokite hiperparametrą

Šioje „PySpark Machine Learning“ pamokoje naudosime suaugusiųjų duomenų rinkinį. Šios pamokos tikslas yra išmokti naudotis „Pyspark“. Norėdami gauti daugiau informacijos apie duomenų rinkinį, skaitykite šią mokymo programą.

Atminkite, kad duomenų rinkinys nėra reikšmingas ir galite manyti, kad skaičiavimas užtrunka ilgai. „Spark“ sukurta dideliam duomenų kiekiui apdoroti. „Spark“ našumas padidėja, palyginti su kitomis mašininio mokymosi bibliotekomis, kai apdorojamas duomenų rinkinys tampa didesnis.

1 veiksmas) Pagrindinė „PySpark“ operacija

Pirmiausia turite inicijuoti „SQLContext“ dar nėra inicijuotas. | _+_ |

tada galite perskaityti cvs failą naudodami sqlContext.read.csv. Naudodami „inferSchema“ nustatytą tiesą, „Spark“ nurodys automatiškai atspėti duomenų tipą. Pagal numatytuosius nustatymus jis yra „False“. | _+_ |

Pažvelkime į duomenų tipą | _+_ |

Duomenis galite pamatyti su šou. | _+_ | | _+_ |

Jei nenustatėte „inderShema“ į „True“, štai kas vyksta su tipu. Visi yra eilutėse. | _+_ |

Norėdami konvertuoti nuolatinį kintamąjį tinkamu formatu, galite naudoti stulpelių nauja redakciją. Su „Colon“ galite nurodyti „Spark“, kuriame stulpelyje atlikti transformaciją. | _+_ |

Pasirinkite stulpelius

Galite pasirinkti ir rodyti eilutes su pasirinkimu ir funkcijų pavadinimus. Žemiau pasirenkamas amžius ir fnlwgt. | _+_ | | _+_ |

Skaičiuokite pagal grupę

Jei norite suskaičiuoti įvykių skaičių pagal grupes, galite susieti grandinę:

  • Grupuoti pagal()
  • skaičiuoti ()

kartu. Žemiau esančiame „PySpark“ pavyzdyje skaičiuojate eilučių skaičių pagal išsilavinimo lygį. | _+_ | | _+_ |

Apibūdinkite duomenis

Norėdami gauti suvestinę duomenų statistiką, galite naudoti aprašymą (). Jis apskaičiuos:

  • skaičiuoti
  • reiškia
  • standartinis nuokrypis
  • min
  • maks
 name: hello-spark dependencies: - python=3.6 - jupyter - ipython - numpy - numpy-base - pandas - py4j - pyspark - pytz 
conda env create -f hello-spark.yml 

Jei norite tik vieno stulpelio suvestinės statistikos, pridėkite stulpelio pavadinimą aprašymo viduje () | _+_ | | _+_ |

Kryžminis skaičiavimas

Kai kuriais atvejais gali būti įdomu pamatyti aprašomąją statistiką tarp dviejų porų stulpelių. Pavyzdžiui, pagal išsilavinimo lygį galite suskaičiuoti žmonių, kurių pajamos yra mažesnės arba didesnės nei 50 tūkst. Ši operacija vadinama kryžmine. | _+_ | | _+_ |

Matote, kad jaunų žmonių pajamos neviršija 50 tūkst.

Nuleisti stulpelį

Yra dvi intuityvios stulpelių nuleidimo API:

  • drop (): numeskite stulpelį
  • dropna (): Drop NA

Žemiau jūs numetate stulpelį švietimas_num | _+_ |

Filtruoti duomenis

Naudodami filtrą () galite taikyti aprašomąją statistiką duomenų pogrupyje. Pavyzdžiui, galite suskaičiuoti vyresnių nei 40 metų žmonių skaičių | _+_ |

13443

Aprašomoji statistika pagal grupes

Galiausiai galite sugrupuoti duomenis pagal grupes ir apskaičiuoti statistines operacijas, tokias kaip vidurkis. | _+_ | | _+_ |

2 žingsnis. Išankstinis duomenų apdorojimas

Duomenų apdorojimas yra esminis mašininio mokymosi žingsnis. Pašalinus šiukšlių duomenis, gausite svarbių įžvalgų.

Pavyzdžiui, jūs žinote, kad amžius nėra tiesinė funkcija su pajamomis. Kai žmonės yra jauni, jų pajamos paprastai yra mažesnės nei vidutinio amžiaus. Išėjus į pensiją, namų ūkis naudoja savo santaupas, o tai reiškia pajamų sumažėjimą. Norėdami užfiksuoti šį modelį, prie amžiaus funkcijos galite pridėti kvadratą

Pridėkite amžiaus kvadratą

Norėdami pridėti naują funkciją, turite:

  1. Pasirinkite stulpelį
  2. Taikykite transformaciją ir pridėkite ją prie „DataFrame“
conda env list 

Matote, kad age_square sėkmingai pridėtas prie duomenų rėmo. Galite pakeisti kintamųjų tvarką pasirinkdami. Žemiau pateikiate age_square iškart po amžiaus. | _+_ | | _+_ |

Neįtraukti Holando-Nyderlandų

Kai objekto grupė turi tik vieną pastebėjimą, ji į modelį neatneša jokios informacijos. Priešingai, kryžminio patvirtinimo metu gali atsirasti klaida.

Patikrinkime namų ūkio kilmę | _+_ | | _+_ |

Funkcija native_country turi tik vieną namų ūkį iš Nyderlandų. Jūs jį atmetate. | _+_ |

3 žingsnis. Sukurkite duomenų apdorojimo srautą

Panašiai kaip „scikit-learn“, „Pyspark“ turi dujotiekio API.

Dujotiekis yra labai patogus išlaikyti duomenų struktūrą. Jūs stumiate duomenis į dujotiekį. Dujotiekio viduje atliekamos įvairios operacijos, išvestis naudojama algoritmui tiekti.

Pavyzdžiui, viena visuotinė mašininio mokymosi transformacija susideda iš eilutės konvertavimo į vieną karštą koduotuvą, ty vieną grupės stulpelį. Vienas karštas kodavimo įrenginys paprastai yra matrica, pilna nulių.

Duomenų pakeitimo veiksmai yra labai panašūs į „scikit-learn“. Tau reikia:

  • Indeksuokite eilutę į skaičių
  • Sukurkite vieną karštą kodavimo įrenginį
  • Transformuokite duomenis

Darbą atlieka dvi API: „StringIndexer“, „OneHotEncoder“

  1. Visų pirma, jūs pasirenkate eilutės stulpelį, kurį norite indeksuoti. „InputCol“ yra duomenų rinkinio stulpelio pavadinimas. outputCol yra naujas pavadinimas, suteiktas pakeistam stulpeliui.
Activate hello-spark
  1. Sudėkite duomenis ir pakeiskite juos
source activate hello-spark 
  1. Sukurkite naujienų stulpelius pagal grupę. Pvz., Jei funkcijoje yra 10 grupių, naujoje matricoje bus 10 stulpelių, po vieną kiekvienai grupei.
activate hello-spark 
 import pyspark from pyspark import SparkContext sc =SparkContext() 
 brew tap caskroom/versions brew cask install java8 

Pastatykite dujotiekį

Sukursite dujotiekį, kad galėtumėte konvertuoti visas tikslias funkcijas ir įtraukti jas į galutinį duomenų rinkinį. Dujotiekis turės keturias operacijas, tačiau nedvejodami pridėkite tiek operacijų, kiek norite.

  1. Užšifruokite kategorinius duomenis
  2. Indeksuokite etiketės funkciją
  3. Pridėti nuolatinį kintamąjį
  4. Surinkite žingsnius.

Kiekvienas žingsnis saugomas sąraše, pavadintame etapais. Šiame sąraše „VectorAssembler“ bus nurodyta, kokią operaciją atlikti dujotiekyje.

1. Užkoduokite kategorinius duomenis

Šis veiksmas yra visiškai toks pat, kaip aukščiau pateiktas pavyzdys, išskyrus tai, kad nurodote visas kategorines savybes. | _+_ |

2. Indeksuokite etiketės funkciją

„Spark“, kaip ir daugelis kitų bibliotekų, nepriima etiketės eilutės reikšmių. Etikečių funkciją konvertuojate naudodami „StringIndexer“ ir įtraukiate ją į sąrašo etapus | _+_ |

3. Pridėkite nuolatinį kintamąjį

„VectorAssembler“ „inputCols“ yra stulpelių sąrašas. Galite sukurti naują sąrašą, kuriame yra visi nauji stulpeliai. Žemiau pateiktas kodas papildo sąrašą užkoduotomis kategorinėmis ir nuolatinėmis funkcijomis. | _+_ |

4. Surinkite žingsnius.

Galiausiai atlikite visus „VectorAssembler“ veiksmus | _+_ |

Dabar, kai visi veiksmai yra paruošti, jūs stumiate duomenis į dujotiekį. | _+_ |

Jei patikrinsite naują duomenų rinkinį, pamatysite, kad jame yra visos funkcijos, pakeistos ir nekeistos. Jus domina tik nauja etiketė ir funkcijos. Funkcijos apima visas transformuotas funkcijas ir nuolatinius kintamuosius. | _+_ |

4 žingsnis. Sukurkite klasifikatorių: logistinis

Kad skaičiavimas būtų greitesnis, modelį konvertuojate į „DataFrame“.

Naudodami žemėlapį turite pasirinkti naują etiketę ir funkcijas iš modelio. | _+_ |

Jūs esate pasiruošę sukurti traukinio duomenis kaip „DataFrame“. Jūs naudojate sqlContext | _+_ |

Patikrinkite antrąją eilutę | _+_ | | _+_ |

Sukurkite traukinio/bandymų rinkinį

Jūs padalijote duomenų rinkinį 80/20 naudodami randomSplit. | _+_ |

Suskaičiuokime, kiek žmonių, kurių pajamos yra mažesnės arba didesnės nei 50 tūkst., Tiek mokymų, tiek bandymų metu | _+_ | | _+_ | | _+_ | | _+_ |

Sukurkite logistinį regresorių

Galiausiai galite sukurti klasifikatorių. „Pyspark“ turi API, vadinamą „LogisticRegression“, kad atliktų logistinę regresiją.

Jūs inicijuojate lr nurodydami etikečių stulpelį ir funkcijų stulpelius. Galite nustatyti ne daugiau kaip 10 pakartojimų ir pridėti reguliavimo parametrą, kurio vertė yra 0,3. Atminkite, kad kitame skyriuje modeliui sureguliuoti naudosite kryžminį patvirtinimą su parametrų tinkleliu | _+_ |

#Matote regresijos koeficientus | _+_ | | _+_ |

5 žingsnis. Treniruokite ir įvertinkite modelį

Norėdami sugeneruoti bandymų rinkinio prognozę,

Galite naudoti linearModel su transform () test_data | _+_ |

Galite atspausdinti elementus prognozėse | _+_ |

Jus domina etiketė, prognozė ir tikimybė | _+_ | | _+_ |

Įvertinkite modelį

Turite pažvelgti į tikslumo metriką, kad pamatytumėte, kaip gerai (ar blogai) veikia modelis. Šiuo metu nėra API, leidžiančios apskaičiuoti „Spark“ tikslumo matą. Numatytoji vertė yra ROC, imtuvo veikimo charakteristikų kreivė. Tai kitokia metrika, kurioje atsižvelgiama į klaidingai teigiamą rodiklį.

Prieš žiūrėdami į ROC, sukurkime tikslumo matą. Jūs esate labiau susipažinę su šia metrika. Tikslumo matas yra teisingos prognozės suma per visą stebėjimų skaičių.

Sukuriate „DataFrame“ su etikete ir „prognoze“. | _+_ |

Galite patikrinti klasių skaičių etiketėje ir prognozę | _+_ | | _+_ | | _+_ | | _+_ |

Pavyzdžiui, bandymų rinkinyje yra 1578 namų ūkiai, kurių pajamos viršija 50 000, o 5021 - žemiau. Tačiau klasifikatorius numatė 617 namų ūkių, kurių pajamos viršijo 50 tūkst.

Tikslumą galite apskaičiuoti apskaičiuodami skaičių, kai etiketė teisingai klasifikuojama pagal bendrą eilučių skaičių. | _+_ |

0.8237611759357478

Galite viską suvynioti ir parašyti funkciją tikslumui apskaičiuoti. | _+_ |

ROC metrika

Į modulį „BinaryClassificationEvaluator“ įtrauktos ROC priemonės. Imtuvo veikimo charakteristikų kreivė yra dar vienas įprastas įrankis, naudojamas dvejetainėje klasifikacijoje. Ji labai panaši į tikslumo/atšaukimo kreivę, tačiau vietoj tikslumo ir atšaukimo brėžinio ROC kreivė parodo tikrąjį teigiamą rodiklį (t. Y. Atšaukimą), palyginti su klaidingai teigiamu rodikliu. Klaidingai teigiamas rodiklis yra neigiamų atvejų, kurie neteisingai klasifikuojami kaip teigiami, santykis. Jis lygus vienam minus tikroji neigiama norma. Tikrasis neigiamas rodiklis dar vadinamas specifiškumu. Taigi ROC kreivė rodo jautrumą (atšaukimą) ir 1 - specifiškumą | _+_ |

0.8940481662695192PRORO | _+_ | teritorija

0.8940481662695192

6 veiksmas) Sureguliuokite hiperparametrą

Paskutinis, bet ne mažiau svarbus dalykas - galite sureguliuoti hiperparametrus. Panašiai kaip „scikit“, kuriate parametrų tinklelį ir pridedate parametrus, kuriuos norite sureguliuoti.

Norėdami sutrumpinti skaičiavimo laiką, reguliavimo parametrą derinkite tik su dviem reikšmėmis. | _+_ |

Galiausiai, jūs įvertinate modelį naudodami kryžminio vertinimo metodą su 5 raukšlėmis. Treniruotis užtrunka apie 16 minučių. | _+_ |

Laikas mokyti modelį: 978,807 sekundės

Geriausias reguliavimo hiperparametras yra 0,01, kurio tikslumas 85,316 proc. | _+_ |

Rekomenduojamą parametrą galite ištraukti į grandinę cvModel.bestModel su extractParamMap () | _+_ | | _+_ |

Santrauka

„Spark“ yra pagrindinė duomenų mokslininko priemonė. Tai leidžia praktikui prijungti programą prie skirtingų duomenų šaltinių, sklandžiai atlikti duomenų analizę arba pridėti nuspėjamąjį modelį.

Norėdami pradėti nuo „Spark“, turite pradėti „Spark“ kontekstą naudodami:

„SparkContext ()“

ir SQL kontekstą, kad prisijungtumėte prie duomenų šaltinio:

„SQLContext ()“

Pamokoje sužinosite, kaip išmokyti logistinę regresiją:

  1. Konvertuokite duomenų rinkinį į duomenų rėmelį naudodami:
 conda env remove -n hello-spark -y 

Atminkite, kad etiketės stulpelio pavadinimas yra naujas etiketė ir visos funkcijos yra sujungtos į funkcijas. Pakeiskite šias reikšmes, jei jos skiriasi jūsų duomenų rinkinyje.

  1. Sukurkite traukinio/bandymų rinkinį
 import pyspark from pyspark import SparkContext sc =SparkContext() 
  1. Treniruok modelį
nums= sc.parallelize([1,2,3,4]) 
nums.take(1) 
  1. Padarykite prognozę
[1]