Pandas 加载模型和预测数据之间的特征不匹配-scikit学习SVC

Pandas 加载模型和预测数据之间的特征不匹配-scikit学习SVC,pandas,scikit-learn,classification,pickle,svc,Pandas,Scikit Learn,Classification,Pickle,Svc,我已经看到了很多关于这个话题的问题,但找不到任何明确的答案来解决我的问题: 我使用以下代码保存模型: clf = SVC(gamma=1,C=1) clf.fit(X_train,y_train) # save the model to disk filename = 'finalized_model.sav' pickle.dump(clf, open(filename, 'wb')) 然后,我用不同的文件加载它: # load the model from disk fname = 'fi

我已经看到了很多关于这个话题的问题,但找不到任何明确的答案来解决我的问题: 我使用以下代码保存模型:

clf = SVC(gamma=1,C=1)
clf.fit(X_train,y_train)
# save the model to disk
filename = 'finalized_model.sav'
pickle.dump(clf, open(filename, 'wb'))
然后,我用不同的文件加载它:

# load the model from disk
fname = 'finalized_model.sav'
clf = pickle.load(open(fname, 'rb'))
y_pred = clf.predict(df_live)
我得到这个错误:

ValueError:X.shape[1]=22应等于 训练时的特点

当我准备数据时,我使用:

df_dummies = pd.get_dummies(df)
我得到更多特征的原因是因为训练数据比预测数据大得多,因此分类特征更多

我的问题是,在不损害模型的情况下,增加功能数量的最佳实践是什么


谢谢

一般来说,您可以执行以下操作来处理丢失的数据,但如果缺少整个功能,除非您能够为丢失的四个功能提供有意义的值,否则您最好在安装之前将它们从
X\u train
中删除。

谢谢。但该模型几乎每天都需要在新数据上运行。这意味着它们每次都可能因功能不同而有所不同。你的意思是我应该在每次运行预测模型时进行拟合,并在根据预测特征进行拟合之前从X_序列中删除不相关的特征吗?视情况而定。如果您想坚持单一模型(如果估算速度慢,出于实际原因,或者如果您已经验证了模型并确定它有用,那么您的设置听起来像是可以插补的)。如果您有足够的数据,您可以随时对您提出的解决方案进行测试,并查看其性能。您需要保留在培训数据时使用的功能
get_dummies
在这里不好。改用OneHotEncoder并保存培训实例。并在保存和加载最终模型时加载它以变换特征。搜索类似的问题。