You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何测试OneHotEncoder构建的pandas模型并传入单条VIN完成预测

实现方法

你需要完全复现训练阶段对VIN的预处理逻辑,核心是复用训练时已经拟合好的OneHotEncoder实例,不能重新训练编码器,具体步骤如下:

第一步:训练阶段留存预处理工具

你训练时的代码需要先把用到的编码器实例留存,不要丢弃,示例修正如下:

# 训练阶段的预处理代码,留存编码器
X_data = dataframe['VIN'].str.split(r"", expand=True).drop([0, 18], axis = 1)
# 实例化编码器并拟合训练数据,将该实例留存用于后续预测
onehot_encoder = OneHotEncoder(sparse_output=False) # 若你之前用默认稀疏输出可去掉sparse_output参数
x_data_encoded = onehot_encoder.fit_transform(X_data)

第二步:单VIN预测逻辑

对输入的单个VIN字符串,按如下流程处理后传入模型即可:

import numpy as np

def predict_vin_info(vin_str, encoder, model, model_label_mask, version_label_mask):
    # 1. 拆分VIN为单个字符,和训练时拆分逻辑完全对齐
    # 拆分后得到长度为17的字符列表,对应训练时X_data的17列
    vin_char_list = list(vin_str)
    # 转换为二维结构,符合编码器输入要求:(样本数, 特征数) 单样本就是(1,17)
    vin_input = [vin_char_list]
    
    # 2. 用训练好的编码器做编码,仅调用transform,禁止重新fit
    encoded_vin = encoder.transform(vin_input)
    # 若编码器输出为稀疏矩阵,需要加一行转稠密:encoded_vin = encoded_vin.toarray()
    
    # 3. 传入模型预测
    pred_result = model.predict(encoded_vin, verbose=0)
    
    # 4. 解析预测结果
    pred_model = model_label_mask[np.argmax(pred_result[0])]
    pred_version = version_label_mask[np.argmax(pred_result[1])]
    
    return {
        "车型": pred_model,
        "版本": pred_version
    }

# 调用示例
target_vin = "WAUAFK8P0CA014105"
result = predict_vin_info(target_vin, onehot_encoder, model, modelo_mask, versao_mask)
print(result)

注意事项

  • 预处理逻辑必须和训练阶段完全一致,VIN拆分后得到的17个字符顺序不能变
  • 必须使用训练阶段拟合完成的OneHotEncoder实例,若重新fit会导致编码规则变化,预测结果完全错误
  • 单样本输入需要保证维度是(1, 171),和训练时的特征维度对齐

内容的提问来源于stack exchange,提问作者Guilherme

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.23 16:27:00