How to solve Nameerror: name 'n' is not defined in train_test_split of scikit-learn 0.22 version without downgrading the version?

How to solve Nameerror: name 'n' is not defined in train_test_split of scikit-learn 0.22 version without downgrading the version?

我正在做情绪分析并使用 scikit 学习 train_test_split 功能。但是我收到 Nameerror: 'n' is not defined 即使我已经定义了它。在检查各种论坛后,我发现这个错误与 scikit learn 的新版本(0.19 之后)有关。所以给出的解决方案是将 scikit learn 降级到 0.19 版本,它会起作用。但我的问题是我正在使用 python 3.7 并使用 anaconda3、jupyter notebook 6.0.3,它没有降级到旧版本。

我该怎么办?如何解决这个问题?

def postprocess(data, n=1000000):
    data = data.head(n)
    data['tokens'] = data['Articles'].progress_map(tokenize)  ## progress_map is a variant of the map function plus a progress bar. Handy to monitor DataFrame creations.
    data = data[data.tokens != 'NC']
    data.reset_index(inplace=True)
    data.drop('index', inplace=True, axis=1)
    return data

data = postprocess(data)

x_train, x_test, y_train, y_test = train_test_split(np.array(data.head(n).tokens),
                                                    np.array(data.head(n).Sentiment), test_size=0.2)  

错误:

NameError Traceback (most recent call last) in ----> 1 x_train, x_test, y_train, y_test = train_test_split(np.array(data.head(n).tokens), 2 np.array(data.head(n).Sentiment), test_size=0.2)

NameError: name 'n' is not defined

提前致谢。

你似乎没有在你的 postprocess 函数之外的任何地方定义 n,而且听起来这种错误不太可能是由于最近版本中的 scikit-learn 错误(当声称类似的东西,你应该总是包括你自己的研究结果)。

无论如何,这很可能会起作用(前提是您的代码和数据没有其他问题):

n=1000000
data = postprocess(data, n=n)
x_train, x_test, y_train, y_test = train_test_split(np.array(data.head(n).tokens),
                                                    np.array(data.head(n).Sentiment), test_size=0.2)