zoukankan      html  css  js  c++  java
  • 在用机器学习去训练模型,预测数据的时候,出现ValueError: feature_names mismatch:

    报错形式

    ValueError: feature_names mismatch:["f1", "f2", "f3", "f4", "f5", "f6", …… "f60123", ]
    

    原因分析

    - 上网百度,大多回答都是:

    1. 训练集和测试集的列名不一致
    2. 训练集和测试集的列名顺序不一致

     如果有以上两种的可以尝试进行修改

     

    - 笔者遇到的是另外一种:

      在训练数据集的时候,进行特征转换的时候:TfidfVectorizer,在做重新使用其他数据进行测试的时候,忽略了向量维度,因此出现了以上的报错。

     

    解决方案:

    在进行特征转换的时候,将TfidfVectorizer的模型进行保存,便于下次调用,产生相同维度的向量

    # 序列化保存
    tfidftransformer_path = './tfidftransformer.pkl'
    with open(tfidftransformer_path, 'wb') as file:
            pickle.dump(tfidf_transformer, file)
    
    # 加载保存的模型
    
    tfidftransformer_path = './tfidftransformer.pkl'
    tfidftransformer = pickle.load(open(tfidftransformer_path, "rb"))
    

      

      

    在维度相同的向量的时候,就可以输入到分类器中进行predict了

     

    日积月累,小小的力量,大大的梦想...
  • 相关阅读:
    简明Secure boot介绍
    密码学有什么用?
    mkimage, no such file or dir
    嵌入式系统安全简介
    希尔排序
    jQuery选择器
    css 选择器
    安装 SQL Server 2008 和管理工具 SQL Server 2008 management studio 及相关问题解决
    mac下安装安卓开发环境
    IOS开发小记-内存管理
  • 原文地址:https://www.cnblogs.com/harp-yestar/p/xgboost_question.html
Copyright © 2011-2022 走看看