我正在使用Python构建一个预测模型,其中包含两个单独的训练和测试数据集。训练数据包含数值类型的分类变量,例如邮政编码[91521、23151、12355,...],以及字符串类型的分类变量,例如城市['芝加哥'、'纽约'、'洛杉矶',...]。
为了训练数据,我首先使用“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
原因是测试数据中有较少的虚拟变量,因为它具有较少的'city'和'zipcode'。如何解决这个问题?例如,'OneHotEncoder'只会对所有数字类型的分类变量进行编码。 'DictVectorizer()'仅对所有字符串类型的分类变量进行编码。我在网上搜索并看到了一些类似的问题,但没有一个真正回答了我的问题。
train, test = train.align(test, axis=1)
替代最后一行。 - Ammar Alyousfi