Alamin ang Scikit - Pag-aaral ng Machine gamit ang Python



Ipakilala ka ng Scikit Learn blog sa Machine Learning sa sawa. Nagsasama ito ng isang kaso ng paggamit kung saan ipapatupad namin ang logistic regression gamit ang scikit malaman.

Sa blog na ito, tatalakayin namin ang natutunan ng Scikit sa sawa. Bago pag-usapan ang tungkol sa Scikit malaman, dapat maunawaan ng isa ang konsepto ng pagkatuto ng makinaat dapat malaman kung paano gamitin . Sa pag-aaral ng makina, hindi mo kailangang kolektahin nang manu-mano ang iyong mga pananaw. Kailangan mo lamang ng isang algorithm at gagawin ng makina ang natitira para sa iyo! Hindi ba ito kapanapanabik? Ang natutunan ng Scikit ay isa sa akit kung saan maaari nating ipatupad ang pag-aaral ng makina gamit ang Python. Itoay isang libreng machine learning library na naglalaman ng simple at mahusay na mga tool para sa pagtatasa ng data at mga hangarin sa pagmimina.Dadalhin kita sa mga sumusunod na paksa, na magsisilbing batayan para sa paparating na mga blog:

Ano ang pagkatuto ng Machine?

Ang pag-aaral ng makina ay isang uri ng artipisyal na katalinuhan na nagpapahintulot sa mga application ng software na matuto mula sa data at maging mas tumpak sa paghula ng mga kinalabasan nang walang interbensyon ng tao. Ngunit paano ito mangyayari? Para doon, kailangang masanay ang makina sa ilang data at batay dito, makakakita ito ng isang pattern upang lumikha ng isang modelo.Ang prosesong ito ng pagkakaroon ng kaalaman mula sa data at pagbibigay ng malalakas na pananaw ay tungkol sa pag-aaral ng makina. Sumangguni sa imahe sa ibaba upang makakuha ng isang mas mahusay na pag-unawa sa gumagana nito:





MachineLearning - Scikit Matuto - Edureka

Gamit ang data, natututo ang system ng isang algorithm at pagkatapos ay ginagamit ito upang bumuo ng isang hulang modelo. Sa paglaon, inaayos namin ang modelo o pinahusay namin ang katumpakan ng modelo gamit ang data ng feedback. Gamit ang data ng feedback na ito, binabagay namin ang modelo at hinuhulaan ang pagkilos sa bagong hanay ng data. Gagawin namintumatalakay a gamit kaso ng isa sa diskarte sa algorithm kung saan susasanay at susubukan namin ang data na makakatulong sa iyo na magbigay ng isang mas mahusay na kahulugan ng kung ito ay magiging angkop para sa iyong partikular na problema o hindi.



Susunod, mayroong tatlong uri ng pag-aaral ng makina:

    • Pinangangasiwaang Pag-aaral : Ito ay isang proseso ng isang algorithm na natututo mula sa dataset ng pagsasanay. Ang pinangangasiwaang pag-aaral ay kung saan bumubuo ka ng isang pagpapaandar sa pagmamapa sa pagitan ng input variable (X) at isang variable ng output (Y) at gumagamit ka ng isang algorithm upang makabuo ng isang pagpapaandar sa pagitan nila. Kilala rin ito bilang prediksyong pagmomodelo na tumutukoy sa isang proseso ng paggawa ng mga hula gamit ang data. Ang ilan sa mga algorithm ay may kasamang Linear Regression, Logistic Regression, Tree decision, Random forest at Naive Bayes classifier. Tatalakayin pa namin ang isang kaso ng paggamit ng pinangangasiwaang pag-aaral kung saan sinasanay namin ang makina gamit logistic regression .
    • Hindi suportadong Pag-aaral : Ito ay isang proseso kung saan ang isang modelo ay sinanay gamit ang isang impormasyon na hindi may label. Ang prosesong ito ay maaaring magamit upang maipon ang input data sa mga klase batay sa kanilang mga katangiang pang-istatistika. Ang hindi suportadong pag-aaral ay tinatawag ding clustering analysis na nangangahulugang ang pagpapangkat ng mga bagay batay sa impormasyong matatagpuan sa datos na naglalarawan sa mga bagay o kanilang ugnayan. Ang layunin ay ang mga bagay sa isang pangkat ay dapat magkatulad sa bawat isa ngunit magkakaiba sa mga bagay sa isa pang pangkat. Ang ilan sa mga algorithm ay may kasamang K-ibig sabihin ng clustering, Hierarchical clustering atbp.
    • Pag-aaral ng pagpapatibay: Ang pagkatuto ng pagpapalakas ay pag-aaral sa pamamagitan ng pakikipag-ugnay sa isang puwang o isang kapaligiran.Ang isang ahente ng RL ay natututo mula sa mga kahihinatnan ng mga pagkilos nito, kaysa sa itinuro nang malinaw. Pinipili nito ang mga aksyon batay sa mga nakaraang karanasan (pagsasamantala) at pati na rin ng mga bagong pagpipilian (paggalugad).

Pangkalahatang-ideya ng Scikit Learn

Ang Scikit malaman ay isang silid-aklatan na ginamit upang maisagawa ang pag-aaral ng makina sa Python. Ang Scikit malaman ay isang bukas na mapagkukunan ng library na may lisensya sa ilalim ng BSD at magagamit muli sa iba't ibang mga konteksto, hinihikayat ang paggamit ng akademiko at komersyal. Nagbibigay ito ng isang hanay ng mga pinangangasiwaan at hindi sinusuportahang mga algorithm sa pag-aaral sa Python.Ang Scikit malaman ay binubuo ng mga tanyag na algorithm at aklatan. Maliban dito, naglalaman din ito ng mga sumusunod na package:



  • NumPy
  • Matplotlib
  • SciPy (Scientific Python)

Upang maipatupad ang natutunan sa Scikit, kailangan muna nating i-import ang mga package sa itaas. Kung hindi ka pamilyar sa mga libraryong ito, maaari kang tumingin sa aking mga nakaraang blog sa at . Maaari mong i-download ang dalawang mga pakete na ito gamit ang linya ng utos o kung gumagamit ka ng PYKaakit-akit, maaari mong direktang mai-install ito sa pamamagitan ng pagpunta sa iyong setting sa parehong paraan na ginagawa mo ito para sa iba pang mga pakete.

Susunod, sa isang katulad na pamamaraan, kailangan mong i-import ang Sklearn.Ang natutunan ng Scikit ay itinayo sa SciPy (Scientific Python) na dapat na mai-install bago mo magamit ang Scikit-malaman. Maaari kang mag-refer dito website i-download ang pareho. Gayundin, i-install ang Scipy at wheel package kung wala ito, maaari kang mag-type sa utos sa ibaba:

kung paano gamitin ang system.exit sa java
pip install scipy

Na-download ko at na-install ito, maaari kang mag-refer sa screenshot sa ibaba para sa anumang pagkalito.

Matapos ang pag-import ng mga aklatan sa itaas, maghukay tayo ng mas malalim at unawain kung paano eksaktong ginagamit ang pag-aaral ng Scikit.

Ang natutunan ng Scikit ay mayroong mga sample na dataset, tulad ng iris at mga digit . Maaari mong i-import ang mga dataset at maglaro kasama nila. Pagkatapos nito, kailangan mong i-import ang SVM na nangangahulugang Suporta ng Vector Machine. Ang SVM ay isang uri ng pag-aaral ng makina na ginagamit upang pag-aralan ang data.

Gumawa tayo ng isang halimbawa kung saan tayo kukuha mga digit dataset at ikakategorya nito ang mga numero para sa amin, halimbawa- 0 1 2 3 4 5 6 7 8 9. Sumangguni sa code sa ibaba:

i-import ang matplotlib.pyplot bilang plt mula sa sklearn na pag-import ng mga dataset mula sa sklearn import na mga digit na svm = datasets.load_digits () print (digit.data)

Output -

[[0. 0. 5. ..., 0. 0. 0.] [0. 0. 0. ..., 10. 0. 0.] [0. 0. 0. ..., 16. 9. 0.] ..., [0. 0. 1. ..., 6. 0. 0.] [0. 0. 2. ..., 12. 0. 0.] [0. 0. 10. ..., 12. 1. 0.]]

Dito lang namin na-import ang mga aklatan, SVM, mga database at naka-print ang data. Ito ay isang mahabang hanay ng data ng mga digit kung saan nakaimbak ang data. Nagbibigay ito ng pag-access sa mga tampok na maaaring magamit upang maiuri ang mga digit mga sample. Susunod, maaari mo ring subukan ang ilang iba pang mga pagpapatakbo tulad ng target, mga imahe atbp Isaalang-alang ang halimbawa sa ibaba:

i-import ang matplotlib.pyplot bilang pltarn mula sa sklearn na pag-import ng mga dataset mula sa sklearn import svm digit = datasets.load_digits () print (digit.target) print (digit.images [0])

Paglabas -

[0 1 2 ..., 8 9 8] // target ng data [[0. 0. 5. 13. 9. 1. 0. 0.] // imahe ng data [0. 0. 13. 15. 10. 15. 5. 0.] [0. 3. 15. 2. 0. 11. 8. 0.] [0. 4. 12. 0. 0. 8. 8. 0.] [0. 5. 8. 0. 0. 9. 8. 0.] [0. 4. 11. 0. 1. 12. 7. 0.] [0. 2. 14. 5. 10. 12. 0. 0. ] [0. 0. 6. 13. 10. 0. 0. 0.]]

Tulad ng nakikita mo sa itaas, ang mga target na digit at ang imahe ng mga digit ay nakalimbag. mga digit.target nagbibigay ng katotohanan sa lupa para sa digit dataset, iyon ang bilang na naaayon sa bawat digit na imahe. Susunod, ang data ay palaging isang 2D array na may isang hugis (n_samples, n_feature), kahit na ang orihinal na data ay maaaring magkaroon ng ibang hugis. Ngunit sa kaso ng mga digit, ang bawat orihinal na sample ay isang imahe ng hugis (8,8) at maaaring ma-access gamit ang mga digit . imahe

Pag-aaral at Pagtatula

Susunod, sa Scikit malaman, gumamit kami ng isang dataset (sample ng 10 posibleng mga klase, mga digit mula sa zero hanggang siyam) at kailangan nating hulaan ang mga digit kapag ibinigay ang isang imahe. Upang mahulaan ang klase, kailangan namin ng tagatantiya na tumutulong upang mahulaan ang mga klase kung saan nabibilang ang mga hindi nakikitang sample. Sa Scikit matuto, mayroon kaming isang estimator para sa pag-uuri na kung saan ay isang sawa na bagay na nagpapatupad ng mga pamamaraan magkasya (x, y) at hulaan (T). Isaalang-alang natin ang halimbawa sa ibaba:

i-import ang matplotlib.pyplot bilang plt mula sa sklearn import na mga data mula sa sklearn import svm digit = datasets.load_digits () // dataset clf = svm.SVC (gamma = 0.001, C = 100) print (len (digit.data)) x, y = digit.data [: - 1], digit.target [: - 1] // sanayin ang data clf.fit (x, y) print ('Prediction:', clf.predict (digit.data [-1]) ) // hulaan ang data plt.imshow (digit.images [-1], cmap = plt.cm.gray_r, interpolation = 'pinakamalapit') plt.show ()

Output -

1796
Pagtataya: [8]


Sa halimbawa sa itaas, una naming nahanap ang haba at na-load ang 1796 na mga halimbawa. Susunod, ginamit namin ang data na ito bilang isang data ng pag-aaral, kung saan kailangan naming subukan ang huling elemento at unang negatibong elemento. Gayundin, kailangan naming suriin kung hinula ng makina ang tamang data o hindi. Para doon, ginamit namin ang Matplotlib kung saan ipinakita namin ang imahe ng mga digit.Kaya upang tapusin, mayroon kang data ng mga digit, nakuha mo ang target, akma at hinuhulaan mo ito at kung gayon mahusay kang pumunta! Ito ay talagang mabilis at madali, hindi ba?

Maaari mo ring mailarawan ang mga target na label na may isang imahe, mag-refer lamang sa ibaba code:

pagkakaiba sa pagitan ng chef at nakakain
i-import ang matplotlib.pyplot bilang plt mula sa sklearn import na mga data mula sa sklearn import na mga digit na svm = datasets.load_digits () # Sumali sa mga imahe at i-target ang mga label sa isang listahan ng mga imahe_and_labels = listahan (zip (digit.images, digit.target)) # para sa bawat elemento sa listahan para sa index, (imahe, label) sa pag-enumerate (mga imahe_and_labels [: 8]): # ipasimula ang isang subplot ng 2X4 sa i + 1-ika na posisyon plt.subplot (2, 4, index + 1) # Ipakita ang mga imahe sa lahat ng mga subplot plt.imshow (imahe, cmap = plt.cm.gray_r, interpolation = 'pinakamalapit') # Magdagdag ng isang pamagat sa bawat subplot plt.title ('Training:' + str (label)) # Ipakita ang plt plt. ipakita ()

Paglabas-


Tulad ng nakikita mo sa itaas na code, ginamit namin ang function na 'zip' upang sumali sa mga imahe at i-target ang mga label sa isang listahan at pagkatapos ay i-save ito sa isang variable, sabihin ang mga imahe_and_labels. Pagkatapos nito, na-index namin ang unang walong elemento sa isang grid na 2 by 4 sa bawat posisyon. Pagkatapos nito, ipinakita lamang namin ang mga imahe sa tulong ng Matplotlib at idinagdag ang pamagat bilang 'pagsasanay'.

Gumamit ng Kaso - Pagtataya gamit ang Logistic Regression

Pahayag ng Suliranin - Ang isang kumpanya ng kotse ay naglabas ng isang bagong SUV sa merkado. Gamit ang nakaraang data tungkol sa mga benta ng kanilang mga SUV, nais nilang hulaan ang kategorya ng mga tao na maaaring interesado sa pagbili nito.

Para sa mga ito, tingnan natin ang isang dataset kung nasaan ako UserId, kasarian, edad, tinatayang suweldo at binili bilang mga haligi. Ito ay isang sample na dataset lamang, maaari mong i-download ang buong dataset mula sa dito . Kapag na-import na namin ang data sa pyCharm, mukhang ganito ito.

Ipaalam sa amin ngayon na maunawaan ang data na ito. Tulad ng nakikita mo sa dataset sa itaas, mayroon kaming mga kategorya tulad ng id, kasarian, edad atbp Ngayon batay sa mga kategoryang ito, magsasanay kami ng aming makina at hulaan ang hindi. ng mga pagbili. Kaya heto, mayroon tayo independiyenteng mga variable bilang 'edad', 'inaasahang suweldo' at umaasang variable bilang 'binili'. Ngayon ay ilalapat namin ang pinangangasiwaang pag-aaral, ibig sabihin logistic regression algorithm upang malaman ang bilang ng pagbili gamit ang umiiral na data.

Una, kumuha tayo ng isang pangkalahatang ideya ng pag-urong sa logistic.

Logistic Regression - Ang Logistic Regression ay gumagawa ng mga resulta sa isang binary format na ginagamit upang hulaan ang kinalabasan ng isang kategoryang umaasa na variable. Ito ay pinaka malawak na ginagamit kapag ang umaasa na variable ay binary ibig sabihin, ang bilang ng mga magagamit na kategorya ay dalawa tulad ng, ang karaniwang output ng logistic regression ay -

  • Oo at hindi
  • Tama at mali
  • Mataas at mababa
  • Pass at Fail

Ngayon upang magsimula sa code, mai-import muna namin ang mga aklatan na ito - Numpy, Matplotlib at Pandas. Napakadali mag-import ng mga pandas sa Pycharm sa pamamagitan ng pagsunod sa mga hakbang sa ibaba:

Mga setting -> Magdagdag ng Package -> Pandas -> I-install

Pagkatapos nito, mai-import namin ang dataset at paghiwalayin ang dependant variable (binili) at independiyenteng variable (edad, suweldo) ayon sa:

dataset = pd.read_csv ('Social_Network_Ads.csv') X = dataset.iloc [:, [2, 3]]. mga halaga y = dataset.iloc [:, 4] .mga halaga na naka-print (X) naka-print (y)

Ang susunod na hakbang ay ang pagsasanay at pagsubok sa data. Ang isang pangkaraniwang diskarte ay kunin ang lahat ng data na may label at nahahati sa mga subset ng pagsasanay at pagsubok, na kadalasang kinukuha ng proporsyon na 70-80% para sa subset ng pagsasanay at 20-30% para sa subset ng pagsubok. Samakatuwid, lumikha kami ng mga set ng Pagsasanay at Pagsubok gamit ang cross_validation.

itakda ang java classpath windows 10
mula sa sklearn.cross_validation import train_test_split X_train, X_test, y_train, y_test = train_test_split (X, y, test_size = 0.25, random_state = 0)

Maaari din nating sukatin ang mga halaga ng pag-input para sa mas mahusay na pagganap gamit ang StandarScaler tulad ng ipinakita sa ibaba:

mula sa sklearn.preproseso ng pag-import ng StandardScaler sc = StandardScaler () X_train = sc.fit_transform (X_train) X_test = sc.transform (X_test)

Lilikha kami ngayon ng aming modelo ng Logistic Regression.

mula sa sklearn.linear_model import LogisticRegression classifier = LogisticRegression (random_state = 0) classifier.fit (X_train, y_train)

Maaari naming gamitin ito at hulaan ang mga resulta ng aming hanay ng pagsubok.

y_pred = classifier.predict (X_test)

Ngayon, maaari nating suriin kung gaano karaming mga hula ang tumpak at kung ilan ang hindi gumagamit pagkalito matrix . Tukuyin natin ang Y bilang mga positibong pagkakataon at ang N bilang mga negatibong pagkakataon. Ang apat na kinalabasan ay formulated sa 2 * 2 pagkalito matrix, tulad ng kinakatawan sa ibaba:

mula sa sklearn.metrics import pagkalito_matrix cm = pagkalito_matrix (y_test, y_pred) print (cm)

Paglabas-

[[65 3] [8 24]]

Susunod, batay sa aming matrix ng pagkalito, maaari naming kalkulahin ang kawastuhan. Kaya sa aming halimbawa sa itaas, ang kawastuhan ay:

= TP + TN / FN + FP

= 65 + 24/65 +3+ 8 + 24

= 89%

Nagawa namin ito nang manu-mano! Ngayon tingnan natin kung paano kinakalkula ng makina ang pareho para sa amin, para sa mayroon kaming isang nakapaloob na pagpapaandar na 'katumpakan_score' na kinakalkula ang katumpakan at naka-print ito, tulad ng ipinakita sa ibaba:

mula sa sklearn.metrics pag-import ng katumpakan_score // i-import ang pag-andar katumpakan_score print (katumpakan_score (y_test, y_pred) * 100) // nakalimbag ang katumpakan

Output -

89.0

Hurray! Sa gayon ay matagumpay nating naipatupad ang logistic regression gamit ang Scikit matuto na may katumpakan na 89%.

Pindutin dito upang makuha ang buong kumpletong mapagkukunan ng hula sa itaas gamit ang Python Scikit malaman library.

Sa pamamagitan nito, nasakop namin ang isa lamang sa maraming mga tanyag na algorithm na inalok ng sawa.Sinasaklaw namin ang lahat ng mga pangunahing kaalaman sa Scikit malaman ang aklatan,upang maaari mong simulan ang pagsasanay ngayon. Ang mas maraming kasanayan ay mas marami kang matutunan. Abangan ang karagdagang mga blog sa tutorial ng sawa!

May tanong ba sa amin? Mangyaring banggitin ito sa seksyon ng mga komento ng blog na 'Scikit malaman' at babalikan ka namin sa lalong madaling panahon. Upang makakuha ng malalim na kaalaman sa Python kasama ang iba't ibang mga application nito, maaari mo para sa live na pagsasanay sa online na may suporta na 24/7 at habang-buhay na pag-access.