Поиск…


Использование векторных машин поддержки

Поддерживающие векторные машины - это семейство алгоритмов, пытающихся передать (возможно, высокоразмерную) гиперплоскость между двумя помеченными наборами точек, так что расстояние точек от плоскости в каком-то смысле является оптимальным. SVM могут использоваться для классификации или регрессии (соответствующие sklearn.svm.SVC и sklearn.svm.SVR , соответственно.

Пример:

Предположим, что мы работаем в двумерном пространстве. Во-первых, мы создаем некоторые данные:

import numpy as np

Теперь мы создаем x и 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

Заметим, что x состоит из двух гауссианов: один с центром вокруг (0, 0) и один с центром вокруг (1, 1) .

Чтобы построить классификатор, мы можем использовать:

from sklearn import svm

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

Давайте проверим прогноз для (0, 0) :

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

Предсказание состоит в том, что класс равен 0.

Для регрессии мы можем аналогичным образом:

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

RandomForestClassifier

Случайный лес является мета-оценкой, которая соответствует ряду классификаторов дерева решений на разных подпакетах набора данных и использует усреднение для улучшения точности прогнозирования и контроля над переустановкой.

Простой пример использования:

Импортировать:

from sklearn.ensemble import RandomForestClassifier

Определение данных поезда и целевых данных:

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

Значения в target представлении представляют собой метку, которую вы хотите предсказать.

Инициируйте объект RandomForest и выполните обучение (подойдет):

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

предсказать:

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

Анализ отчетов о классификации

Создайте текстовый отчет, показывающий основные показатели классификации, включая точность и отзыв , f1-score ( среднее значение гармоник точности и отзыва) и поддержку (количество наблюдений этого класса в наборе обучения).

Пример из документов 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))

Выход -

         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 для классификации. Классификатор усиления градиента представляет собой аддитивный ансамбль базовой модели, ошибка которой исправляется в последовательных итерациях (или этапах) путем добавления деревьев регрессии, которые корректируют остатки (ошибка на предыдущем этапе).

Импортировать:

from sklearn.ensemble import GradientBoostingClassifier

Создайте некоторые данные по классификации игрушек

from sklearn.datasets import load_iris

iris_dataset = load_iris()

X, y = iris_dataset.data, iris_dataset.target

Разделим эти данные на набор для обучения и тестирования.

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)

Создайте модель GradientBoostingClassifier используя параметры по умолчанию.

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

Давайте забьем его на тестовом наборе

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

По умолчанию построено 100 оценок

>>> gbc.n_estimators
100

Это можно контролировать, установив n_estimators на другое значение во время инициализации.

Дерево решений

Дерево решений - это классификатор, который использует последовательность подробных правил (например, a> 7), которые могут быть легко поняты.

Приведенный ниже пример обучает классификатор дерева решений с использованием трех векторов признаков длины 3, а затем предсказывает результат для неизвестного четвертого вектора признаков, так называемого тестового вектора.

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

Выходные данные можно визуализировать, используя:

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")

Классификация с использованием логистической регрессии

В LR-классификаторе его вероятности, описывающие возможные результаты одного испытания, моделируются с использованием логистической функции. Он реализован в библиотеке linear_model

from sklearn.linear_model import LogisticRegression

Реализация LL sklearn может соответствовать двоичной, однополярной логистической регрессии с одной или несколькими логическими системами с опциональной регуляцией L2 или L1. Например, рассмотрим двоичную классификацию в наборе данных образца склеронов

from sklearn.datasets import make_hastie_10_2

X,y = make_hastie_10_2(n_samples=1000)

Где X - массив n_samples X 10 а y - метки-мишени -1 или +1.

Используйте разделение поездов для разделения входных данных на тренировочные и тестовые наборы (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)

Использование LR-классификатора аналогично другим примерам

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

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

Используйте матрицу Confusion для визуализации результатов

from sklearn.metrics import confusion_matrix

confusion_matrix(predicted, labels_test)


Modified text is an extract of the original Stack Overflow Documentation
Лицензировано согласно CC BY-SA 3.0
Не связан с Stack Overflow