Práctico 0: Introducción a Scikit-Learn

Scikit-Learn (sklearn para los amigos) es una librería creada por David Cournapeau, como un Google Summer Code Project y luego Matthieu Brucher en su tesis.calidad si sigue los estándares implementados por Scikit-Learn.Scikit-Learn debe poseer 3 años desde su publicación y 200+ citaciones mostrando su utilidad y amplio uso (ver acá).Scikit-Learn sigue un patrón de Programación Orientada a Objetos (POO) basado en clases.Scikit-Learn sigue el siguiente estándar:
CamelCase: Ej: KMeans,LogisticRegression, StandardScaler.Estimators.Transformers.snake_case y permiten realizar algunas operaciones básicas en el proceso de modelamiento. Ej: train_test_split(), cross_val_score().Matrices o DataFrames, mientras que las letras minúsculas denotan Vectores o Series.from sklearn.sub_modulo import Estimator
model = Estimator(hp1=v1, hp2=v2,...)
model.fit(X)
y_pred = model.predict(X)
## Opcionalmente se puede entrenar y predecir a la vez.
model.fit_predict(X) L1. Importar la clase a utilizar.
L2. Instanciar el modelo y sus hiperparámetros.
L3. Entrenar o ajustar el modelo (Requiere sólo de X).
L5. Predecir. Los modelos de clasificación tienen la capacidad de generar probabilidades.
L7-8. Este tipo de modelos permite entrenar y predecir en un sólo paso.
from sklearn.sub_modulo import Estimator
model = Estimator(hp1=v1, hp2=v2,...)
model.fit(X_train, y_train)
y_pred = model.predict(X_test)
y_pred_proba = model.predict_proba(X_test)
model.score(X_test,y_test) L1. Importar la clase a utilizar.
L2. Instanciar el modelo y sus hiperparámetros.
L3. Entrenar o ajustar el modelo (Ojo, requiere de X e y).
L5–6. Predecir en datos nuevos. (Algunos modelos pueden predecir probabilidades).
L8. Evaluar el modelo en los datos nuevos.
.fit())Muchos modelos pueden entregar información sólo luego de ser entrenados (su atributo termina con un _).
Ej: model.coef_, model.intercept_.
El modelo es una herramienta a la cual le entregamos datos (Input), y nos devuelve datos (Predicciones).
Estimators, los Transformers no son modelos.Transformers permiten escalar los datos, transformar categorías en números, rellenar valores faltantes. (Veremos más acerca de esto en los Preprocesamiento).from sklearn.preprocessing import Transformer
tr = Transformer(hp1=v1, hp2=v2,...)
tr.fit(X)
X_new = tr.transform(X)
## Opcionalmente
X_new = tr.fit_transform(X) L1. Importar la clase a utilizar (en este caso del submodulo preprocessing, aunque pueden haber otros como impute).
L2. Instanciar el Transformer y sus hiperparámetros.
L3. Entrenar o ajustar el Transformer.
L5. Transformar los datos.
L7-8. Adicionalmente se puede entrenar y transformar los datos en un sólo paso.
Transformers o Transformers + un Estimator.Un Pipeline puede tener sólo un Estimator.
from sklearn.tree import DecisionTreeClassifier
from sklearn.preprocessing import StandardScaler, OneHotEncoder
from sklearn.pipeline import Pipeline
pipe = Pipeline(steps=[
("ohe", OneHotEncoder()),
("sc", StandardScaler()),
("model", DecisionTreeClassifier())
])
pipe.fit(X_train, y_train)
y_pred = pipe.predict(X_test)
pipe.score(X_test, y_test) L1-2. Importo mi modelo y mis preprocesamientos
L3. Importo el Pipeline.
L5-9. Instancio un Pipeline.
L11. Entreno el Pipeline.
L12. Predigo utilizando el Pipeline entrenado.
L14. Evalúo el modelo en datos no vistos.
Probablemente
Scikit-Learntenga una de las mejores documentaciones existentes.
