machine-learning
Scikit lernen
Suche…
Ein einfaches einfaches Klassifizierungsproblem (XOR) mit einem k-Nachbarn-Algorithmus
Stellen Sie sich vor, Sie möchten die richtige Antwort für das beliebte XOR-Problem vorhersagen. Sie wissen, was XOR ist (zB [x0 x1] => y). zum Beispiel [0 0] => 0, [0 1] => [1] und ...
#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]]))
Klassifizierung in Scikit-Learn
1. Eingesackte Entscheidungsbäume
Bagging funktioniert am besten mit Algorithmen, die eine hohe Varianz aufweisen. Ein beliebtes Beispiel sind Entscheidungsbäume, die oft ohne Beschneidung erstellt werden.
Im folgenden Beispiel sehen Sie ein Beispiel für die Verwendung des BaggingClassifier mit dem Algorithmus Classification and Regression Trees (DecisionTreeClassifier). Es werden insgesamt 100 Bäume angelegt.
Verwendeter Datensatz: Pima-Indianer-Diabetes-Datensatz
# 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())
Im Beispiel erhalten wir eine robuste Schätzung der Modellgenauigkeit.
0.770745044429
2. Zufälliger Wald
Zufälliger Wald ist eine Erweiterung von Entscheidungsbäumen.
Muster des Trainingsdatensatzes werden mit Ersatz genommen, die Bäume sind jedoch so konstruiert, dass die Korrelation zwischen einzelnen Klassifizierern reduziert wird. Anstatt den besten Split-Punkt bei der Konstruktion des Baums gierig zu wählen, wird für jeden Split nur eine zufällige Untermenge von Features berücksichtigt.
Sie können ein Random Forest-Modell für die Klassifizierung mithilfe der RandomForestClassifier-Klasse erstellen.
Das folgende Beispiel enthält ein Beispiel für eine zufällige Gesamtstruktur zur Klassifizierung mit 100 Bäumen und Teilungspunkten, die aus einer zufälligen Auswahl von 3 Merkmalen ausgewählt werden.
# 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())
Das Ausführen des Beispiels liefert eine mittlere Schätzung der Klassifizierungsgenauigkeit.
0.770727956254
3. AdaBoost
AdaBoost war vielleicht der erste erfolgreiche Algorithmus zur Steigerung des Ensembles. Im Allgemeinen werden Instanzen im Datensatz dadurch gewichtet, wie einfach oder schwer sie zu klassifizieren sind, sodass der Algorithmus ihnen bei der Konstruktion nachfolgender Modelle weniger Beachtung schenken kann.
Sie können ein AdaBoost-Modell zur Klassifizierung mithilfe der AdaBoostClassifier-Klasse erstellen.
Das folgende Beispiel veranschaulicht den Aufbau von 30 Entscheidungsbäumen in Folge mit dem AdaBoost-Algorithmus.
# 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())
Das Ausführen des Beispiels liefert eine mittlere Schätzung der Klassifizierungsgenauigkeit.
0.76045796309
4. Stochastische Gradientenverstärkung
Stochastisches Gradient Boosting (auch Gradient Boosting Machines genannt) ist eine der anspruchsvollsten Ensembles. Diese Technik erweist sich möglicherweise als die beste verfügbare Technik zur Verbesserung der Leistung über Ensembles.
Sie können ein Gradient-Boosting-Modell für die Klassifizierung mithilfe der GradientBoostingClassifier-Klasse erstellen.
Das folgende Beispiel zeigt das stochastische Gradienten-Boosting für die Klassifizierung mit 100 Bäumen.
# 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())
Das Ausführen des Beispiels liefert eine mittlere Schätzung der Klassifizierungsgenauigkeit.
0.764285714286
Quelle: http://machinelearningmastery.com/ensemble-machine-learning-algorithms-python-scikit-learn/