#!/usr/bin/env python # coding: utf-8 # In[ ]: #Importacion de las librerias import numpy as np import pandas as pd # In[ ]: from google.colab import drive import os drive.mount('/content/gdrive') # Establecer ruta de acceso en dr import os print(os.getcwd()) os.chdir("/content/gdrive/My Drive") # In[ ]: #Importacion del conjunto de datos names = ['sepal-length', 'sepal-width', 'petal-length', 'petal-width', 'Class'] dataset = pd.read_csv("iris.data", names=names) # In[ ]: #Veamos el dataset dataset.head() # In[ ]: #Preprocesamiento X = dataset.drop('Class', 1) y = dataset['Class'] # In[ ]: #Separamos en train y test from sklearn.model_selection import train_test_split X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42) # In[ ]: #Normalizamos los datos para que PCA funcione mejor! from sklearn.preprocessing import StandardScaler sc = StandardScaler() X_train = sc.fit_transform(X_train) X_test = sc.transform(X_test) # In[ ]: #Aplicacion de PCA from sklearn.decomposition import PCA pca = PCA() X_train = pca.fit_transform(X_train) X_test = pca.transform(X_test) # In[ ]: #Análisis de la varianza explicada para cada componente explained_variance = pca.explained_variance_ratio_ explained_variance # **Insights**: # # El primer componente principal es responsable de la varianza del 72,22%. De manera similar, el segundo componente principal causa una variación del 23,9% en el conjunto de datos. En conjunto, podemos decir que (72,22 + 23,9) el 96,21% por ciento de la información de clasificación contenida en el conjunto de características es capturada por los dos primeros componentes principales. # Para finalizar, usemos una sola componente para entrenar un modelo de Random Forest y evaluar qué tan bien funciona! # In[ ]: from sklearn.decomposition import PCA pca = PCA(n_components=1) X_train = pca.fit_transform(X_train) X_test = pca.transform(X_test) # In[ ]: from sklearn.ensemble import RandomForestClassifier # Creación del modelo model_rf = RandomForestClassifier(max_depth=2, random_state=0) model_rf.fit(X_train, y_train) # Predicción y_pred = model_rf.predict(X_test) # In[ ]: #Evaluación básica del modelo from sklearn.metrics import confusion_matrix from sklearn.metrics import accuracy_score accuracy = accuracy_score(y_test, y_pred) print('El accuracy del modelo es:', accuracy) # **Insights**: Únicamente utilizando una componente tenemos un accuracy muy bueno para nuestro modelo 😉 # # Created in deepnote.com # Created in Deepnote