machine-learning
Scikit Learn
Поиск…
Основная задача простой классификации (XOR) с использованием алгоритма k ближайшего соседа
Представьте, что вы хотите предсказать правильный ответ для популярной проблемы XOR. Вы знали, что такое XOR (например, [x0 x1] => y). например [0 0] => 0, [0 1] => [1] и ...
#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]]))
Классификация в scikit-learn
1. Деревянные деревья принятия решений
Сумка лучше всего работает с алгоритмами с высокой дисперсией. Популярным примером являются деревья решений, которые часто создаются без обрезки.
В приведенном ниже примере см. Пример использования BaggingClassifier с алгоритмом Classification and Regression Trees (DecisionTreeClassifier). Создано 100 деревьев.
Используемый набор данных: набор данных диабета индейцев Пимы
# 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())
Запустив пример, мы получим надежную оценку точности модели.
0.770745044429
2. Случайный лес
Случайный лес - это расширение мешковых деревьев решений.
Образцы учебного набора данных берутся с заменой, но деревья построены таким образом, чтобы уменьшить корреляцию между отдельными классификаторами. В частности, вместо того, чтобы жадно выбирать лучшую точку разделения при построении дерева, для каждого раскола рассматривается только случайное подмножество признаков.
Вы можете создать модель Random Forest для классификации с использованием класса RandomForestClassifier.
В приведенном ниже примере приведен пример случайного леса для классификации с 100 деревьями и точками разделения, выбранными из случайного выбора из трех функций.
# 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())
Выполнение примера дает среднюю оценку точности классификации.
0.770727956254
3. AdaBoost
AdaBoost, возможно, был первым успешным алгоритмом ускорительного ансамбля. Обычно он работает путем взвешивания экземпляров в наборе данных тем, насколько легко или сложно классифицировать их, позволяя алгоритму оплачивать или или меньше уделять им внимание при построении последующих моделей.
Вы можете создать модель AdaBoost для классификации с использованием класса AdaBoostClassifier.
Пример ниже демонстрирует построение 30 деревьев решений последовательно с использованием алгоритма 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())
Выполнение примера дает среднюю оценку точности классификации.
0.76045796309
4. Ускорение стохастического градиента
Stochastic Gradient Boosting (также называемое Gradient Boosting Machines) - один из самых сложных методов ансамбля. Это также метод, который, по-видимому, является лучшими технологиями для повышения производительности через ансамбли.
Вы можете построить модель Gradient Boosting для классификации с использованием класса GradientBoostingClassifier.
Пример ниже демонстрирует Stochastic Gradient Boosting для классификации с 100 деревьями.
# 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())
Выполнение примера дает среднюю оценку точности классификации.
0.764285714286
Источник: http://machinelearningmastery.com/ensemble-machine-learning-algorithms-python-scikit-learn/