【发布时间】:2019-02-07 04:47:37
【问题描述】:
我已经看到很多关于这个主题的问题,但找不到任何明确的答案来解决我的问题: 我使用以下代码保存模型:
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 应该等于 26,个数 训练时的特征
当我准备数据时,我使用:
df_dummies = pd.get_dummies(df)
我得到更多特征的原因是因为训练数据比预测数据大得多,因此分类的特征也更多。
我的问题是在不损害模型的情况下增加特征数量的最佳做法是什么?
谢谢
【问题讨论】:
-
您需要保留训练数据时使用的特征。
get_dummies在这里不好。改用 OneHotEncoder 并保存训练实例。并加载它以转换特征,就像您保存和加载最终模型一样。在 stackoverflow 中搜索类似问题。
标签: pandas scikit-learn classification pickle svc