Nano Hash - криптовалюты, майнинг, программирование

Получение атрибутов модели из конвейера

Обычно я получаю PCA загрузку примерно так:

pca = PCA(n_components=2)
X_t = pca.fit(X).transform(X)
loadings = pca.components_

Если я запустил PCA с помощью конвейера scikit-learn:

from sklearn.pipeline import Pipeline
pipeline = Pipeline(steps=[    
('scaling',StandardScaler()),
('pca',PCA(n_components=2))
])
X_t=pipeline.fit_transform(X)

можно ли получить нагрузки?

Попытка просто loadings = pipeline.components_ не удалась:

AttributeError: 'Pipeline' object has no attribute 'components_'

(Также интересует извлечение атрибутов типа coef_ из конвейеров.)


Ответы:


1

Вы смотрели документацию: http://scikit-learn.org/dev/modules/pipeline.html Мне кажется, это довольно ясно.

Обновление: в версии 0.21 вы можете использовать только квадратные скобки:

pipeline['pca']

или индексы

pipeline[1]

Есть два способа перейти к этапам конвейера: либо с помощью индексов, либо с использованием заданных вами строковых имен:

pipeline.named_steps['pca']
pipeline.steps[1][1]

Это даст вам объект PCA, на котором вы можете получить компоненты. С named_steps вы также можете использовать доступ к атрибутам с ., который позволяет автозаполнение:

pipeline.names_steps.pca.<tab here gives autocomplete>

03.03.2015
  • Хорошо, спасибо. Разве это не (использование named_steps) в здесь. Понятно, что. 04.03.2015
  • Я хотел бы перехватить этот ответ, добавив, что если у вас есть regr = TransformedTargetRegressor над вашим конвейером, то синтаксис не тот, вместо этого вам нужно получить доступ к регрессору, используя regressor_, прежде чем вы получите доступ к указанным шагам, то есть regr.regressor_.named_steps['pca'].components_. 11.11.2019
  • Странно, это не на странице документации, а в user guide, присутствующем в этих документах. 11.01.2021
  • @ agent18 Где это пропало? Может быть, откройте проблему (или еще лучше PR), чтобы узнать, чтобы обновить документы :) 20.02.2021

  • 2

    Использование Neuraxle

    Работать с конвейерами проще с помощью Neuraxle. Например, вы можете сделать это:

    from neuraxle.pipeline import Pipeline
    
    # Create and fit the pipeline: 
    pipeline = Pipeline([
        StandardScaler(),
        PCA(n_components=2)
    ])
    pipeline, X_t = pipeline.fit_transform(X)
    
    # Get the components: 
    pca = pipeline[-1]
    components = pca.components_
    

    Вы можете получить доступ к своему PCA тремя разными способами:

    • pipeline['PCA']
    • pipeline[-1]
    • pipeline[1]

    Neuraxle - это конвейерная библиотека, построенная на основе scikit-learn, чтобы вывести конвейеры на новый уровень. Он позволяет легко управлять пространствами распределений гиперпараметров, вложенными конвейерами, сохранением и перезагрузкой, обслуживанием REST API и многим другим. Все это сделано для того, чтобы также использовать алгоритмы глубокого обучения и позволить параллельные вычисления.

    Вложенные конвейеры:

    У вас могут быть конвейеры внутри конвейеров, как показано ниже.

    # Create and fit the pipeline: 
    pipeline = Pipeline([
        StandardScaler(),
        Identity(),
        Pipeline([
            Identity(),  # Note: an Identity step is a step that does nothing. 
            Identity(),  # We use it here for demonstration purposes. 
            Identity(),
            Pipeline([
                Identity(),
                PCA(n_components=2)
            ])
        ])
    ])
    pipeline, X_t = pipeline.fit_transform(X)
    

    Тогда вам нужно будет сделать это:

    # Get the components: 
    pca = pipeline["Pipeline"]["Pipeline"][-1]
    components = pca.components_
    
    12.10.2019
    Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

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

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

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

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..