U vostru primu passu in Data Science. Titanic

Una breve parola introduttiva

Credu chì pudemu fà più cose s'ellu ci hè statu furnitu cù struzzioni passu per passu chì ci dicenu ciò chì fà è cumu fà. Mi ricordu di i mumenti in a mo vita quandu ùn pudia micca principià qualcosa perchè era simplicemente difficiule di capisce da induve principià. Forsi, una volta nantu à Internet avete vistu e parolle "Data Science" è hà decisu chì erate luntanu da questu, è e persone chì facenu questu era in un locu fora, in un altru mondu. Innò, sò quì. E, forsi, grazia à e persone di questu campu, un articulu apparsu nantu à u vostru feed. Ci sò assai corsi chì vi aiuterà à abituà à stu craft, ma quì vi aiuteraghju à fà u primu passu.

Ebbè, sì pronta ? Lasciami dì subitu chì avete bisognu di cunnosce Python 3, postu chì hè ciò chì aghju da aduprà quì. Vi cunsigliu ancu di installallu in Jupyter Notebook in anticipu o vede cumu utilizà google colab.

Step One

U vostru primu passu in Data Science. Titanic

Kaggle hè u vostru assistente significativu in questa materia. In principiu, pudete fà senza, ma parleraghju di questu in un altru articulu. Questa hè una piattaforma chì ospita cuncorsi di Data Science. In ogni tali cumpetizione, in i primi fasi, guadagnerete una quantità irrealisticu di spirienza in risolviri prublemi di varii tipi, sperienza di sviluppu è sperienza di travaglià in una squadra, chì hè impurtante in u nostru tempu.

Piglieremu u nostru compitu da quì. Hè chjamatu "Titanic". A cundizione hè questu: predichendu s'ellu ogni individuu sopravvive. In generale, u compitu di una persona implicata in DS hè di cullà e dati, di trasfurmà, di furmazione di un mudellu, di previsione, etc. In kaggle, avemu permessu di saltà a tappa di cullizzioni di dati - sò presentati nantu à a piattaforma. Avemu bisognu di scaricà è pudemu avè principiatu!

Pudete fà cusì cusì:

a tabulazione Dati cuntene i schedari chì cuntenenu dati

U vostru primu passu in Data Science. Titanic

U vostru primu passu in Data Science. Titanic

Avemu scaricatu i dati, preparatu i nostri quaderni Jupyter è ...

U Passu

Cumu caricamu issa dati?

Prima, importamu e librerie necessarie:

import pandas as pd
import numpy as np

Pandas ci permetterà di scaricà i fugliali .csv per più trasfurmazioni.

Numpy hè necessariu per rapprisintà a nostra tabella di dati cum'è una matrice cù numeri.
Avanti. Pigliemu u schedariu train.csv è carichemu à noi:

dataset = pd.read_csv('train.csv')

Avemu da riferite à a nostra selezzione di dati train.csv attraversu a variabile di dataset. Videmu ciò chì ci hè:

dataset.head()

U vostru primu passu in Data Science. Titanic

A funzione head() ci permette di guardà e prime fila di un dataframe.

I culonni Survived sò precisamente i nostri risultati, chì sò cunnisciuti in questu dataframe. Per a quistione di u compitu, avemu bisognu di predichendu a colonna Survived for test.csv data. Questa data guarda infurmazione nantu à l'altri passageri di u Titanic, per quale noi, risolve u prublema, ùn cunnosci micca u risultatu.

Allora, dividemu a nostra tavula in dati dipendenti è indipindenti. Tuttu hè simplice quì. I dati dipendente sò quelli dati chì dependenu di e dati indipendenti chì sò in i risultati. I dati indipendenti sò quelli dati chì influenzanu u risultatu.

Per esempiu, avemu i seguenti data set:

"Vova hà amparatu l'informatica - no.
Vova hà ricevutu un 2 in informatica.

U gradu in l'informatica dipende da a risposta à a quistione: Vova hà studiatu l'informatica? Hè chjaru? Andemu avanti, simu digià più vicinu à u scopu !

A variabile tradiziunale per i dati indipindenti hè X. Per i dati dipendenti, y.

Facemu i seguenti:

X = dataset.iloc[ : , 2 : ]
y = dataset.iloc[ : , 1 : 2 ]

Chì ghjè ? Cù a funzione iloc[:, 2: ] dicemu à Python: Vogliu vede in a variabile X i dati chì partenu da a seconda colonna (inclusive è sempre chì u cuntu principia da zero). In a seconda linea dicemu chì vulemu vede i dati in a prima colonna.

[ a: b, c: d ] hè a custruzzione di ciò chì usemu in parentesi. Se ùn specificate alcuna variabile, seranu salvate cum'è predeterminatu. Questu hè, pudemu specificà [:,: d] è dopu avemu da ottene tutte e culonni in u dataframe, eccettu quelli chì vanu da u numeru d in avanti. I variàbili a è b definiscenu strings, ma avemu bisognu di tutti, cusì lasciamu questu cum'è predeterminatu.

Videmu ciò chì avemu:

X.head()

U vostru primu passu in Data Science. Titanic

y.head()

U vostru primu passu in Data Science. Titanic

Per simplificà sta piccula lezziò, sguassemu e culonne chì necessitanu una cura speciale o ùn anu micca affruntà a sopravvivenza. Contenenu dati di tipu str.

count = ['Name', 'Ticket', 'Cabin', 'Embarked']
X.drop(count, inplace=True, axis=1)

Super! Andemu à u passu prossimu.

Step Three

Quì avemu bisognu di codificà i nostri dati per chì a macchina capisce megliu cumu sta dati afecta u risultatu. Ma ùn avemu micca codificà tuttu, ma solu i dati str chì avemu lasciatu. Colonna "Sessu". Cumu vulemu codificà? Rappresentemu dati nantu à u sessu di una persona cum'è un vettore: 10 - maschile, 01 - femina.

Prima, cunvertemu e nostre tavule in una matrice NumPy:

X = np.array(X)
y = np.array(y)

È avà guardemu:

from sklearn.compose import ColumnTransformer
from sklearn.preprocessing import OneHotEncoder

ct = ColumnTransformer(transformers=[('encoder', OneHotEncoder(), [1])],
                       remainder='passthrough')
X = np.array(ct.fit_transform(X))

A biblioteca sklearn hè una biblioteca cusì fresca chì ci permette di fà u travagliu cumpletu in Data Science. Contene un gran numaru di mudelli interessanti di machine learning è ci permette ancu di fà a preparazione di dati.

OneHotEncoder ci permetterà di codificà u genere di una persona in quella rapprisentazione, cum'è avemu descrittu. Sarà creatu 2 classi : maschile, femina. Se a persona hè un omu, allora 1 serà scrittu in a colonna "maschile", è 0 in a colonna "femmina", rispettivamente.

Dopu à OneHotEncoder() ci hè [1] - questu significa chì vulemu codificà a colonna numeru 1 (cuntendu da zero).

Super. Andemu ancu più luntanu !

Comu regula, questu succede chì certi dati sò lasciati in biancu (vale à dì, NaN - micca un numeru). Per esempiu, ci hè infurmazione nantu à una persona: u so nome, sessu. Ma ùn ci hè micca infurmazione nantu à a so età. In questu casu, applicàremu u metudu seguente: truveremu a media aritmetica nantu à tutte e culonne è, s'ellu manca qualchì dati in a colonna, allora compie u vacu cù a media aritmetica.

from sklearn.impute import SimpleImputer
imputer = SimpleImputer(missing_values=np.nan, strategy='mean')
imputer.fit(X)
X = imputer.transform(X)

Avà, avemu a piglià in contu chì situazioni succede quandu i dati hè assai grande. Certi dati sò in l'intervallu [0: 1], mentri certi pò andà oltre centinaie è millaie. Per eliminà tali scatter è per fà l'urdinatore più precisu in i so calculi, scanneremu e dati è scala. Chì tutti i numeri ùn supere micca trè. Per fà questu, avemu aduprà a funzione StandardScaler.

from sklearn.preprocessing import StandardScaler
sc = StandardScaler()
X[:, 2:] = sc.fit_transform(X[:, 2:])

Avà i nostri dati sò cusì:

U vostru primu passu in Data Science. Titanic

Classe. Semu digià vicinu à u nostru scopu !

Passu quattru

Formemu u nostru primu mudellu ! Da a biblioteca sklearn pudemu truvà un gran numaru di cose interessanti. Aghju appiicatu u mudellu Gradient Boosting Classifier à stu prublema. Usemu A classifier perchè u nostru compitu hè un compitu di classificazione. U prognosi deve esse attribuitu à 1 (survivutu) o 0 (ùn hà micca sopravvivutu).

from sklearn.ensemble import GradientBoostingClassifier
gbc = GradientBoostingClassifier(learning_rate=0.5, max_depth=5, n_estimators=150)
gbc.fit(X, y)

A funzione fit dice à Python: Chì u mudellu cercà e dipendenze trà X è y.

Meno di un secondu è u mudellu hè prestu.

U vostru primu passu in Data Science. Titanic

Cumu applicà? Videmu avà !

Passu cinque. Cunclusioni

Avà avemu bisognu di carricà una tavula cù i nostri dati di teste per quale avemu bisognu di fà una previsione. Cù sta tavula faremu tutte e listesse azzioni chì avemu fattu per X.

X_test = pd.read_csv('test.csv', index_col=0)

count = ['Name', 'Ticket', 'Cabin', 'Embarked']
X_test.drop(count, inplace=True, axis=1)

X_test = np.array(X_test)

from sklearn.compose import ColumnTransformer
from sklearn.preprocessing import OneHotEncoder
ct = ColumnTransformer(transformers=[('encoder', OneHotEncoder(), [1])],
                       remainder='passthrough')
X_test = np.array(ct.fit_transform(X_test))

from sklearn.impute import SimpleImputer
imputer = SimpleImputer(missing_values=np.nan, strategy='mean')
imputer.fit(X_test)
X_test = imputer.transform(X_test)

from sklearn.preprocessing import StandardScaler
sc = StandardScaler()
X_test[:, 2:] = sc.fit_transform(X_test[:, 2:])

Applichemu u nostru mudellu avà!

gbc_predict = gbc.predict(X_test)

Tuttu. Avemu fattu una previsione. Avà deve esse arregistratu in csv è mandatu à u situ.

np.savetxt('my_gbc_predict.csv', gbc_predict, delimiter=",", header = 'Survived')

Pronta. Avemu ricevutu un schedariu chì cuntene predizioni per ogni passageru. Tuttu ciò chì resta hè di cullà queste soluzioni à u situ web è uttene una valutazione di a previsione. Un tali suluzione primitivu dà micca solu 74% di risposti currettu nant'à u publicu, ma dinù qualchi impetu in Data Science. I più curiosi ponu scrive à mè in missaghji privati ​​in ogni mumentu è fà una quistione. Grazie à tutti !

Source: www.habr.com

Add a comment