【问题标题】:SklearnClassifier object has no attribute _vectorizerSklearnClassifier 对象没有属性 _vectorizer
【发布时间】:2014-11-13 00:04:17
【问题描述】:

我买了一台新笔记本电脑并安装了最新版本的 NLTK 和 SciKit-Learn。我正在使用旧脚本进行情绪分析,该脚本加载了我今年早些时候创建的旧泡菜,我收到了以下错误。似乎来自 NLTK 的 SciKitClassifier 包装器现在具有属性 _vectorizer ,而它以前没有。

  File "c:\users\yoprado\pycharmprojects\gnip_sentiment\gnip_sentiment\main.py", line 64, in mongoaddsentiment
    MongoSentiment(mongo_server, mongo_port, dbname, colname, pickle_file)
  File "c:\users\yoprado\pycharmprojects\gnip_sentiment\gnip_sentiment\MongoSentiment.py", line 61, in MongoSentiment
    senti = classifier_eng.classify(get_features(cleanedBody.split()))
  File "C:\Python27\lib\site-packages\nltk-3.0.0-py2.7-win32.egg\nltk\classify\api.py", line 54, in classify
    return self.classify_many([featureset])[0]
  File "C:\Python27\lib\site-packages\nltk-3.0.0-py2.7-win32.egg\nltk\classify\scikitlearn.py", line 84, in classify_many
    X = self._vectorizer.transform(featuresets)
AttributeError: 'SklearnClassifier' object has no attribute '_vectorizer'

我使用了之前创建分类器 pickle 的相同脚本,新的 pickle 似乎工作得很好。代码中的某些内容似乎已通过最近的更新进行了修改。有什么办法可以将当前的pickle转换成新的格式?

谢谢

【问题讨论】:

    标签: python scikit-learn nltk pickle


    【解决方案1】:

    这个type of problem is a known issuesklearn。更新到最新版本的软件包后,我在对训练有素的 sklearn 模型进行脱酸处理时遇到了同样的一般问题。无论出于何种原因,版本之间通常没有足够的一致性,因此您可以可靠地从以前的版本中提取经过训练的模型。当您最初腌制经过训练的分类器时,它会序列化对内部未序列化的函数的调用。因此,当您 depickle 时,它​​会反序列化调用,但会调用该函数的新版本,该函数不再采用相同的参数或具有相同的属性(在您的情况下为 _vectorizer)。您有两个选择:(1) 使用新版本重新训练模型或 (2) 安装您使用的先前版本,而不是最新版本的 sklearn。

    【讨论】:

    • 我知道这是一个版本兼容性,感谢您的关注!
    【解决方案2】:

    如果您要使用dill 而不是pickle 来序列化sklearn 模型,那么即使版本发生更改,您也应该能够恢复分类器。如果你使用pickle,类实例的序列化只会保存一些相关的状态,但会引用类定义……所以如果定义发生变化,你对旧的泡菜就不走运了。默认情况下,dill 将类定义与类实例一起腌制……因此,即使类定义发生更改,您也可以取消保存的实例——并希望从旧的类实例中提取您需要的内容。例如,您可以将状态从旧分类器对象转移到新分类器对象,然后使用闪亮的新对象继续生活。唯一需要注意的是,您必须提前计划并首先使用dill 进行序列化——如果您不这样做,那么您就不走运了。

    【讨论】:

      猜你喜欢
      • 2019-08-04
      • 2017-03-12
      • 1970-01-01
      • 1970-01-01
      • 2012-12-01
      • 2021-08-03
      • 2015-08-03
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多