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

Ошибка KNN Mahalanobis — размер V не соответствует — Python

Я пытаюсь реализовать модель KNN, используя Mahalanobis в качестве метрики расстояния, однако, когда я выполняю код, я получаю сообщение об ошибке:

Ошибка значения: «размер V не соответствует

где V — ковариационная матрица признаков.

Соответствующие части моего кода ниже:

X_train, X_test, y_train,y_test=train_test_split(X,y,test_size=0.3,random_state=10,stratify=y)

knn2=KNeighborsClassifier(n_neighbors=20, metric='mahalanobis', metric_params={'V': np.cov(X_train)})

knn2.fit(X_train,y_train) # this is the line that causes the error. 

Я просмотрел репозиторий на github для определения расстояния sklearn метрический код (из строки 628 — Mahalanobis), и можно увидеть, что ошибка возникает из-за следующего:

cdef inline DTYPE_t rdist(self, DTYPE_t* x1, DTYPE_t* x2,
                              ITYPE_t size) nogil except -1:
        if size != self.size:
            with gil:
                raise ValueError('Mahalanobis dist: size of V does not match')

Я понял, что такое self.size в моем случае, но не могу понять, что такое size.

Может ли кто-нибудь помочь с этой ошибкой?

Спасибо

22.01.2020

  • Вы когда-нибудь получали ответ на этот вопрос? 05.05.2021
  • @TomSmith Не бойся! 09.05.2021
  • Ответил ниже :) 10.05.2021

Ответы:


1

Передайте аргумент rowvar=False в np.cov, и он должен работать. Ваш конструктор knn должен выглядеть так:

knn2=KNeighborsClassifier(n_neighbors=20, metric='mahalanobis', metric_params={'V': np.cov(X_train, rowvar=False)})
10.05.2021

2

См. здесь. Я думаю, что он требует ковариации между функциями вместо выборок.

12.05.2020
  • Когда вы отвечаете здесь, обычно предпочтительнее указывать свой код в ответе, а не ссылаться на github. 12.05.2020
  • Новые материалы

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

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

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

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

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

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

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