Tarea Machine Learning Ejercicio 2
Enviado por Alvaro Lopez Benito • 4 de Noviembre de 2023 • Tarea • 3.595 Palabras (15 Páginas) • 47 Visitas
Lista 2 de Ejercicios
Objetivo:
Este ejercicio pretende aumentar la destreza del estudiante para dibujar
gráficos descriptivos comunes, testear múltiples modelos de
clasificación de forma rápida y poner en práctica transformadores
habituales de la librería sklearn.
Tarea del estudiante:
Lee detenidamente las siguientes instrucciones y borra raise NotImplementedError en todas las celdas
En cada trozo de código debes responder a la pregunta formulada,
asegurándote de que el resultado queda guardado en la(s) variable(s)
indicadas, que por defecto vienen inicializadas a None. Puedes usar
variables intermedias siempre que el resultado final del cálculo quede
guardado exactamente en la variable que indica el enunciado (debes
reemplazar None el código necesario, pero nunca cambiar el nombre de las
variables ya creadas).
Después de cada ejercicio verás varias líneas de código ya hechas.
Ejecútalas todas (no modifiques su código) y te dirán si tu solución es
correcta o no, sin darte pistas de cómo se resuelve (el código de los
tests no guarda relación con el código de la solución). Si la solución
es correcta, no se mostrará nada, pero si es incorrecta, verás un error
indicando cuál es el test que tu solución no pasa. Además de esas
pruebas, se realizarán algunas más (ocultas) a la hora de puntuar el
ejercicio, pero si tu código pasa con éxito las líneas que ves, puedes
estar bastante seguro de que tu solución es correcta. Asegúrate de que
todas las celdas de auto-evaluación indican que tu solución es correcta
antes de subir el ejercicio a la plataforma. En caso contrario, no dudes
en preguntar las dudas a través del foro -siempre explicando la duda en
palabras, sin pegar código fuente-.
Una vez finalizada la actividad, guarda tu fichero, ciérralo con File ->
Close and Halt, y después vuélvelo a abrir y ejecútalo completo
pinchando en Cell -> Run All Cells, y asegúrate de que no se lanza
ningún error. De esta manera comprobarás que no has olvidado nada y que
es posible ejecutarlo completo desde 0 y sin errores. No se corregirá
ningún fichero que tenga errores de sintaxis y no se pueda, como mínimo,
ejecutar completamente. No pasa nada si alguna de las comprobaciones
lanza errores por ser incorrecta, pero el código de cada ejercicio no
puede tener errores de sintaxis y debe al menos poderse ejecutar.
RECUERDA SUBIR CADA UNO DE LOS FICHEROS .ipynb TAL CUAL (sueltos), SIN
COMPRIMIR Y SIN CAMBIARLES EL NOMBRE. Los ficheros subidos deben tener
exactamente el mismo nombre de fichero que tenían cuando los recibiste.
No subas ningún PDF ni ningún fichero ZIP ni nada similar. La plataforma
ya los separa automáticamente en carpetas que traen el nombre y
apellidos del alumno, por lo que NO es necesario que lo pongas en
ninguna parte.
Parte 0: Inicialización
En esta parte, simplemente cargamos las librerías que vamos a utilizar y
establecemos una semilla para controlar la reproducibilidad del
ejercicio.
""" Librerías """
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns
import warnings
sns.set_style('darkgrid')
np.set_printoptions(precision=2)
warnings.filterwarnings("ignore")
import sklearn
from sklearn.preprocessing import MinMaxScaler, StandardScaler, Normalizer, Binarizer, RobustScaler
from sklearn.compose import ColumnTransformer
from sklearn.preprocessing import OneHotEncoder, LabelEncoder, PowerTransformer
from sklearn.impute import SimpleImputer, KNNImputer
from sklearn.feature_selection import SelectKBest, chi2, RFE
from sklearn.model_selection import train_test_split
from sklearn.pipeline import make_pipeline, Pipeline
from sklearn.decomposition import PCA
from sklearn.linear_model import LogisticRegression
from sklearn.tree import DecisionTreeClassifier
from sklearn.neighbors import KNeighborsClassifier
from sklearn.discriminant_analysis import LinearDiscriminantAnalysis
from sklearn.naive_bayes import GaussianNB
from sklearn.ensemble import RandomForestClassifier, ExtraTreesClassifier
from sklearn.svm import SVC
from sklearn.metrics import accuracy_score, confusion_matrix, classification_report, f1_score
from sklearn.model_selection import KFold, ShuffleSplit, LeaveOneOut, StratifiedKFold
from sklearn.model_selection import cross_val_score, cross_val_predict
from sklearn.model_selection import GridSearchCV, RandomizedSearchCV
""" Semilla """
seed = 99
Parte 1: Lectura y transformación de datos
En esta parte, principalmente, cargaremos los datos de un repositorio
git y realizaremos una breve limpieza de los datos para conseguir un
dataframe listo.
df = pd.read_csv('https://raw.githubusercontent.com/eduardofc/data/main/kddcup99.csv')
print(f'Número de filas: {df.shape[0]}, Número de columnas:{df.shape[1]}')
df.head()
Número de filas: 561, Número de columnas:10
duration protocol_type service flag count srv_count serror_rate \
0 0 b'tcp' b'http' b'SF' 0 0 0.0
1 0 b'tcp' b'http' b'SF' 0 0 0.0
2 0 b'tcp' b'http' b'SF' 0 1 0.0
3 0 b'tcp' b'http' b'SF' 0 0 1.0
4 0 b'tcp' b'http' b'SF' 0 0 0.0
dst_host_srv_count dst_host_srv_serror_rate labels
0 0 0.0 b'normal.'
1 1 0.0 b'normal.'
2 1 0.0 b'normal.'
...