在做某些实验时,我们通常在 70% 上进行训练,在 33% 上进行测试。但是,当您的模型投入生产时会发生什么?可能会发生以下情况:
训练集:
-----------------------
| Ser |Type Of Car |
-----------------------
| 1 | Hatchback |
| 2 | Sedan |
| 3 | Coupe |
| 4 | SUV |
-----------------------
经过 One-Hot 编码后,我们得到的是:
-----------------------------------------
| Ser | Hatchback | Sedan | Coupe | SUV |
-----------------------------------------
| 1 | 1 | 0 | 0 | 0 |
| 2 | 0 | 1 | 0 | 0 |
| 3 | 0 | 0 | 1 | 0 |
| 4 | 0 | 0 | 0 | 1 |
-----------------------------------------
我的模型已经过训练,现在我想将其部署到多个经销商。
该模型针对 4 个特征进行训练。现在,某经销商只销售轿车和轿跑车:
测试集:
-----------------------
| Ser |Type Of Car |
-----------------------
| 1 | Coupe |
| 2 | Sedan |
-----------------------
One-Hot 编码结果为:
---------------------------
| Ser | Coupe | Sedan |
---------------------------
| 1 | 1 | 0 |
| 2 | 0 | 1 |
| 3 | 1 | 0 |
---------------------------
这里我们的测试集只有 2 个特征。为每个新经销商建立一个模型是没有意义的。生产中遇到此类问题如何处理?是否有其他编码方法可用于处理分类变量?
我假设您正在使用 pandas 进行单热编码。如果没有,你必须做更多的工作,但逻辑仍然是一样的。
import pandas as pd
known_categories = ['Sedan','Coupe','Limo'] # from training set
car_type = pd.Series(['Sedan','Ferrari']) # new category in production, 'Ferrari'
car_type = pd.Categorical(car_type, categories = known_categories)
pd.get_dummies(car_type)
结果是
Sedan Coupe Limo
0 1.0 0.0 0.0 # Sedan entry
1 0.0 0.0 0.0 # Ferrari entry
由于法拉利不在已知类别列表中,因此法拉利的所有 1 ot 编码条目均为零。如果您在生产数据中发现新的车型,则编码该车型的行应全部为 0。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)