【发布时间】:2017-05-11 04:22:50
【问题描述】:
我正在 python 中构建一个预测模型,其中包含两个单独的训练和测试集。训练数据包含数字类型的分类变量,例如邮政编码,[91521,23151,12355, ...],还有字符串分类变量,例如,城市 ['Chicago', 'New York', 'Los Angeles', ...]。
为了训练数据,我首先使用 'pd.get_dummies' 来获取这些变量的虚拟变量,然后用转换后的训练数据拟合模型。
我对我的测试数据进行相同的转换,并使用经过训练的模型预测结果。但是,我得到了错误
ValueError: Number of features of the model must match the input. Model n_features is 1487 and input n_features is 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
【问题讨论】:
标签: python dataframe scikit-learn prediction dummy-variable