sklearn 模型用于新数据
sklearn model use for new data
使用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 has 43 features per sample; expecting 983
如何保存模型?
您还需要为 vectorizer 保存 pickle 对象并应用 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
使用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 has 43 features per sample; expecting 983
如何保存模型?
您还需要为 vectorizer 保存 pickle 对象并应用 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