几周前,我使用scikit-learn,nltk和spacy构建了一些NLP预测模型。我利用sci-kit的管道功能构建了模型。最终的功能集由文本和数字功能组成,因此在将所有内容输入分类器之前,我将使用ColumnTransformer将不同的功能应用于不同的列。分类器运行没有问题,我使用集成在scikit-learn中的GridSearchCV/RandomSearchCV
函数保存了经过训练的joblib.dump
模型。
前天,我需要根据这些模型进行一些预测,因此我使用joblib.load()
重新加载了一些模型-它们可以正常工作。
但是昨天,由于更新时出现了一个错误,我不得不重新安装Anaconda,该错误删除了大多数软件包和命令promt(有关参考,请参见https://github.com/ContinuumIO/anaconda-issues/issues/8794https://github.com/ContinuumIO/anaconda-issues/issues/8794)-我认为快速重新安装比解决方法要快-现在我知道
现在的问题是:当我尝试使用模型基于已保存的joblib模型进行预测时,出现错误:
'ColumnTransformer'对象没有属性'verbose'并且无法运行预测
我尝试了不同版本的scikit,因为它向我显示了警告:
“ C:\ Users \ Lenovo \ Anaconda3 \ lib \ site-packages \ sklearn \ externals \ joblib__init __。py:15:弃用警告:sklearn.externals.joblib在0.21中已弃用,在0.23中将被删除。请导入可以直接从joblib中安装以下功能:pip install joblib。如果在加载腌制模型时出现此警告,则可能需要使用scikit-learn 0.21+重新序列化这些模型。warnings.warn(msg,category = DeprecationWarning )”
但是,这没有帮助。
由于在128GB的计算机上训练这些模型花了7个小时以上,因此我尝试使用减少的数据集运行原始代码进行模型训练-一切正常,我可以在原始配置中使用列变换器,而不会出现问题。
这里有一些示例代码
import pandas as pd
import numpy as np
from sklearn.feature_extraction.text import CountVectorizer
from sklearn.feature_extraction.text import TfidfVectorizer
from sklearn.pipeline import Pipeline, make_pipeline, FeatureUnion
from sklearn.linear_model import LogisticRegression
from sklearn import linear_model
from sklearn.model_selection import cross_val_score, GridSearchCV, RandomizedSearchCV, KFold
from sklearn.metrics import roc_auc_score
from sklearn.base import TransformerMixin, BaseEstimator
from sklearn.feature_extraction import text
import nltk
from sklearn.externals import joblib
from sklearn.preprocessing import StandardScaler
from sklearn.model_selection import cross_validate
from pprint import pprint
X = joblib.load("dir/X.joblib")
y = joblib.load ("dir/y.joblib")
#load model
model = joblib.load("dir/model.joblib")
model.predict()
然后返回上述错误:
ColumnTransformer'对象没有'verbose'属性。
原始代码中带有ColumnTransformer的部分看起来像这样:
preprocessor = ColumnTransformer(
transformers = [
("LDA", LDA_transformer, Text_features ),
("Count_words", Count_transformer, Text_features),
("LIWC_emb", "passthrough", rest_columns)
])
由于这是第一次在这里提出问题,我希望我包括了所有必要的信息。
谢谢!