Example #1
0
X_test = pca.transform(X_test)

# este vector contiene el porcentaje de varianza explicada por cada uno de los "principal components"
explained_variance = pca.explained_variance_ratio_
# en este caso, con los primeros dos principal components es suficiente para la clasificacion que queremos hacer
# por lo tanto, esos pasaran a ser nuestras variables independientes

# creando y entrenando el modelo
from sklearn.linear_model import LogisticRegression

classifier = LogisticRegression(random_state=0)
classifier.fit(X_train, y_train)

y_pred = classifier.predict(X_test)

# confusion matrix
from sklearn.metrics import confusion_matrix

cm = confusion_matrix(
    y_test, y_pred)  # aproximadamente 97% de precision en el test set

# grafica de la clasificacion (regiones de prediccion)
# al ser un modelo de clasificacion lineal, el limite de prediccion es una linea recta
from utils import plot_classification

plot_classification(X_train, y_train, classifier,
                    'Logistic Regression with PCA (Training Set)', 'PC1',
                    'PC2')

plot_classification(X_test, y_test, classifier,
                    'Logistic Regression with PCA (Test Set)', 'PC1', 'PC2')
Example #2
0
''' Example of semi-boost implementation '''

import os
# Set working directory to file directory
os.chdir('/data/home/joliver/github/semi_boost/src')

import sys
import importlib
import SemiBoost
import utils
import importlib

importlib.reload(SemiBoost)
importlib.reload(utils)

utils.plot_classification(data_simulation='make_circles', ratio_unsampled=0.9)

utils.plot_classification(data_simulation='make_moons', ratio_unsampled=0.9)

utils.plot_classification(data_simulation='make_blobs', ratio_unsampled=0.9)

utils.plot_classification(data_simulation='make_classification',
                          ratio_unsampled=0.9)

utils.plot_classification(data_simulation='make_gaussian_quantiles',
                          ratio_unsampled=0.9)

utils.mejora_semiboost(n_features=10,
                       ratio_unsampled=0.50,
                       n_samples=1000,
                       data_simulation='make_gaussian_quantiles')
Example #3
0
# creando y entrenando el modelo
from sklearn.tree import DecisionTreeClassifier

# Maxima profundidad del arbol limitada a 3 para evitar overfitting
classifier = DecisionTreeClassifier(criterion='entropy',
                                    random_state=0,
                                    max_depth=3)
classifier.fit(X_train, y_train)

y_pred = classifier.predict(X_test)

# confusion matrix
from sklearn.metrics import confusion_matrix

cm = confusion_matrix(y_test, y_pred)
# (0;0) predicciones de la clase 0 correctas
# (1;0) predicciones de la clase 0 incorrectas (eran de la clase 1)
# (0;1) predicciones de la clase 1 incorrectas (eran de la clase 0)
# (1;1) predicciones de la clase 1 correctas

# grafica de la clasificacion (regiones de prediccion)
from utils import plot_classification

plot_classification(X_train, y_train, classifier,
                    'Decision Tree Classification (Training Set)', 'Age',
                    'Estimated Salary')

plot_classification(X_test, y_test, classifier,
                    'Decision Tree Classification (Test Set)', 'Age',
                    'Estimated Salary')
from sklearn.preprocessing import StandardScaler
sc_X = StandardScaler()
X_train = sc_X.fit_transform(X_train)

# aca no hace falta el fit, porque ya se le hizo el fit a X antes
X_test = sc_X.transform(X_test)

# creando y entrenando el modelo
from sklearn.linear_model import LogisticRegression

classifier = LogisticRegression(random_state=0)
classifier.fit(X_train, y_train)

y_pred = classifier.predict(X_test)

# confusion matrix
from sklearn.metrics import confusion_matrix

cm = confusion_matrix(y_test, y_pred)
# (0;0) predicciones de la clase 0 correctas
# (1;0) predicciones de la clase 0 incorrectas (eran de la clase 1)
# (0;1) predicciones de la clase 1 incorrectas (eran de la clase 0)
# (1;1) predicciones de la clase 1 correctas

# grafica de la clasificacion (regiones de prediccion)
# al ser un modelo de clasificacion lineal, el limite de prediccion es una linea recta
from utils import plot_classification

plot_classification(X_train, y_train, classifier, 'Logistic Regression (Training Set)', 'Age', 'Estimated Salary')

plot_classification(X_test, y_test, classifier, 'Logistic Regression (Test Set)', 'Age', 'Estimated Salary')
    'kernel': ['linear']
}, {
    'C': [1, 10, 100, 1000],
    'kernel': ['rbf'],
    'gamma': [0.5, 0.1, 0.01, 0.001]
}]

# scoring = metrica en funcion de la cual se elegira el mejor modelo
# cv = cantidad de folds, ya que para el calculo de la metrica de scoring, grid search usa k-fold cross validation
# n_jobs = nucleos del procesador a usar
grid_search = GridSearchCV(estimator=classifier,
                           param_grid=parameters,
                           scoring='accuracy',
                           cv=10,
                           n_jobs=-1)
grid_search = grid_search.fit(X_train, y_train)

best_accuracy = grid_search.best_score_
best_parameters = grid_search.best_params_

# grafica de la clasificacion (regiones de prediccion)
# al estar usando el "rbf" kernel (Gaussian) que es no lineal, el limite de prediccion no es una linea recta
from utils import plot_classification

plot_classification(X_train, y_train, classifier,
                    'SVM Gaussian Kernel (Training Set)', 'Age',
                    'Estimated Salary')

plot_classification(X_test, y_test, classifier,
                    'SVM Gaussian Kernel (Test Set)', 'Age',
                    'Estimated Salary')
Example #6
0
# aca no hace falta el fit, porque ya se le hizo el fit a X antes
X_test = sc_X.transform(X_test)

# creando y entrenando el modelo
from sklearn.neighbors import KNeighborsClassifier

classifier = KNeighborsClassifier(n_neighbors=5, metric='minkowski', p=2)
classifier.fit(X_train, y_train)

y_pred = classifier.predict(X_test)

# confusion matrix
from sklearn.metrics import confusion_matrix

cm = confusion_matrix(y_test, y_pred)
# (0;0) predicciones de la clase 0 correctas
# (1;0) predicciones de la clase 0 incorrectas (eran de la clase 1)
# (0;1) predicciones de la clase 1 incorrectas (eran de la clase 0)
# (1;1) predicciones de la clase 1 correctas

# grafica de la clasificacion (regiones de prediccion)
# al ser un modelo de clasificacion NO lineal, el limite de prediccion no es una linea recta
from utils import plot_classification

plot_classification(X_train, y_train, classifier, 'K-NN (Training Set)', 'Age',
                    'Estimated Salary')

plot_classification(X_test, y_test, classifier, 'K-NN (Test Set)', 'Age',
                    'Estimated Salary')