WedX - журнал о программировании и компьютерных науках

наивный метод байесовской подгонки Изменить форму массива

Я пытаюсь создать вложение предложений путем объединения векторов слов. Вот код, который я написал:

a=np.zeros(100, dtype=float)
    try:
        a=embedding_dict[ line[0] ] ## get first word embedding;
    except KeyError:
        print ( "Error")
    for k in range(1,len(line)):
        try:
            b=np.zeros(100, dtype=float)
            b=embedding_dict[ line[k] ]
            a=np.concatenate([a,b])
        except KeyError:
            print ( "Error")
        length=len(a)
    if length > 1500: 
        #Reduce Size
        print("Reduction of SIze")
        result_arr = a[:1500]
        # result_arr = truncated_arr[None, :]
    else:
        #Padd
        print("padding")
        result_arr=np.pad(a, (0, 1500 - len(a)%1500), 'constant')
    print(  " result_arr.shape before ",result_arr.shape )
    # test = result_arr.reshape(1, -1)
    # print(  " result_arr.shape before ",test.shape )

    sentence_Vectors.append(result_arr)

Я использую наивный байес для классификации:

nb = MultinomialNB()
nb.fit(X_train, y_train)
y_pred = nb.predict(X_val)
print('naive bayes using sentence embedding accuracy%s' % accuracy_score(y_pred, y_val))

и ошибка выдается в методе nb.fit

Traceback (most recent call last):
  File "ConcatEmbedding.py", line 121, in <module>
    nb.fit(X_train, y_train)
  File "/usr/local/lib/python2.7/site-packages/sklearn/naive_bayes.py", line 585, in fit
    X, y = check_X_y(X, y, 'csr')
  File "/usr/local/lib/python2.7/site-packages/sklearn/utils/validation.py", line 756, in check_X_y
    estimator=estimator)
  File "/usr/local/lib/python2.7/site-packages/sklearn/utils/validation.py", line 552, in check_array
    "if it contains a single sample.".format(array))
ValueError: Expected 2D array, got 1D array instead:

Я уже пытался изменить форму (1,-1) и просмотрел это сообщение но бесполезно.

12.02.2020

Ответы:


1

x.reshape(-1,1) не x.reshape(1,-1). Вам нужны 100 образцов с 1 функцией, а не 1 образец со 100 функциями.

import numpy as np
from sklearn.naive_bayes import MultinomialNB

x = np.random.random(100)
y = np.random.randint(0,2,size=100)

x = x.reshape(-1,1)
print(x.shape)

nb = MultinomialNB()

nb.fit(x, y)
nb.predict(x)
12.02.2020
Новые материалы

Как создать диаграмму градиентной кисти с помощью D3.js
Резюме: Из этого туториала Вы узнаете, как добавить градиентную кисть к диаграмме с областями в D3.js. Мы добавим градиент к значениям SVG и применим градиент в качестве заливки к диаграмме с..

Я хотел выучить язык программирования MVC4, но не мог выучить его раньше, потому что это выглядит сложно…
Просто начните и учитесь самостоятельно Я хотел выучить язык программирования MVC4, но не мог выучить его раньше, потому что он кажется мне сложным, и я бросил его. Это в основном инструмент..

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

Объяснение документов 02: BERT
BERT представил двухступенчатую структуру обучения: предварительное обучение и тонкая настройка. Во время предварительного обучения модель обучается на неразмеченных данных с помощью..

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

Работа с цепями Маркова, часть 4 (Машинное обучение)
Нелинейные цепи Маркова с агрегатором и их приложения (arXiv) Автор : Бар Лайт Аннотация: Изучаются свойства подкласса случайных процессов, называемых дискретными нелинейными цепями Маркова..

Crazy Laravel Livewire упростил мне создание электронной коммерции (панель администратора и API) [Часть 3]
Как вы сегодня, ребята? В этой части мы создадим CRUD для данных о продукте. Думаю, в этой части я не буду слишком много делиться теорией, но чаще буду делиться своим кодом. Потому что..


Для любых предложений по сайту: [email protected]