machine-learning
Scikit Apprendre
Recherche…
Un problème simple de classification simple (XOR) utilisant l'algorithme du plus proche voisin
Considérez que vous voulez prédire la réponse correcte pour le problème populaire XOR. Vous savez ce qu'est XOR (par exemple [x0 x1] => y). par exemple [0 0] => 0, [0 1] => [1] et ...
#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]]))
Classification en scikit-learn
1. Arbres de décision mis en sac
L'ensachage donne de meilleurs résultats avec des algorithmes à forte variance. Un exemple populaire est celui des arbres de décision, souvent construits sans élagage.
Dans l'exemple ci-dessous, consultez un exemple d'utilisation de BaggingClassifier avec l'algorithme Classification et arbres de régression (DecisionTreeClassifier). Un total de 100 arbres sont créés.
Ensemble de données utilisé: ensemble de données sur le diabète des Indiens 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())
En utilisant l'exemple, nous obtenons une estimation robuste de la précision du modèle.
0.770745044429
2. Forêt au hasard
La forêt aléatoire est une extension des arbres de décision ensachés.
Des échantillons du jeu de données d'apprentissage sont pris avec remplacement, mais les arbres sont construits de manière à réduire la corrélation entre les classificateurs individuels. Plus précisément, plutôt que de choisir avec avidité le meilleur point de partage dans la construction de l'arborescence, seul un sous-ensemble aléatoire d'entités est pris en compte pour chaque division.
Vous pouvez construire un modèle de forêt aléatoire pour la classification à l'aide de la classe RandomForestClassifier.
L'exemple ci-dessous fournit un exemple de forêt aléatoire pour la classification avec 100 arbres et des points de partage choisis parmi une sélection aléatoire de 3 entités.
# 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())
L'exécution de l'exemple fournit une estimation moyenne de la précision de la classification.
0.770727956254
3. AdaBoost
AdaBoost était peut-être le premier algorithme de renforcement de l'ensemble réussi. Cela fonctionne généralement en pondérant les instances dans le jeu de données par la facilité ou la difficulté de les classer, ce qui permet à l'algorithme de prêter attention ou moins à leur attention dans la construction des modèles suivants.
Vous pouvez créer un modèle AdaBoost pour la classification à l'aide de la classe AdaBoostClassifier.
L'exemple ci-dessous illustre la construction de 30 arbres de décision en séquence à l'aide de l'algorithme 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())
L'exécution de l'exemple fournit une estimation moyenne de la précision de la classification.
0.76045796309
4. Stochastic Gradient Boosting
Le Stochastic Gradient Boosting (aussi appelé Gradient Boosting Machines) est l'une des techniques d'ensemble les plus sophistiquées. C'est aussi une technique qui se révèle être l'une des meilleures techniques disponibles pour améliorer les performances via des ensembles.
Vous pouvez construire un modèle d'amélioration de dégradé pour la classification à l'aide de la classe GradientBoostingClassifier.
L’exemple ci-dessous montre l’amplification stochastique du gradient pour la classification avec 100 arbres.
# 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())
L'exécution de l'exemple fournit une estimation moyenne de la précision de la classification.
0.764285714286
Source: http://machinelearningmastery.com/ensemble-machine-learning-algorithms-python-scikit-learn/