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了

     

    日积月累,小小的力量,大大的梦想...
  • 相关阅读:
    WCF ria services完美登陆功能(10)
    利用DYCOM快速建立wcf服务器端
    DYCom简要介绍
    断剑
    生命的价值
    飞翔的蜘蛛
    JSP中如何获取select标签选中的值
    wrapClass
    iconfont 在vue项目中的应用(iconcomponent组件)
    正则表达式
  • 原文地址:https://www.cnblogs.com/harp-yestar/p/xgboost_question.html
Copyright © 2011-2022 走看看