合并数字和文本特征进行分类

2024-09-30 10:30:45 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图对产品进行分类,以便根据产品名称和基本价格预测其类别。在

例如(产品名称、价格、类别):

['notebook sony vaio vgn-z770td dockstation', 3000.0, u'MLA54559']

以前我只使用产品名称的预测任务,但我想包括价格,看看是否准确性提高。在

我的代码的问题是我不能合并文本/数字特征,我在这里读了一些问题,这是我的代码摘录:

^{pr2}$

我尝试将数据类型与稀疏.hstack但我得到了以下错误:

ValueError: blocks[0,:] has incompatible row dimensions

我想问题出在X_train_price(价格列表)上,但我不知道如何格式化稀疏函数才能成功地工作。在

两个阵列的形状如下:

>>> X_train_tfidf.shape
(65845, 23136)
>>>X_train_price.shape
(65845,)

Tags: 代码产品分类train价格类别pricenotebook
1条回答
网友
1楼 · 发布于 2024-09-30 10:30:45

在我看来,这应该像堆叠数组一样简单。如果scikitlearn遵循我熟悉的约定,那么X_train_tfidf中的每一行都是一个训练数据点,总共有65845个点。所以你只需要做一个hstack,就像你说的那样。在

但是,您需要确保尺寸是兼容的!在香草numpy中,否则会出现此错误:

>>> a = numpy.arange(15).reshape(5, 3)
>>> b = numpy.arange(15, 20)
>>> numpy.hstack((a, b))
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/
        Extras/lib/python/numpy/core/shape_base.py", line 270, in hstack
    return _nx.concatenate(map(atleast_1d,tup),1)
ValueError: arrays must have same number of dimensions

重塑b以获得正确的维度,注意形状(5,)的一维数组与形状(5, 1)的二维数组完全不同。在

^{pr2}$

所以在您的例子中,您需要一个形状为(65845, 1)的数组,而不是(65845,)。我可能遗漏了一些东西,因为您正在使用稀疏数组。尽管如此,原则应该是一样的。基于以上代码,我不知道您使用的是什么稀疏格式,所以我只选择了一个进行测试:

>>> a = scipy.sparse.lil_matrix(numpy.arange(15).reshape(5, 3))
>>> scipy.sparse.hstack((a, b.reshape(5, 1))).toarray()
array([[ 0,  1,  2, 15],
       [ 3,  4,  5, 16],
       [ 6,  7,  8, 17],
       [ 9, 10, 11, 18],
       [12, 13, 14, 19]])

相关问题 更多 >

    热门问题