Как избавиться от этой ошибки: «ValueError:« 00 »нет в списке»? - PullRequest
0 голосов
/ 30 января 2019

Я новичок в python и пытаюсь разрешить наивный алгоритм Байеса (полиномиальная модель), но в моем коде есть некоторые ошибки.

Вот алгоритм: enter image description hereВот мой код:

from collections import Counter
import nltk
from nltk.corpus import stopwords

def CountDocs(D):
    D_length = X_train_counts.shape[0] # number of documents
    return D_length

def ExtractVocabulary(D):
    vectorizer = CountVectorizer()
    X = vectorizer.fit_transform(D.data)
    return vectorizer.get_feature_names()


def CountDocsInClass(c):
    data_from_class = fetch_20newsgroups(subset='train', categories=[c]).data
    return len(data_from_class)

def ConcatenateTextOfAllDocsInClass(data_from_class):
    for i in range(0, len(data_from_class)):
        if i not in stop_words:
            text += word_tokenize[i]
    return text

def TrainMultinomialNB(C,D):
    V = D.data
    N = CountDocs(D)
    ClassLength = {}
    prior = {}
    condprob = {}

    for c in C:
        class_length = CountDocsInClass(c)
        print(data_from_class)
        ClassLength.update({c: nc})
        prior.update({c:class_length/N})

        textC = ConcatenateTextOfAllDocsInClass(c)

        T_ct = Counter(textC)
        T_ct_sum = sum(T_ct[t] + 1 for t in V)

        for t in V:
            if t not in condprob:
                condprob.update({t: {c: (T_ct[t] + 1)/T_ct_sum}})
            else:
                condprob[t].update({c: (T_ct[t] + 1)/T_ct_sum})

    return V, prior, condprob

TrainMultinomialNB(feature_names, twenty_train)

Данные, к которым я применяю этот алгоритм: переменная feature_names представляет классы, а переменная twenty_train представляет обучающий набор.x_train_counts используется выше этого кода, и это: X_train_counts = count_vect.fit_transform(twenty_train.data) Переменная data_from_class загружает набор данных 20 Newsgrous - набор из 12 тыс. Документов, сгруппированных по c различным категориям

Ошибки: enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...