sklearn模型用于新数据

时间:2019-07-07 21:46:58

标签: scikit-learn dictvectorizer

使用scikit的DictVectorizer制作特征向量

X = dataset.drop('Tag', axis=1)
v = DictVectorizer(sparse=False)
X = v.fit_transform(X.to_dict('records')) 
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size = 0.33, random_state=0)
classes = np.unique(y)
classes = classes.tolist()
per = Perceptron(verbose=10, n_jobs=-1, max_iter=5)
per.partial_fit(X_train, y_train, classes)
joblib.dump(per, 'saved_model.pkl') 

并将经过修剪的模型保存到文件中。 将模型加载到另一个文件中以获取新日期

new_X=df
v = DictVectorizer(sparse=False)
new_X = v.fit_transform(new_X.to_dict('records'))
#Load model
per_load = joblib.load('saved_model2.pkl')
per_load.predict(new_X)

我尝试预测新数据执行此代码时,输​​出为 Value error

  

ValueError:每个样本X具有43个功能;期望983

如何保存模型?

1 个答案:

答案 0 :(得分:0)

您还需要将泡菜对象保存到vectorizer中,并应用transform而不是fit_transform,因为您的vectorizer已经学习了词汇并且需要用于预测看不见的数据

 #use 
 import joblib

joblib.dump(v, 'vectorizer.pkl')

#loading pickle 
v =  joblib.load('vectorizer.pkl') 


per_load.predict(v.transform(["new comment"]) #don't use fit_transform , use transfom only