繁体   English   中英

如何提取熊猫数据框和稀疏矩阵之间的相同列

[英]How to extract identical columns between a pandas dataframe and a sparse matrix

我目前有一个小型的tf-idf功能训练集(每个单词约250列),我手动将它们手动标记为1和0。 训练集很小,主要是因为要花更多时间标记更多数据,我想看看模型在这个小训练集上的表现如何。 因为数据很小,所以我使用tf-idf创建了功能并将其转换为pandas数据框。 因此,举一个最小的例子可以更好地了解我在说什么,比如说在培训中我只有:

              Hello great car    target variable
great car        0   .35 .25            1 
Hello great car  .40   .15 .10          0

现在,我对测试集进行了完全相同的操作。 但是,与训练集相比,测试集非常庞大

            car great plane boring yoo nice dude man jump fancy japan target
car japan  .53  0     0     0      0   0    0    0   0    0      .60   1
man car yoo .53 0     0     0      .30 0    0    .15 0    0        0   0
jump        0   0     0     0      0   0    0    0   .45  0        0   1

实际上,上面的测试集比训练集的行数大数千倍,因此,由于这个原因,它具有更多的功能(我将这些词设为tf-idfed)。 现在,因为是这样,所以我只能将tf-idf放入稀疏矩阵而不是pandas数据框中,因此输出当前显示:

<1383329x27870 sprase matrix fo type ',class 'numpy.float'>' with 15874611 stored elements in Compressed Sparse Row format>

我唯一的问题是,为了.fit()和.predict(),机器学习模型的训练和测试集中需要相等数量的输入x功能,所以我想做的就是摆脱测试集中没有的测试集(有一吨),但是我不确定如何比较稀疏矩阵和熊猫数据框? 通常,当我比较大熊猫数据帧时,我只是做ax ['y']。isin [a ['b']]并过滤掉这两个共同的所有列。 比较熊猫数据框和稀疏矩阵时,不确定如何做同样的事情?

看,这是您将如何做的草图

documents = [
    'the quick brown fox jumped over the lazy dog',
    'the name of the game is pain',
    'what is in a name? Is a rose as sweet by any other name',
    'the world is a world of many people',
    'i am running out of things to write',
    'yeah now I am totally out of things to write'
]

from sklearn.feature_extraction.text import TfidfVectorizer

# train test splitting, of course, you wouldn't do it this way...
import random
random.shuffle(documents)
train, test = documents[:len(documents)//2], documents[len(documents)//2:]


vectorizer = TfidfVectorizer()
Xtrain = vectorizer.fit_transform(train)
Xtest = vectorizer.transform(test)

当然,这不是您实际进行火车测试拆分/交叉验证的方式。 有各种各样的方法可以解决此问题,这只是该主题的众多指南之一

现在,您可以执行以下操作:

from sklearn.fancy_model import FancyModel

model = FancyModel(param=42).fit(Xtrain, Ytrain) # assuming you have your labels
yhat_train = model.predict(Xtrain)
yhat_test = model.predict(Xtest)

# compare your metric based on yhat_train and yhat_test....

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM