我正在使用两个单独的训练和测试集建立python中的预测模型。训练数据包含数字类型的分类变量,例如邮政编码[91521,23151,12355,...],以及字符串分类变量,例如城市['芝加哥','纽约','洛杉矶' ...]。为了训练数据,我首先使用'pd.get_dummies'来获得这些变量的虚拟变量,然后用变换后的训练数据拟合模型。在训练和测试数据中保持相同的虚拟变量
我对测试数据做了相同的转换,并使用训练好的模型预测结果。但是,我得到了错误'ValueError:模型的特征数量必须与输入匹配。模型n_特征是1487,输入n_特征是1345'。原因是测试数据中的虚拟变量较少,因为它具有较少的“城市”和“邮编”。
我该如何解决这个问题?例如,'OneHotEncoder'将只编码所有数字类型的分类变量。 'DictVectorizer()'将只编码所有字符串类型的分类变量。我在网上搜索,看到一些类似的问题,但没有一个真正解决我的问题。
Handling categorical features using scikit-learn
https://www.quora.com/What-is-the-best-way-to-do-a-binary-one-hot-one-of-K-coding-in-Python