Buscar..


Uso de máquinas de vectores de soporte

Las máquinas de vectores de soporte son una familia de algoritmos que intentan pasar un hiperplano (posiblemente de alta dimensión) entre dos conjuntos de puntos etiquetados, de modo que la distancia de los puntos desde el plano sea óptima en algún sentido. Las SVM se pueden usar para clasificación o regresión (correspondientes a sklearn.svm.SVC y sklearn.svm.SVR , respectivamente).

Ejemplo:

Supongamos que trabajamos en un espacio 2D. Primero, creamos algunos datos:

import numpy as np

Ahora creamos x y y :

x0, x1 = np.random.randn(10, 2), np.random.randn(10, 2) + (1, 1)
x = np.vstack((x0, x1))

y = [0] * 10 + [1] * 10

Tenga en cuenta que x se compone de dos gaussianos: uno centrado alrededor (0, 0) y otro centrado alrededor (1, 1) .

Para construir un clasificador, podemos utilizar:

from sklearn import svm

svm.SVC(kernel='linear').fit(x, y)

Veamos la predicción para (0, 0) :

>>> svm.SVC(kernel='linear').fit(x, y).predict([[0, 0]])
array([0])

La predicción es que la clase es 0.

Para la regresión, igualmente podemos hacer:

svm.SVR(kernel='linear').fit(x, y)

RandomForestClassifier

Un bosque aleatorio es un meta estimador que se ajusta a una serie de clasificadores de árboles de decisión en varias submuestras del conjunto de datos y utiliza el promedio para mejorar la precisión predictiva y el ajuste excesivo del control.

Un ejemplo de uso simple:

Importar:

from sklearn.ensemble import RandomForestClassifier

Definir los datos del tren y los datos de destino:

train = [[1,2,3],[2,5,1],[2,1,7]]
target = [0,1,0]

Los valores en target representan la etiqueta que desea predecir.

Inicie un objeto RandomForest y realice el aprendizaje (ajuste):

rf = RandomForestClassifier(n_estimators=100)
rf.fit(train, target)

Predecir:

test = [2,2,3]
predicted = rf.predict(test)

Análisis de informes de clasificación

Cree un informe de texto que muestre las principales métricas de clasificación, incluidas la precisión y la recuperación , la puntuación f1 (la media armónica de la precisión y la recuperación) y el soporte (el número de observaciones de esa clase en el conjunto de entrenamiento).

Ejemplo de documentos de sklearn :

from sklearn.metrics import classification_report
y_true = [0, 1, 2, 2, 2]
y_pred = [0, 0, 2, 2, 1]
target_names = ['class 0', 'class 1', 'class 2']
print(classification_report(y_true, y_pred, target_names=target_names))

Salida -

         precision    recall  f1-score   support

class 0       0.50      1.00      0.67         1
class 1       0.00      0.00      0.00         1
class 2       1.00      0.67      0.80         3

avg / total   0.70      0.60      0.61         5

GradientBoostingClassifier

Gradient Boosting para la clasificación. El clasificador de aumento de gradiente es un conjunto aditivo de un modelo base cuyo error se corrige en iteraciones (o etapas) sucesivas mediante la adición de árboles de regresión que corrigen los residuos (el error de la etapa anterior).

Importar:

from sklearn.ensemble import GradientBoostingClassifier

Crear algunos datos de clasificación de juguetes

from sklearn.datasets import load_iris

iris_dataset = load_iris()

X, y = iris_dataset.data, iris_dataset.target

Vamos a dividir estos datos en conjunto de entrenamiento y pruebas.

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=0)

Cree una instancia de un modelo GradientBoostingClassifier utilizando los parámetros predeterminados.

gbc = GradientBoostingClassifier()
gbc.fit(X_train, y_train)

Vamos a anotarlo en el conjunto de prueba

# We are using the default classification accuracy score
>>> gbc.score(X_test, y_test)
1

Por defecto hay 100 estimadores construidos.

>>> gbc.n_estimators
100

Esto se puede controlar estableciendo n_estimators en un valor diferente durante el tiempo de inicialización.

Un árbol de decisión

Un árbol de decisión es un clasificador que usa una secuencia de reglas detalladas (como a> 7) que se pueden entender fácilmente.

El siguiente ejemplo entrena a un clasificador de árbol de decisión usando tres vectores de características de longitud 3, y luego predice el resultado para un cuarto vector de características hasta ahora desconocido, el llamado vector de prueba.

from sklearn.tree import DecisionTreeClassifier

# Define training and target set for the classifier
train = [[1,2,3],[2,5,1],[2,1,7]]
target = [10,20,30]

# Initialize Classifier. 
# Random values are initialized with always the same random seed of value 0 
# (allows reproducible results)
dectree = DecisionTreeClassifier(random_state=0)
dectree.fit(train, target)

# Test classifier with other, unknown feature vector
test = [2,2,3]
predicted = dectree.predict(test)

print predicted

La salida se puede visualizar usando:

import pydot
import StringIO

dotfile = StringIO.StringIO()
tree.export_graphviz(dectree, out_file=dotfile)
(graph,)=pydot.graph_from_dot_data(dotfile.getvalue())
graph.write_png("dtree.png")
graph.write_pdf("dtree.pdf")

Clasificación mediante regresión logística

En el clasificador LR, las probabilidades que describen los posibles resultados de un solo ensayo se modelan utilizando una función logística. Se implementa en la librería linear_model

from sklearn.linear_model import LogisticRegression

La implementación de Sklearn LR puede ajustarse a regresión logística binaria, One-vs-Rest o multinomial con la regularización opcional de L2 o L1. Por ejemplo, consideremos una clasificación binaria en un conjunto de datos de sklearn de muestra

from sklearn.datasets import make_hastie_10_2

X,y = make_hastie_10_2(n_samples=1000)

Donde X es una matriz de n_samples X 10 y y son las etiquetas de destino -1 o +1.

Utilice la división de prueba de tren para dividir los datos de entrada en conjuntos de prueba y entrenamiento (70% -30%)

from sklearn.model_selection import train_test_split 
#sklearn.cross_validation in older scikit versions

data_train, data_test, labels_train, labels_test = train_test_split(X,y, test_size=0.3)

Usar el clasificador LR es similar a otros ejemplos

# Initialize Classifier. 
LRC = LogisticRegression()
LRC.fit(data_train, labels_train)

# Test classifier with the test data
predicted = LRC.predict(data_test)

Usa la matriz de confusión para visualizar resultados.

from sklearn.metrics import confusion_matrix

confusion_matrix(predicted, labels_test)


Modified text is an extract of the original Stack Overflow Documentation
Licenciado bajo CC BY-SA 3.0
No afiliado a Stack Overflow