Spec-Zone.ru › scikit-learn

SGDClassifier

classsklearn.linear_model.SGDClassifier(loss='hinge', *, penalty='l2', alpha=0.0001, l1_ratio=0.15, fit_intercept=True, max_iter=1000, tol=0.001, shuffle=True, verbose=0, epsilon=0.1, n_jobs=None, random_state=None, learning_rate='optimal', eta0=0.0, power_t=0.5, early_stopping=False, validation_fraction=0.1, n_iter_no_change=5, class_weight=None, warm_start=False, average=False)[source]

Линейные классификаторы (SVM, логистическая регрессия и т. д.) с обучением по методу стохастического градиентного спуска.

Этот оценщик реализует регрессионные линейные модели с обучением по методу стохастического градиентного спуска (SGD): градиент потерь оценивается для каждого примера по отдельности, а модель обновляется по мере необходимости с уменьшением силы градиента (т. е. скоростью обучения). SGD позволяет выполнять обучение с мини-пакетами (онлайн/вне ядра) через метод partial_fit. Для достижения наилучших результатов при использовании стандартного графика скорости обучения данные должны иметь нулевое среднее значение и единичную дисперсию.

Эта реализация работает с данными, представленными как плотные или разреженные массивы с плавающей точкой для признаков. Модель, которую она подгоняет, может контролироваться параметром loss; по умолчанию она подгоняет линейную машину опорных векторов (SVM).

Регуляризатор — это штраф, добавляемый к функции потерь, который сжимает параметры модели к нулевому вектору, используя либо квадратную евклидову норму L2, либо абсолютную норму L1, либо их комбинацию (Elastic Net). Если обновление параметра пересекает значение 0.0 из-за регуляризатора, обновление усекается до 0.0, чтобы позволить обучение разреженных моделей и добиться онлайн-отбора признаков.

Подробнее см. в Руководстве пользователя.

Параметры:
loss{‘hinge’, ‘log_loss’, ‘modified_huber’, ‘squared_hinge’, ‘perceptron’, ‘squared_error’, ‘huber’, ‘epsilon_insensitive’, ‘squared_epsilon_insensitive’}, по умолчанию=’hinge’

Функция потерь, которая должна быть использована.

  • ‘hinge’ даёт линейную SVM.
  • ‘log_loss’ даёт логистическую регрессию, вероятностный классификатор.
  • ‘modified_huber’ — это ещё одна гладкая функция потерь, которая обеспечивает толерантность к выбросам, а также оценки вероятностей.
  • ‘squared_hinge’ — это как hinge, но с квадратичной penalization.
  • ‘perceptron’ — это линейная функция потерь, используемая алгоритмом perceptron.
  • Другие функции потерь, ‘squared_error’, ‘huber’, ‘epsilon_insensitive’ и ‘squared_epsilon_insensitive’ предназначены для регрессии, но могут быть полезны и в классификации; см. SGDRegressor для описания.

Более подробные сведения о формулах функций потерь можно найти в Руководстве пользователя, а визуализацию функций потерь можно найти в SGD: выпуклые функции потерь.

penalty{‘l2’, ‘l1’, ‘elasticnet’, None}, по умолчанию=’l2’

Функция штрафа (также известная как регуляризация). По умолчанию ‘l2’, что является стандартной функцией регуляризации для линейных моделей SVM. ‘l1’ и ‘elasticnet’ могут привести к разреженности модели (отбор признаков), чего нельзя достичь с помощью ‘l2’. Штраф не добавляется, если установлено значение None.

Визуализацию функций штрафа можно найти в SGD: Функции штрафа.

alphafloat, по умолчанию=0.0001

Постоянная, которая умножает регуляризационную функцию. Чем выше значение, тем сильнее регуляризация. Также используется для вычисления скорости обучения, когда learning_rate установлено в ‘optimal’. Значения должны быть в диапазоне [0.0, inf).

l1_ratiofloat, по умолчанию=0.15

Параметр смешивания Elastic Net, при 0 <= l1_ratio <= 1. l1_ratio=0 соответствует L2 штрафу, l1_ratio=1 к L1. Используется только если penalty равно ‘elasticnet’. Значения должны быть в диапазоне [0.0, 1.0].

fit_interceptbool, по умолчанию=True

Указывает, должна ли оцениваться точка пересечения с осью Y или нет. Если False, предполагается, что данные уже центрированы.

max_iterint, по умолчанию=1000

Максимальное количество проходов по обучающей выборке (эпох). Это влияет только на поведение метода fit, а не на метод partial_fit. Значения должны быть в диапазоне [1, inf).

Добавлена в версии 0.19.

tolfloat или None, по умолчанию=1e-3

Критерий остановки. Если не None, обучение остановится, когда (loss > best_loss - tol) в течение n_iter_no_change последовательных эпох. Сходимость проверяется по функции потерь обучения или по функции потерь валидации в зависимости от параметра early_stopping. Значения должны быть в диапазоне [0.0, inf).

Добавлена в версии 0.19.

shufflebool, по умолчанию=True

Указывает, нужно ли перемешивать обучающую выборку после каждой эпохи.

verboseint, по умолчанию=0

Уровень подробности. Значения должны быть в диапазоне [0, inf).

epsilonfloat, по умолчанию=0.1

Epsilon в функциях потерь epsilon-insensitive; только если loss равно ‘huber’, ‘epsilon_insensitive’ или ‘squared_epsilon_insensitive’. Для ‘huber’ определяет порог, при котором становится менее важным получить точное предсказание. Для epsilon-insensitive, любые различия между текущим предсказанием и правильным значением игнорируются, если они меньше этого порога. Значения должны быть в диапазоне [0.0, inf).

n_jobsint, по умолчанию=None

Количество процессоров, используемых для вычислений OVA (One Versus All, для многоклассовых задач). None означает 1, за исключением контекста joblib.parallel_backend. -1 означает использование всех процессоров. См. Словарь для получения дополнительной информации.

random_stateint, RandomState instance, по умолчанию=None

Используется для перемешивания данных, когда shuffle установлено в True. Передайте целое число для воспроизводимого результата при нескольких вызовах функции. См. Словарь. Целочисленные значения должны быть в диапазоне [0, 2**32 - 1].

learning_ratestr, по умолчанию=’optimal’

Расписание скорости обучения:

  • ‘constant’: eta = eta0
  • ‘optimal’: eta = 1.0 / (alpha * (t + t0)) где t0 выбирается по эвристике, предложенной Леоном Ботто.
  • ‘invscaling’: eta = eta0 / pow(t, power_t)
  • ‘adaptive’: eta = eta0, до тех пор, пока обучение продолжает уменьшаться. Каждый раз, когда n_iter_no_change последовательных эпох не удаётся уменьшить функцию потерь обучения на tol или не удаётся увеличить оценку валидации на tol, если early_stopping установлено в True, текущая скорость обучения делится на 5.

Добавлена в версии 0.20: Добавлен параметр ‘adaptive’.

eta0float, по умолчанию=0.0

Начальная скорость обучения для расписаний ‘constant’, ‘invscaling’ или ‘adaptive’. Значение по умолчанию равно 0.0, так как eta0 не используется в расписании по умолчанию ‘optimal’. Значения должны быть в диапазоне [0.0, inf).

power_tfloat, по умолчанию=0.5

Экспонента для обратного масштабирования скорости обучения. Значения должны быть в диапазоне (-inf, inf).

early_stoppingbool, по умолчанию=False

Использовать ли раннюю остановку для прекращения обучения, когда оценка валидации не улучшается. Если установлено значение True, он автоматически отложит часть обучающих данных для валидации и прекратит обучение, когда оценка валидации, возвращаемая методом score , не улучшается по крайней мере на tol в течение n_iter_no_change последовательных эпох.

Пример влияния ранней остановки см. в Ранняя остановка стохастического градиентного спуска.

Добавлена в версии 0.20: Добавлен параметр ‘early_stopping’.

validation_fractionfloat, по умолчанию=0.1

Доля обучающих данных, которая должна быть отложена в качестве набора данных для валидации при ранней остановке. Должно находиться в диапазоне от 0 до 1. Используется только если early_stopping равно True. Значения должны быть в диапазоне (0.0, 1.0).

Добавлена в версии 0.20: Добавлен параметр ‘validation_fraction’.

n_iter_no_changeint, по умолчанию=5

Количество итераций без улучшения, которое необходимо подождать до остановки обучения. Сходимость проверяется по функции потерь обучения или по функции потерь валидации в зависимости от параметра early_stopping. Целочисленные значения должны быть в диапазоне [1, max_iter).

Добавлена в версии 0.20: Добавлен параметр ‘n_iter_no_change’.

class_weightdict, {метка_класса: вес} или “balanced”, по умолчанию=None

Настройка для параметра class_weight при подгонке.

Веса, связанные с классами. Если не задано, все классы предполагаются с весом 1.

Режим “balanced” использует значения y для автоматической настройки весов, обратно пропорциональных частотам классов в обучающих данных, как n_samples / (n_classes * np.bincount(y)).

warm_startbool, по умолчанию=False

Если установлено значение True, используется решение предыдущего вызова fit в качестве начального значения. В противном случае, предыдущее решение просто стирается. См. Словарь.

Повторный вызов fit или partial_fit, когда warm_start равен True, может привести к другому результату, чем при вызове fit один раз, из-за способа перемешивания данных. Если используется динамическая скорость обучения, скорость обучения адаптируется в зависимости от числа уже увиденных выборок. Вызов fit сбрасывает этот счётчик, в то время как partial_fit увеличит существующий счётчик.

averagebool или int, по умолчанию=False

Если установлено в True, вычисляет усреднённые веса SGD по всем обновлениям и сохраняет результат в атрибуте coef_. Если установлено значение больше 1, усреднение начнется, когда общее число увиденных выборок достигнет average. Таким образом, average=10 начнёт усреднение после просмотра 10 выборок. Целочисленные значения должны быть в диапазоне [1, n_samples].

Атрибуты:
coef_массив формы (1, n_features), если n_классов == 2, иначе (n_классов, n_признаков)

Веса, присвоенные признакам.

intercept_массив формы (1,), если n_классов == 2, иначе (n_классов,)

Константы в функции принятия решений.

n_iter_int

Фактическое количество итераций до достижения критерия остановки. Для многоклассовых подгонок — максимальное значение по всем бинарным подгонкам.

classes_массив формы (n_классов,)
t_int

Количество обновлений весов, выполненных во время обучения. То же самое, что и (n_iter_ * n_samples + 1).

n_features_in_int

Количество признаков, увиденных во время подгонки.

Добавлен в версии 0.24.

feature_names_in_массив формы (n_features_in_,)

Названия признаков, увиденные во время подгонки. Определены только тогда, когда X имеет имена признаков, которые являются строками.

Добавлен в версии 1.0.

См. также

sklearn.svm.LinearSVC

Линейная классификация опорных векторов.

LogisticRegression

Логистическая регрессия.

Perceptron

Наследуется от SGDClassifier. Perceptron() эквивалентно SGDClassifier(loss="perceptron", eta0=1, learning_rate="constant", penalty=None).

Примеры

>>> import numpy as np
>>> from sklearn.linear_model import SGDClassifier
>>> from sklearn.preprocessing import StandardScaler
>>> from sklearn.pipeline import make_pipeline
>>> X = np.array([[-1, -1], [-2, -1], [1, 1], [2, 1]])
>>> Y = np.array([1, 1, 2, 2])
>>> # Always scale the input. The most convenient way is to use a pipeline.
>>> clf = make_pipeline(StandardScaler(),
...                     SGDClassifier(max_iter=1000, tol=1e-3))
>>> clf.fit(X, Y)
Pipeline(steps=[('standardscaler', StandardScaler()),
                ('sgdclassifier', SGDClassifier())])
>>> print(clf.predict([[-0.8, -1]]))
[1]
decision_function(X)[source]

Предсказание оценок уверенности для образцов.

Оценка уверенности для образца пропорциональна подписанному расстоянию этого образца до гиперплоскости.

Параметры:
X{массив-подобный объект, разреженная матрица} формы (n_образцов, n_признаков)

Матрица данных, для которой мы хотим получить оценки уверенности.

Возвращает:
scoresмассив формы (n_образцов,) или (n_образцов, n_классов)

Оценки уверенности для каждой (n_samples, n_classes) комбинации. В бинарном случае оценка уверенности для self.classes_[1], где >0 означает, что этот класс будет предсказан.

densify()[source]

Преобразовать матрицу коэффициентов в плотный массив.

Преобразует coef_ член (обратно) в массив numpy.ndarray. Это стандартный формат coef_, и он необходим для подгонки, поэтому вызов этого метода требуется только для моделей, которые были предварительно разрежены; в противном случае это бесполезно.

Возвращает:
self

Обученная модель.

fit(X, y, coef_init=None, intercept_init=None, sample_weight=None)[source]

Оценивание линейной модели с помощью стохастического градиентного спуска.

Параметры:
X{массив-подобный объект, разреженная матрица}, форма (n_образцов, n_признаков)

Данные обучения.

yмассив формы (n_образцов,)

Целевые значения.

coef_initмассив формы (n_классов, n_признаков), по умолчанию None

Начальные коэффициенты для ускорения оптимизации.

intercept_initмассив формы (n_классов,), по умолчанию None

Начальный свободный член для ускорения оптимизации.

sample_weightмассив-подобный объект, форма (n_образцов,), по умолчанию None

Веса, применяемые к отдельным образцам. Если не указаны, предполагаются равные веса. Эти веса будут умножаться на class_weight (переданный через конструктор), если class_weight указан.

Возвращает:
selfобъект

Возвращает экземпляр self.

get_metadata_routing()[source]

Получить маршрутизацию метаданных этого объекта.

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

Возвращает:
routingMetadataRequest

MetadataRequest encapsulating routing information.

get_params(deep=True)[source]

Получить параметры этого оценщика.

Параметры:
deepbool, по умолчанию True

Если True, вернет параметры этого оценщика и вложенных подобъектов, которые являются оценщиками.

Возвращает:
paramsdict

Имена параметров, сопоставленные с их значениями.

partial_fit(X, y, classes=None, sample_weight=None)[source]

Выполнить одну эпоху стохастического градиентного спуска на заданных образцах.

Внутренне этот метод использует max_iter = 1. Поэтому нет гарантии, что после вызова будет достигнут минимум функции стоимости. Вопросы, такие как сходимость по целевой функции, раннее прекращение обучения и корректировка скорости обучения, должны быть решены пользователем.

Параметры:
X{array-like, sparse matrix}, форма (n_samples, n_features)

Подмножество обучающих данных.

yndarray формы (n_samples,)

Подмножество целевых значений.

classesndarray формы (n_classes,), по умолчанию=None

Классы по всем вызовам partial_fit. Могут быть получены с помощью np.unique(y_all), где y_all — целевой вектор всего набора данных. Этот аргумент требуется для первого вызова partial_fit и может быть опущен в последующих вызовах. Обратите внимание, что y не обязательно должен содержать все метки в classes.

sample_weightarray-like, форма (n_samples,), по умолчанию=None

Веса, применяемые к отдельным образцам. Если не указано, предполагаются равные веса.

Возвращаемое значение:
selfобъект

Возвращает экземпляр self.

predict(X)[source]

Предсказать метки классов для образцов в X.

Параметры:
X{array-like, sparse matrix} формы (n_samples, n_features)

Матрица данных, для которой мы хотим получить предсказания.

Возвращаемое значение:
y_predndarray формы (n_samples,)

Вектор, содержащий метки классов для каждого образца.

predict_log_proba(X)[source]

Логарифм оценок вероятности.

Этот метод доступен только для логарифмической функции потерь и модифицированной функции потерь Хубера.

Когда loss=”modified_huber”, оценки вероятности могут быть жёсткими нулями и единицами, поэтому вычисление логарифма невозможно.

Подробнее см. predict_proba.

Параметры:
X{array-like, sparse matrix} формы (n_samples, n_features)

Входные данные для предсказания.

Возвращаемое значение:
Tarray-like, формы (n_samples, n_classes)

Возвращает логарифм вероятности выборки для каждого класса в модели, где классы упорядочены так же, как и в self.classes_.

predict_proba(X)[source]

Оценки вероятности.

Этот метод доступен только для логарифмической функции потерь и модифицированной функции потерь Хубера.

Многоклассовые оценки вероятности выводятся из бинарных (один против всех) оценок путём простого нормирования, как рекомендуется Zadrozny и Elkan.

Бинарные оценки вероятности для loss=”modified_huber” даются (clip(decision_function(X), -1, 1) + 1) / 2. Для других функций потерь необходимо выполнить корректную калибровку вероятностей, обернув классификатор с помощью CalibratedClassifierCV вместо этого.

Параметры:
X{array-like, sparse matrix}, форма (n_samples, n_features)

Входные данные для предсказания.

Возвращаемое значение:
ndarray формы (n_samples, n_classes)

Возвращает вероятность выборки для каждого класса в модели, где классы упорядочены так же, как и в self.classes_.

Ссылки

Zadrozny и Elkan, «Преобразование оценок классификатора в многоклассовые оценки вероятности», SIGKDD’02, https://dl.acm.org/doi/pdf/10.1145/775047.775151

Обоснование формулы в случае loss=”modified_huber” приведено в приложении B в: http://jmlr.csail.mit.edu/papers/volume2/zhang02c/zhang02c.pdf

score(X, y, sample_weight=None)[source]

Возвращает среднюю точность на заданных тестовых данных и метках.

В многоклассовой классификации это подмножество точности, которое является жёстким показателем, так как требуется для каждого образца, чтобы каждый набор меток был правильно предсказан.

Параметры:
Xarray-like формы (n_samples, n_features)

Тестовые образцы.

yarray-like формы (n_samples,) или (n_samples, n_outputs)

Истинные метки для X.

sample_weightarray-like формы (n_samples,), по умолчанию=None

Веса образцов.

Возвращаемое значение:
scorefloat

Средняя точность self.predict(X) относительно y.

set_fit_request(*, coef_init:bool|None|str='$UNCHANGED$', intercept_init:bool|None|str='$UNCHANGED$', sample_weight:bool|None|str='$UNCHANGED$') → SGDClassifier[source]

Запрос метаданных, переданных методу fit.

Обратите внимание, что этот метод актуален только если enable_metadata_routing=True (см. sklearn.set_config). Обратитесь к Руководству пользователя для получения информации о работе механизма маршрутизации.

Варианты для каждого параметра:

  • True: метаданные запрашиваются и передаются методу fit при их наличии. Запрос игнорируется, если метаданные не предоставлены.
  • False: метаданные не запрашиваются и мета-оценщик не передаст их методу fit.
  • None: метаданные не запрашиваются, и мета-оценщик выдаст ошибку, если пользователь их предоставит.
  • str: метаданные должны быть переданы мета-оценщику с этим псевдонимом вместо исходного имени.

По умолчанию (sklearn.utils.metadata_routing.UNCHANGED) сохраняется существующий запрос. Это позволяет изменить запрос для некоторых параметров, а не для всех.

Добавлен в версии 1.3.

Примечание

Этот метод актуален только в том случае, если этот оценщик используется в качестве под-оценщика мета-оценщика, например, внутри Pipeline. В противном случае он не оказывает никакого влияния.

Parameters:
coef_initstr, True, False, or None, default=sklearn.utils.metadata_routing.UNCHANGED

Маршрутизация метаданных для параметра coef_init в fit.

intercept_initstr, True, False, or None, default=sklearn.utils.metadata_routing.UNCHANGED

Маршрутизация метаданных для параметра intercept_init в fit.

sample_weightstr, True, False, or None, default=sklearn.utils.metadata_routing.UNCHANGED

Маршрутизация метаданных для параметра sample_weight в fit.

Returns:
selfobject

Обновленный объект.

set_params(**params)[source]

Устанавливает параметры этого оценщика.

Метод работает как с простыми оценщиками, так и со вложенными объектами (такими как Pipeline). Последние имеют параметры в формате <component>__<parameter>, что позволяет обновлять каждый компонент вложенного объекта.

Parameters:
**paramsdict

Параметры оценщика.

Returns:
selfestimator instance

Экземпляр оценщика.

set_partial_fit_request(*, classes:bool|None|str='$UNCHANGED$', sample_weight:bool|None|str='$UNCHANGED$') → SGDClassifier[source]

Запрос метаданных, переданных методу partial_fit.

Обратите внимание, что этот метод актуален только если enable_metadata_routing=True (см. sklearn.set_config). Обратитесь к Руководству пользователя для получения информации о работе механизма маршрутизации.

Варианты для каждого параметра:

  • True: метаданные запрашиваются и передаются методу partial_fit при их наличии. Запрос игнорируется, если метаданные не предоставлены.
  • False: метаданные не запрашиваются и мета-оценщик не передаст их методу partial_fit.
  • None: метаданные не запрашиваются, и мета-оценщик выдаст ошибку, если пользователь их предоставит.
  • str: метаданные должны быть переданы мета-оценщику с этим псевдонимом вместо исходного имени.

По умолчанию (sklearn.utils.metadata_routing.UNCHANGED) сохраняется существующий запрос. Это позволяет изменить запрос для некоторых параметров, а не для всех.

Добавлен в версии 1.3.

Примечание

Этот метод актуален только в том случае, если этот оценщик используется в качестве под-оценщика мета-оценщика, например, внутри Pipeline. В противном случае он не оказывает никакого влияния.

Parameters:
classesstr, True, False, or None, default=sklearn.utils.metadata_routing.UNCHANGED

Маршрутизация метаданных для параметра classes в partial_fit.

sample_weightstr, True, False, or None, default=sklearn.utils.metadata_routing.UNCHANGED

Маршрутизация метаданных для параметра sample_weight в partial_fit.

Returns:
selfobject

Обновленный объект.

set_score_request(*, sample_weight:bool|None|str='$UNCHANGED$') → SGDClassifier[source]

Запрос метаданных, переданных методу score.

Обратите внимание, что этот метод актуален только если enable_metadata_routing=True (см. sklearn.set_config). Пожалуйста, ознакомьтесь с Руководством пользователя для понимания работы механизма маршрутизации.

Варианты для каждого параметра:

  • True: метаданные запрашиваются и передаются методу score если они предоставлены. Запрос игнорируется, если метаданные не предоставлены.
  • False: метаданные не запрашиваются, и мета-эстиматор не передаст их методу score.
  • None: метаданные не запрашиваются, и мета-эстиматор выдаст ошибку, если пользователь их предоставит.
  • str: метаданные должны быть переданы мета-эстиматору с данным псевдонимом вместо оригинального названия.

По умолчанию (sklearn.utils.metadata_routing.UNCHANGED) сохраняется существующий запрос. Это позволяет изменить запрос для некоторых параметров, а не для всех.

Добавлен в версии 1.3.

Примечание

Этот метод актуален только если этот эстиматор используется в качестве под-эстиматора мета-эстиматора, например, внутри Pipeline. В противном случае он не имеет эффекта.

Parameters:
sample_weightstr, True, False, or None, default=sklearn.utils.metadata_routing.UNCHANGED

Маршрутизация метаданных для параметра sample_weight в score.

Returns:
selfobject

Обновленный объект.

sparsify()[source]

Преобразовать матрицу коэффициентов в разреженный формат.

Преобразует член coef_ в матрицу scipy.sparse, что для моделей с L1-регуляризацией может быть намного более эффективным по памяти и хранению, чем обычное представление numpy.ndarray.

Член intercept_ не преобразуется.

Returns:
self

Обученный эстиматор.

Примечания

Для неразреженных моделей, то есть когда в coef_ не так много нулей, это может фактически увеличить использование памяти, поэтому используйте этот метод с осторожностью. Правило большого пальца состоит в том, что количество нулевых элементов, которое можно вычислить с помощью (coef_ == 0).sum(), должно быть более 50% для получения значительных преимуществ.

После вызова этого метода дальнейшая подгонка с методом partial_fit (если таковой имеется) не будет работать, пока вы не вызовете densify.

Примеры из галереи

Основные моменты выпуска scikit-learn 1.6

Влияние сложности модели

Внеядерная классификация текстовых документов

Сравнение различных онлайн-алгоритмов

Ранняя остановка стохастического градиентного спуска

Построение многоклассового стохастического градиентного спуска на наборе данных iris

SGD: Максимальная разделяющая гиперплоскость

SGD: Штрафы

SGD: Взвешенные примеры

SGD: выпуклые функции потерь

Явное приближение отображения признаков для ядер RBF

Сравнение случайного поиска и поиска по сетке для оценки гиперпараметров

Полусупервизированная классификация текстового набора данных

Классификация текстовых документов с использованием разреженных признаков

© 2007–2025 The scikit-learn developers
Licensed under the 3-clause BSD License.
https://scikit-learn.org/1.6/modules/generated/sklearn.linear_model.SGDClassifier.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API