Buscar..


Un problema de clasificación simple simple (XOR) que usa k el algoritmo del vecino más cercano

Considera que quieres predecir la respuesta correcta para el problema popular de XOR. Sabías lo que es XOR (por ejemplo, [x0 x1] => y). por ejemplo [0 0] => 0, [0 1] => [1] y ...

#Load Sickit learn data
from sklearn.neighbors import KNeighborsClassifier

#X is feature vectors, and y is correct label(To train model)
X = [[0, 0],[0 ,1],[1, 0],[1, 1]]
y = [0,1,1,0]

#Initialize a Kneighbors Classifier with K parameter set to 2
KNC = KNeighborsClassifier(n_neighbors= 2)

#Fit the model(the KNC learn y Given X)
KNC.fit(X, y)

#print the predicted result for [1 1]
print(KNC.predict([[1 1]]))

Clasificación en scikit-learn

1. Árboles de decisión embolsados

El ensacado se realiza mejor con algoritmos que tienen una gran variación. Un ejemplo popular son los árboles de decisión, a menudo construidos sin poda.

En el siguiente ejemplo, vea un ejemplo del uso de BaggingClassifier con el algoritmo de árboles de clasificación y regresión (DecisionTreeClassifier). Se crean un total de 100 árboles.

Conjunto de datos utilizado: conjunto de datos de diabetes de los indios pima

# Bagged Decision Trees for Classification
import pandas
from sklearn import cross_validation
from sklearn.ensemble import BaggingClassifier
from sklearn.tree import DecisionTreeClassifier
url = "https://archive.ics.uci.edu/ml/machine-learning-databases/pima-indians-diabetes/pima-indians-diabetes.data"
names = ['preg', 'plas', 'pres', 'skin', 'test', 'mass', 'pedi', 'age', 'class']
dataframe = pandas.read_csv(url, names=names)
array = dataframe.values
X = array[:,0:8]
Y = array[:,8]
num_folds = 10
num_instances = len(X)
seed = 7
kfold = cross_validation.KFold(n=num_instances, n_folds=num_folds, random_state=seed)
cart = DecisionTreeClassifier()
num_trees = 100
model = BaggingClassifier(base_estimator=cart, n_estimators=num_trees, random_state=seed)
results = cross_validation.cross_val_score(model, X, Y, cv=kfold)
print(results.mean())

Siguiendo el ejemplo, obtenemos una estimación robusta de la precisión del modelo.

0.770745044429

2. Bosque aleatorio

El bosque aleatorio es una extensión de los árboles de decisión embolsados.

Las muestras del conjunto de datos de entrenamiento se toman con reemplazo, pero los árboles se construyen de una manera que reduce la correlación entre los clasificadores individuales. Específicamente, en lugar de elegir con avidez el mejor punto de división en la construcción del árbol, solo se considera un subconjunto aleatorio de características para cada división.

Puede construir un modelo de bosque aleatorio para la clasificación utilizando la clase RandomForestClassifier.

El siguiente ejemplo proporciona un ejemplo de Random Forest para la clasificación con 100 árboles y puntos de división seleccionados de una selección aleatoria de 3 características.

# Random Forest Classification
import pandas
from sklearn import cross_validation
from sklearn.ensemble import RandomForestClassifier
url = "https://archive.ics.uci.edu/ml/machine-learning-databases/pima-indians-diabetes/pima-indians-diabetes.data"
names = ['preg', 'plas', 'pres', 'skin', 'test', 'mass', 'pedi', 'age', 'class']
dataframe = pandas.read_csv(url, names=names)
array = dataframe.values
X = array[:,0:8]
Y = array[:,8]
num_folds = 10
num_instances = len(X)
seed = 7
num_trees = 100
max_features = 3
kfold = cross_validation.KFold(n=num_instances, n_folds=num_folds, random_state=seed)
model = RandomForestClassifier(n_estimators=num_trees, max_features=max_features)
results = cross_validation.cross_val_score(model, X, Y, cv=kfold)
print(results.mean())

Ejecutar el ejemplo proporciona una estimación media de la precisión de la clasificación.

0.770727956254

3. AdaBoost

AdaBoost fue quizás el primer algoritmo conjunto exitoso. Generalmente funciona al ponderar las instancias en el conjunto de datos por lo fácil o difícil que es clasificarlas, lo que permite que el algoritmo les preste más atención a la construcción de modelos posteriores.

Puede construir un modelo de AdaBoost para la clasificación utilizando la clase AdaBoostClassifier.

El siguiente ejemplo muestra la construcción de 30 árboles de decisión en secuencia utilizando el algoritmo AdaBoost.

# AdaBoost Classification
import pandas
from sklearn import cross_validation
from sklearn.ensemble import AdaBoostClassifier
url = "https://archive.ics.uci.edu/ml/machine-learning-databases/pima-indians-diabetes/pima-indians-diabetes.data"
names = ['preg', 'plas', 'pres', 'skin', 'test', 'mass', 'pedi', 'age', 'class']
dataframe = pandas.read_csv(url, names=names)
array = dataframe.values
X = array[:,0:8]
Y = array[:,8]
num_folds = 10
num_instances = len(X)
seed = 7
num_trees = 30
kfold = cross_validation.KFold(n=num_instances, n_folds=num_folds, random_state=seed)
model = AdaBoostClassifier(n_estimators=num_trees, random_state=seed)
results = cross_validation.cross_val_score(model, X, Y, cv=kfold)
print(results.mean())

Ejecutar el ejemplo proporciona una estimación media de la precisión de la clasificación.

0.76045796309

4. Incremento del gradiente estocástico

El aumento de gradiente estocástico (también llamado máquinas de aumento de gradiente) es una de las técnicas de conjunto más sofisticadas. También es una técnica que está demostrando ser quizás una de las mejores técnicas disponibles para mejorar el rendimiento a través de conjuntos.

Puede construir un modelo de Gradient Boosting para la clasificación utilizando la clase GradientBoostingClassifier.

El siguiente ejemplo muestra el aumento de gradiente estocástico para la clasificación con 100 árboles.

# Stochastic Gradient Boosting Classification
import pandas
from sklearn import cross_validation
from sklearn.ensemble import GradientBoostingClassifier
url = "https://archive.ics.uci.edu/ml/machine-learning-databases/pima-indians-diabetes/pima-indians-diabetes.data"
names = ['preg', 'plas', 'pres', 'skin', 'test', 'mass', 'pedi', 'age', 'class']
dataframe = pandas.read_csv(url, names=names)
array = dataframe.values
X = array[:,0:8]
Y = array[:,8]
num_folds = 10
num_instances = len(X)
seed = 7
num_trees = 100
kfold = cross_validation.KFold(n=num_instances, n_folds=num_folds, random_state=seed)
model = GradientBoostingClassifier(n_estimators=num_trees, random_state=seed)
results = cross_validation.cross_val_score(model, X, Y, cv=kfold)
print(results.mean())

Ejecutar el ejemplo proporciona una estimación media de la precisión de la clasificación.

0.764285714286

Fuente: http://machinelearningmastery.com/ensemble-machine-learning-algorithms-python-scikit-learn/



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