de Tirmidzi Faizal Aflahi

Odată cu creșterea învățării automate în industrii, nevoia unui instrument care vă poate ajuta să repetați rapid procesul a devenit vitală. Python, o stea în creștere în tehnologia Machine Learning, este adesea prima alegere care vă aduce succes. Deci, un ghid pentru învățarea automată cu Python este cu adevărat necesar.

Introducere în învățarea automată cu Python

Deci, de ce Python? Din experiența mea, Python este unul dintre cele mai ușoare limbaje de programare de învățat. Este necesar să iterați procesul rapid, iar cercetătorul în date nu trebuie să aibă o cunoaștere profundă a limbii, întrucât pot obține foarte repede.

Ce usor?

for anything in the_list:    print(anything)

Asa de usor. Sintaxa este strâns legată de engleză (sau de limbajul uman, nu de o mașină). Și nu există paranteze cretele care să încurce oamenii. Am o colegă care asigură calitatea, nu un inginer de software și poate scrie cod Python într-o zi la nivel de producție. (Adevărat!)

ad-banner

Deci, constructorii bibliotecilor pe care le vom discuta mai jos au ales Python pentru alegerea limbii. Și ca analist de date și om de știință, putem folosi doar capodoperele lor pentru a ne ajuta să îndeplinim sarcinile. Acestea sunt bibliotecile incredibile, care sunt indispensabile pentru învățarea automată cu Python.

  1. Numpy

Faimoasa bibliotecă de analize numerice. Vă va ajuta să faceți multe lucruri, de la calcularea medianei de distribuție a datelor, până la procesarea matricilor multidimensionale.

2. Panda

Pentru procesarea fișierelor CSV. Desigur, va trebui să procesați unele tabele și să vedeți statistici, iar acesta este instrumentul potrivit pe care doriți să îl utilizați.

3. Matplotlib

După ce aveți datele stocate în cadrele de date Pandas, este posibil să aveți nevoie de câteva vizualizări pentru a înțelege mai multe despre date. Imaginile sunt încă mai bune decât mii de cuvinte.

4. Născut în mare

Acesta este, de asemenea, un alt instrument de vizualizare, dar mai concentrat pe vizualizarea statistică. Lucruri precum histograme, sau diagrame, sau curbe, sau poate tabele de corelație.

5. Scikit-Learn

Acesta este ultimul șef al Machine Learning cu Python. ASA NUMITUL Machine Learning cu Python este acest tip. Scikit-Learn. Toate lucrurile de care aveți nevoie, de la algoritmi la îmbunătățiri, sunt aici.

6. Tensorflow și Pytorch

Nu vorbesc prea mult despre aceste două. Dar dacă sunteți interesat de Deep Learning, aruncați o privire la ele, va merita timpul. (Data viitoare voi oferi un alt tutorial despre Deep Learning, rămâneți la curent!)

Cum sa incepeti cu Machine Learning in aproximativ 10 minute
Fotografie de Hitesh Choudhary pe Unsplash

Proiecte Python Machine Learning

Desigur, citirea și studierea singură nu vă vor aduce acolo unde trebuie. Ai nevoie de practică reală. După cum am spus mai departe blogul meu, învățarea instrumentelor este inutilă dacă nu treceți în date. Așadar, vă prezint un loc în care puteți găsi cu ușurință proiecte Python Machine Learning.

Cum sa incepeti cu Machine Learning in aproximativ 10 minute
Curtoazie de Kaggle.com

Kaggle este o platformă unde vă puteți scufunda direct în date. Vei rezolva proiecte și vei deveni foarte bun la învățarea automată. Ceva care te-ar putea face să te intereseze mai mult: concursurile de învățare automată pe care le susține pot da un premiu de până la 100.000 de dolari. Și s-ar putea să doriți să vă încercați norocul. Haha.

Dar, cel mai important lucru nu sunt banii – este într-adevăr un loc unde puteți găsi Machine Learning cu Python Projects. Există o mulțime de proiecte pe care le puteți încerca. Dar dacă sunteți un începător și presupun că sunteți, veți dori să vă alăturați acestei competiții.

Iată un exemplu de proiect pe care îl vom folosi în tutorialul de mai jos:

Titanic: Învățarea automată din dezastru

Da, infamul Titanic. Un dezastru tragic în 1912, care a luat viața a 1502 de oameni din 2224 de pasageri și echipaj. Această competiție Kaggle (sau pot spune tutorial) vă oferă date reale despre dezastru. Și sarcina dvs. este să explicați datele, astfel încât să puteți prezice dacă o persoană a supraviețuit sau nu în timpul incidentului.

Învățare automată cu Python Tutorial

Înainte de a intra în profunzimea datelor Titanic, să instalăm câteva instrumente de care aveți nevoie.

Desigur, Python. Trebuie mai întâi să-l instalați din Python offfical website. Trebuie să instalați versiunea 3.6+ pentru a fi la curent cu bibliotecile.

După aceea, trebuie să instalați toate bibliotecile prin pip Python. Pip ar trebui să fie instalat automat cu distribuția Python pe care tocmai l-ați descărcat.

Apoi instalați lucrurile de care aveți nevoie prin pip. Deschideți terminalul, linia de comandă sau Powershell și scrieți următoarele:

pip install numpypip install pandaspip install matplotlibpip install seabornpip install scikit-learnpip install jupyter

Ei bine, totul arată bine. Dar așteaptă, ce este jupiter? Jupyter înseamnă Julia, Python și R, deci Jupytr. Dar este un combo ciudat de cuvinte, așa că l-au schimbat în Jupyter. Este un notebook celebru în care puteți scrie cod Python interactiv.

Doar tastați caiet de jupiter în terminalul dvs. și veți deschide o pagină de browser ca aceasta:

1611650229 866 Cum sa incepeti cu Machine Learning in aproximativ 10 minute
Notebook Jupyter

Scrieți codul în interiorul dreptunghiului verde și puteți scrie și evalua codul Python interactiv.

Acum ați instalat toate instrumentele. Haide să mergem!

Explorarea datelor

Primul pas este explorarea datelor. Trebuie să descărcați datele din Pagina Titanic din Kaggle. Apoi introduceți datele extrase într-un folder în care începeți notebook-ul Jupyter.

Apoi importați bibliotecile necesare:

import numpy as np import pandas as pdimport matplotlib.pyplot as pltimport seaborn as snsimport warningswarnings.filterwarnings('ignore')%matplotlib inline

Apoi încărcați datele:

train_df=pd.read_csv("train.csv")train_df.head()

Veți vedea așa ceva:

1611650229 179 Cum sa incepeti cu Machine Learning in aproximativ 10 minute

Acestea sunt datele noastre. Are următoarele coloane:

  1. PassengerId, identificatorul pasagerului
  2. A supraviețuit, indiferent dacă a supraviețuit sau nu
  3. Pclass, clasa serviciului, poate 1 este economie, 2 este business și 3 este clasa întâi
  4. Nume, numele pasagerului
  5. Sex
  6. Vârstă
  7. Sibsp, sau frați și soți, numărul fraților și soților la bord
  8. Parch, sau părinți și copii, numărul acestora la bord
  9. Bilet, detaliu bilet
  10. Cabina, cabina lor. NaN înseamnă necunoscut
  11. Îmbarcat, originea îmbarcării, S pentru Southampton, Q pentru Queenstown, C pentru Cherbourg

În timp ce explorăm date, găsim adesea date lipsa. Să le vedem:

def missingdata(data):    total = data.isnull().sum().sort_values(ascending = False)    percent = (data.isnull().sum()/data.isnull().count()*100).sort_values(ascending = False)    ms=pd.concat([total, percent], axis=1, keys=['Total', 'Percent'])    ms= ms[ms["Percent"] > 0]    f,ax =plt.subplots(figsize=(8,6))    plt.xticks(rotation='90')    fig=sns.barplot(ms.index, ms["Percent"],color="green",alpha=0.8)    plt.xlabel('Features', fontsize=15)    plt.ylabel('Percent of missing values', fontsize=15)    plt.title('Percent missing data by feature', fontsize=15)    return ms
missingdata(train_df)

Vom vedea un rezultat ca acesta:

1611650230 800 Cum sa incepeti cu Machine Learning in aproximativ 10 minute

Cabina, vârsta și datele de îmbarcare au unele valori lipsă. Și informațiile despre cabină lipsesc în mare măsură. Trebuie să facem ceva în legătură cu ele. Aceasta este ceea ce numim Curățarea datelor.

Curățarea datelor

Aceasta este ceea ce folosim 90% din timp. Vom face mult Curățarea datelor pentru fiecare proiect de învățare automată. Când datele sunt curate, putem trece cu ușurință la pasul următor, fără a ne îngrijora de nimic.

Cea mai comună tehnică în curățarea datelor este completarea datelor lipsă. Puteți completa datele lipsă cu Mod, medie sau medie. Nu există o regulă absolută cu privire la aceste alegeri – puteți încerca să alegeți una după alta și să vedeți performanța. Dar, pentru o regulă generală, puteți utiliza modul doar pentru datele clasificate și puteți utiliza mediana sau media pentru datele continue.

Deci, haideți să completăm datele de îmbarcare cu Mode și datele Age cu mediană.

train_df['Embarked'].fillna(train_df['Embarked'].mode()[0], inplace = True)train_df['Age'].fillna(train_df['Age'].median(), inplace = True)

Următoarea tehnică importantă este doar să eliminați datele, în special pentru datele care lipsesc în mare măsură. Să o facem pentru datele cabinei.

drop_column = ['Cabin']train_df.drop(drop_column, axis=1, inplace = True)

Acum putem verifica datele pe care le-am curățat.

print('check the nan value in train data')print(train_df.isnull().sum())
1611650230 685 Cum sa incepeti cu Machine Learning in aproximativ 10 minute

Perfect! Nu au fost găsite date lipsă. Înseamnă că datele au fost curățate.

1611650230 161 Cum sa incepeti cu Machine Learning in aproximativ 10 minute
Fotografie de Robert Bye pe Unsplash

Ingineria caracteristicilor

Acum am curățat datele. Următorul lucru pe care îl putem face este Ingineria caracteristicilor.

Ingineria caracteristicilor este practic o tehnică pentru găsirea caracteristicilor sau a datelor din datele disponibile în prezent. Există mai multe moduri de a face această tehnică. Mai des, este vorba de bunul simț.

Să aruncăm o privire la datele Embarked: sunt umplute cu Q, S sau C. Biblioteca Python nu va putea procesa acest lucru, deoarece este capabilă doar să proceseze numere. Deci, trebuie să faci ceva numit O vectorizare fierbinte, schimbând coloana în trei coloane. Să spunem Embarked_Q, Embarked_S și Embarked_C, care sunt umplute cu 0 sau 1, indiferent dacă persoana s-a îmbarcat din acel port sau nu.

Celălalt exemplu este SibSp și Parch. Poate că nu există nimic interesant în ambele coloane, dar s-ar putea să doriți să știți cât de mare era familia pasagerului care s-a urcat în navă. Ați putea presupune că, dacă familia ar fi mai mare, atunci șansa de supraviețuire ar crește, deoarece ar putea să se ajute reciproc. Pe de altă parte, oamenii solo ar fi avut greu.

Deci vrei creați o altă coloană numită dimensiunea familiei, care constă din sibsp + perch + 1 (pasagerul însuși).

Ultimul exemplu se numește coloane bin. Este o tehnică care creează game de valori pentru a grupa mai multe lucruri, deoarece presupuneți că este greu să diferențiați lucrurile cu o valoare similară. De exemplu, Age. Pentru o persoană în vârstă de 5 și 6 ani, există vreo diferență semnificativă? sau pentru persoanele cu vârsta de 45 și 46 de ani, există vreo diferență mare?

De aceea creăm coloane bin. Poate pentru vârstă, vom crea 4 coșuri. Copii (0-14 ani), adolescent (14-20), adulți (20-40) și vârstnici (40+)

Să le codificăm:

all_data = train_df
for dataset in all_data :    dataset['FamilySize'] = dataset['SibSp'] + dataset['Parch'] + 1
import re# Define function to extract titles from passenger namesdef get_title(name):    title_search = re.search(' ([A-Za-z]+).', name)    # If the title exists, extract and return it.    if title_search:        return title_search.group(1)    return ""# Create a new feature Title, containing the titles of passenger namesfor dataset in all_data:    dataset['Title'] = dataset['Name'].apply(get_title)# Group all non-common titles into one single grouping "Rare"for dataset in all_data:    dataset['Title'] = dataset['Title'].replace(['Lady', 'Countess','Capt', 'Col','Don',                                                  'Dr', 'Major', 'Rev', 'Sir', 'Jonkheer', 'Dona'], 'Rare')
dataset['Title'] = dataset['Title'].replace('Mlle', 'Miss')    dataset['Title'] = dataset['Title'].replace('Ms', 'Miss')    dataset['Title'] = dataset['Title'].replace('Mme', 'Mrs')
for dataset in all_data:    dataset['Age_bin'] = pd.cut(dataset['Age'], bins=[0,14,20,40,120], labels=['Children','Teenage','Adult','Elder'])
for dataset in all_data:    dataset['Fare_bin'] = pd.cut(dataset['Fare'], bins=[0,7.91,14.45,31,120], labels ['Low_fare','median_fare', 'Average_fare','high_fare'])                                                                                traindf=train_dffor dataset in traindf:    drop_column = ['Age','Fare','Name','Ticket']    dataset.drop(drop_column, axis=1, inplace = True)
drop_column = ['PassengerId']traindf.drop(drop_column, axis=1, inplace = True)traindf = pd.get_dummies(traindf, columns = ["Sex","Title","Age_bin","Embarked","Fare_bin"],                             prefix=["Sex","Title","Age_type","Em_type","Fare_type"])

Acum, ați terminat toate caracteristicile. Să aruncăm o privire asupra corelației pentru fiecare caracteristică:

sns.heatmap(traindf.corr(),annot=True,cmap='RdYlGn',linewidths=0.2) #data.corr()-->correlation matrixfig=plt.gcf()fig.set_size_inches(20,12)plt.show()
1611650230 159 Cum sa incepeti cu Machine Learning in aproximativ 10 minute

Corelațiile cu valoarea 1 înseamnă foarte corelate pozitiv, -1 înseamnă foarte corelate negativ. De exemplu, sexul masculin și sexul feminin se vor corela negativ, deoarece pasagerii au trebuit să se identifice ca unul sau celălalt sex. În afară de asta, puteți vedea că nimic nu are legătură cu nimic deosebit, cu excepția celor create prin ingineria caracteristicilor. Asta înseamnă că suntem buni să plecăm.

Ce se va întâmpla dacă ceva se corelează puternic cu altceva? Putem elimina una dintre ele, deoarece adăugarea altor informații printr-o nouă coloană nu va oferi sistemului informații noi, deoarece ambele sunt exact aceleași.

Învățare automată cu Python

Acum am ajuns la vârful tutorialului: modelarea Machine Learning.

from sklearn.model_selection import train_test_split #for split the datafrom sklearn.metrics import accuracy_score  #for accuracy_scorefrom sklearn.model_selection import KFold #for K-fold cross validationfrom sklearn.model_selection import cross_val_score #score evaluationfrom sklearn.model_selection import cross_val_predict #predictionfrom sklearn.metrics import confusion_matrix #for confusion matrixall_features = traindf.drop("Survived",axis=1)Targeted_feature = traindf["Survived"]X_train,X_test,y_train,y_test = train_test_split(all_features,Targeted_feature,test_size=0.3,random_state=42)X_train.shape,X_test.shape,y_train.shape,y_test.shape

Puteți alege mulți algoritmi incluși în biblioteca scikit-learn.

  1. Regresie logistică
  2. Pădure aleatorie
  3. SVM
  4. K Cel mai apropiat vecin
  5. Naive Bayes
  6. Arbori de decizie
  7. AdaBoost
  8. LDA
  9. Amplificarea gradientului

S-ar putea să fiți copleșiți încercând să vă dați seama ce este ce. Nu vă faceți griji, tratați doar ca o cutie neagră: alegeți una cu cea mai bună performanță. (Voi crea un articol întreg despre acești algoritmi mai târziu.)

Să încercăm cu cel meu preferat: Algoritmul forestier aleatoriu

from sklearn.ensemble import RandomForestClassifiermodel = RandomForestClassifier(criterion='gini', n_estimators=700,                             min_samples_split=10,min_samples_leaf=1,                             max_features="auto",oob_score=True,                             random_state=1,n_jobs=-1)model.fit(X_train,y_train)prediction_rm=model.predict(X_test)print('--------------The Accuracy of the model----------------------------')print('The accuracy of the Random Forest Classifier is', round(accuracy_score(prediction_rm,y_test)*100,2))kfold = KFold(n_splits=10, random_state=22) # k=10, split the data into 10 equal partsresult_rm=cross_val_score(model,all_features,Targeted_feature,cv=10,scoring='accuracy')print('The cross validated score for Random Forest Classifier is:',round(result_rm.mean()*100,2))y_pred = cross_val_predict(model,all_features,Targeted_feature,cv=10)sns.heatmap(confusion_matrix(Targeted_feature,y_pred),annot=True,fmt="3.0f",cmap="summer")plt.title('Confusion_matrix', y=1.05, size=15)
1611650231 492 Cum sa incepeti cu Machine Learning in aproximativ 10 minute

Wow! Ne oferă o precizie de 83%. Este destul de bun pentru prima dată.

Scorul validat încrucișat înseamnă o metodă de validare K Fold. Dacă K = 10, înseamnă că împărțiți datele în 10 variante și calculați media tuturor scorurilor ca scor final.

Reglaj fin

Acum ați terminat cu pașii din Machine Learning cu Python. Dar există încă un pas care vă poate aduce rezultate mai bune: reglarea fină. Reglarea fină înseamnă găsirea celui mai bun parametru pentru algoritmii de învățare automată. Dacă vedeți codul pentru pădurea aleatorie de mai sus:

model = RandomForestClassifier(criterion='gini', n_estimators=700,                             min_samples_split=10,min_samples_leaf=1,                             max_features="auto",oob_score=True,                             random_state=1,n_jobs=-1)

Există mulți parametri pe care trebuie să îi setați. Apropo, acestea sunt valorile implicite. Și puteți modifica parametrii oricum doriți. Dar, desigur, va dura mult timp.

Nu vă faceți griji – există un instrument numit Căutare grilă, care găsește automat parametrii optimi. Sună grozav, nu?

# Random Forest Classifier Parameters tunning model = RandomForestClassifier()n_estim=range(100,1000,100)
## Search grid for optimal parametersparam_grid = {"n_estimators" :n_estim}
model_rf = GridSearchCV(model,param_grid = param_grid, cv=5, scoring="accuracy", n_jobs= 4, verbose = 1)
model_rf.fit(train_X,train_Y)
# Best scoreprint(model_rf.best_score_)
#best estimatormodel_rf.best_estimator_

Ei bine, o puteți încerca singură. Și distrează-te cu Machine Learning.

Concluzie

Cum a fost? Nu pare foarte dificil, nu? Învățarea automată cu Python este ușoară. Totul a fost amenajat pentru tine. Poți doar să faci magia. Și aduce fericirea oamenilor.

Această piesă a fost lansată inițial pe blogul meu la thedatamage.com