【问题标题】:Cross-validation for paragraph-vector model段落向量模型的交叉验证
【发布时间】:2019-05-29 00:36:28
【问题描述】:

我在尝试对段落向量模型应用交叉验证时遇到了一个错误:

import numpy as np
import pandas as pd
from sklearn.linear_model import LogisticRegression
from sklearn.model_selection import cross_val_score
from sklearn.pipeline import Pipeline
from gensim.sklearn_api import D2VTransformer

data = pd.read_csv('https://pastebin.com/raw/bSGWiBfs')
np.random.seed(0)

X_train = data.apply(lambda r: simple_preprocess(r['text'], min_len=2), axis=1)
y_train = data.label

model = D2VTransformer(size=10, min_count=1, iter=5, seed=1)
clf = LogisticRegression(random_state=0)

pipeline = Pipeline([
        ('vec', model),
        ('clf', clf)
    ])

pipeline.fit(X_train, y_train)

score = pipeline.score(X_train, y_train)
print("Score:", score) # This works
cval = cross_val_score(pipeline, X_train, y_train, scoring='accuracy', cv=3)
print("Cross-Validation:", cval) # This doesn't work

密钥错误:0

我尝试将cross_val_score 中的X_train 替换为model.transform(X_train) 或model.fit_transform(X_train)。此外,我对原始输入数据 (data.text) 进行了同样的尝试,而不是预处理文本。我怀疑X_train 的交叉验证格式一定有问题,而管道的.score 函数工作得很好。我还注意到cross_val_score 与CountVectorizer() 一起使用。

有人发现错误吗?

【问题讨论】:

    标签: scikit-learn transform cross-validation gensim


    【解决方案1】:

    不,这与model 的转换无关。它与cross_val_score有关。

    cross_val_score 将根据cv 参数拆分提供的数据。为此,它将执行以下操作:

    for train, test in splitter.split(X_train, y_train):
        new_X_train, new_y_train = X_train[train], y_train[train]
    

    但是您的 X_train 是一个 pandas.Series 对象,其中基于索引的选择不能像这样工作。看到这个:https://pandas.pydata.org/pandas-docs/stable/indexing.html#selection-by-position

    改变这一行:

    X_train = data.apply(lambda r: simple_preprocess(r['text'], min_len=2), axis=1)
    

    到:

    # Access the internal numpy array
    X_train = data.apply(lambda r: simple_preprocess(r['text'], min_len=2), axis=1).values
    
    OR
    
    # Convert series to list
    X_train = data.apply(lambda r: simple_preprocess(r['text'], min_len=2), axis=1).tolist()
    

    【讨论】:

      猜你喜欢
      • 2013-05-19
      • 2014-02-18
      • 2013-12-08
      • 1970-01-01
      • 2016-05-26
      • 2020-03-26
      • 2015-12-22
      • 2015-05-01
      • 2017-01-27
      相关资源
      最近更新 更多