【问题标题】:Python sklearn MultinomialNB: Dimension mismatch using DictVectorizerPython sklearn MultinomialNB:使用 DictVectorizer 的维度不匹配
【发布时间】:2018-10-04 03:00:27
【问题描述】:

我正在尝试做MultinomialNB。我得到了Value Error: dimension mismatch

我将DictVectorizer 用于训练数据,LabelEncoder 用于课程。

这是我的代码:

def create_token(inpt):
    return inpt.split(' ')

def tok_freq(inpt):
    tok = {}
    for i in create_token(inpt):
        if i not in tok:
            tok[i] = 1
        else:
            tok[i] += 1
    return tok

training_data = []
for i in range(len(raw_data)):
    training_data.append((get_freq_of_tokens(raw_data.iloc[i].text), raw_data.iloc[i].category))

#vectorization
X, y = list(zip(*training_data))
label = LabelEncoder()
vector = DictVectorizer(dtype=float, sparse=True)
X = vector.fit_transform(X)
y = label.fit_transform(y)
multinb = mnb()
multinb.fit(X,y)

#vectorization for testing set
Xz = tok_freq(sms)
testX = vector.fit_transform(Xz)

multinb.predict(testX)

我的代码的哪一部分是错误的?谢谢。

【问题讨论】:

    标签: python-3.x scikit-learn valueerror dictvectorizer


    【解决方案1】:

    改变

    testX = vector.fit_transform(Xz)
    

    到:

    testX = vector.transform(Xz)
    

    当您执行fit()fit_transform() 时,您实际上是在针对新数据训练矢量化器,这不是您想要的。您只想以与训练集相同的方式转换测试集,因此只需调用transform()

    【讨论】:

      猜你喜欢
      • 2018-01-14
      • 2018-11-04
      • 2013-02-17
      • 1970-01-01
      • 2018-01-29
      • 2016-04-02
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多