当前位置: 首页 > 知识库问答 >
问题:

具有交叉验证的ngrams文本模型

凌成天
2023-03-14

在ngram模型(字符ngram或单词袋)中,我们需要确保测试数据的词汇不被用于拟合或训练模型。

这就是sklearn TfidfVectorizer函数对两个函数(fit和transform)所做的操作。

model = Pipeline([
        ('tfidf', TfidfVectorizer()),
        ('svc', SVC())
    ])
cv = cross_val_score(model, data['text'], data['label'], cv=5, scoring='accuracy', n_jobs=-1)

还是一开始就适合模型一次(第一次)?

共有1个答案

汝才良
2023-03-14

是的管道运行于每个cv步骤,因此对于cv的每个步骤,tfidf拟合仅用于列车折叠,转换用于测试和测试折叠

from sklearn.pipeline import Pipeline
from sklearn.base import BaseEstimator
from sklearn import linear_model
from sklearn.model_selection import cross_val_score
class Estimator(BaseEstimator):
    def fit(self,x,y=None):
        print ("inside fit:",x)
        return self
    def transform(self, x):
        print ("inside transform", x)
        return x
    def score(self,x,y):
        return 1
model = Pipeline([("e", Estimator()), ('l', linear_model.Lasso())])
cross_val_score(model, np.arange(15).reshape(3,5), np.arange(3), cv=3)
 类似资料:
  • 我有一个相对大的数据: 超过37万个观测数据,分类因变量有250个水平,10个自变量包括数值变量和分类变量。 下面是我的代码: 有人告诉我包'CV tools'或'cert'可以预形成k-folds CV,但我仍然不能成功地执行这些包或函数。

  • 我试图得到F1,LSTM模型交叉验证的精度和召回率。 我知道如何显示精度,但当我尝试使用交叉验证显示其他指标时,我会得到许多不同的错误。 我的代码如下: 我得到的错误如下: 纪元1/1 1086/1086 [==============================] - 18s 17ms/阶跃损失: 0.6014-acc: 0.7035 ----------------------------

  • 交叉验证 那么什么时候才需要交叉验证呢?交叉验证用在数据不是很充足的时候。比如在我日常项目里面,对于普通适中问题,如果数据样本量小于一万条,我们就会采用交叉验证来训练优化选择模型。如果样本大于一万条的话,我们一般随机的把数据分成三份,一份为训练集(Training Set),一份为验证集(Validation Set),最后一份为测试集(Test Set)。用训练集来训练模型,用验证集来评估模型预

  • 问题内容: 我想通过交叉验证从Logistic回归模型预测概率。我知道您可以获取交叉验证分数,但是可以从predict_proba返回值而不是分数吗? 问题答案: 现在,这已作为scikit- learn版本0.18的一部分实现。您可以将’method’字符串参数传递给cross_val_predict方法。文档在这里。 例: 还要注意,这是新的sklearn.model_selection包的一

  • 我正在训练一个数据集,然后在其他数据集上测试它。

  • 密钥错误:0 我通过将中的替换为或来进行实验。此外,我尝试了对原始输入数据()进行同样的处理,而不是预处理文本。我怀疑用于交叉验证的的格式一定有问题,而用于管道的函数工作得很好。我还注意到与一起工作。 有人发现错误了吗?