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了

     

    日积月累,小小的力量,大大的梦想...
  • 相关阅读:
    js实现字符串反转
    网页中嵌入百度地图
    Javascript创建对象方法
    使用@font-face来实现icon
    关于课程实验的反思
    Factory设计模式构建
    正则表达式的应用
    IO流
    解读main()方法中的String[] args
    技术与运营
  • 原文地址:https://www.cnblogs.com/harp-yestar/p/xgboost_question.html
Copyright © 2011-2022 走看看