当前位置: 首页 > 面试题库 >

ValueError:尺寸不匹配

云航
2023-03-14
问题内容

我使用SciPy和scikit-learn来训练和应用多项朴素贝叶斯分类器进行二进制文本分类。准确地讲,我使用该模块sklearn.feature_extraction.text.CountVectorizer来创建稀疏矩阵,该稀疏矩阵包含来自文本的单词特征计数,并使用该模块sklearn.naive_bayes.MultinomialNB作为分类器实现,用于在训练数据上训练分类器并将其应用于测试数据。

的输入CountVectorizer是表示为unicode字符串的文本文档列表。训练数据比测试数据大得多。我的代码如下所示(简化):

vectorizer = CountVectorizer(**kwargs)

# sparse matrix with training data
X_train = vectorizer.fit_transform(list_of_documents_for_training)

# vector holding target values (=classes, either -1 or 1) for training documents
# this vector has the same number of elements as the list of documents
y_train = numpy.array([1, 1, 1, -1, -1, 1, -1, -1, 1, 1, -1, -1, -1, ...])

# sparse matrix with test data
X_test = vectorizer.fit_transform(list_of_documents_for_testing)

# Training stage of NB classifier
classifier = MultinomialNB()
classifier.fit(X=X_train, y=y_train)

# Prediction of log probabilities on test data
X_log_proba = classifier.predict_log_proba(X_test)

问题:一 接到MultinomialNB.predict_log_proba()电话,我就知道了ValueError: dimension mismatch。根据下面的IPython stacktrace,该错误发生在SciPy中:

/path/to/my/code.pyc
--> 177         X_log_proba = classifier.predict_log_proba(X_test)

/.../sklearn/naive_bayes.pyc in predict_log_proba(self, X)
    76             in the model, where classes are ordered arithmetically.
    77         """
--> 78         jll = self._joint_log_likelihood(X)
    79         # normalize by P(x) = P(f_1, ..., f_n)
    80         log_prob_x = logsumexp(jll, axis=1)

/.../sklearn/naive_bayes.pyc in _joint_log_likelihood(self, X)
    345         """Calculate the posterior log probability of the samples X"""
    346         X = atleast2d_or_csr(X)
--> 347         return (safe_sparse_dot(X, self.feature_log_prob_.T)
    348                + self.class_log_prior_)
    349

/.../sklearn/utils/extmath.pyc in safe_sparse_dot(a, b, dense_output)
    71     from scipy import sparse
    72     if sparse.issparse(a) or sparse.issparse(b):
--> 73         ret = a * b
    74         if dense_output and hasattr(ret, "toarray"):
    75             ret = ret.toarray()

/.../scipy/sparse/base.pyc in __mul__(self, other)
    276 
    277             if other.shape[0] != self.shape[1]:
--> 278                 raise ValueError('dimension mismatch')
    279 
    280             result = self._mul_multivector(np.asarray(other))

我不知道为什么会发生此错误。有人可以向我解释一下并提供解决此问题的方法吗?在此先多谢!


问题答案:

在我看来,就像您只需要vectorizer.transform用于测试数据集一样,因为训练数据集可以修复词汇表(毕竟您不知道完整的词汇表,包括训练集)。请注意,多数民众赞成vectorizer.transform代替vectorizer.fit_transform



 类似资料:
  • 环境: Win10 x64, .NET6.0 C# WinForm, VS Professional 2022 ,WPS PDF 虚拟打印机。 问题: C# WinForm 【打印预览】时尺寸正确, 但打印到 【WPS PDF 虚拟打印机】或【真打印机】时尺寸就不正确了。请问如何解决? 不要用第三方插件。

  • 我写了这段代码。我的输入形状是(100 x100 X3)。我是深度学习的新手。我花了这么多时间在这个问题上,但无法解决这个问题。任何帮助都非常感谢。 错误:在[15]:运行文件('/user/Project/SM/src/ann\u algo\u keras.py',wdir='/user/Project/SM/src')中随机启动突触权重:模型:“sequential\u 3” conv2d_1

  • 主要内容:jQuery 尺寸方法,jQuery 尺寸,jQuery width() 和 height() 方法,实例,jQuery innerWidth() 和 innerHeight() 方法,实例,jQuery outerWidth() 和 outerHeight() 方法,实例通过 jQuery,很容易处理元素和浏览器窗口的尺寸。 jQuery 尺寸方法 jQuery 提供多个处理尺寸的重要方法: width() height() innerWidth() innerHeight() ou

  • 当我有一个最大宽度为80vw、最大高度为80vh的容器时,其中包含的图像与对象匹配:contain不一致。图像具有高度:100%和宽度:100%以及对象匹配:包含,但图像的最短尺寸会使容器充满较长尺寸溢出。 请查看此url: https://mutatedllama.pythonanywhere.com/share/7h25JNbi 有人能帮我理解我哪里做错了吗?

  • 在CSS中,通过 width 和 height 属性来定义一个盒子的宽度和高度,可以用长度值或百分比来设置,不允许负值。使用百分比时,根据父元素的宽度进行计算盒子的宽度,根据父元素的高度进行计算盒子的高度。 如果一个盒子没有显式定义 width 属性,则宽度的计算结果跟定位类型相关:静态定位或相对定位的盒子,其宽度为父元素宽度的100%;绝对定位和浮动的盒子,其宽度根据所包含内容自动扩展,最大宽度

  • CSS 尺寸 (Dimension) 属性允许你控制元素的高度和宽度。同样,它允许你增加行间距。 更多实例 设置元素的高度 这个例子演示了如何设置不同元素的高度。 使用百分比设置图像的高度 这个例子演示了如何使用百分比值设置元素的高度。 使用像素值来设置元素的宽度 本例演示如何使用像素值来设置元素的宽度。 设置元素的最大高度 此示例演示如何设置元素的最大高度。 使用百分比来设置元素的最大宽度 本例