【问题标题】:how to predict using scikit?如何使用 scikit 进行预测?
【发布时间】:2012-12-13 21:11:32
【问题描述】:

我已经使用 fit 方法训练了一个估计器,称为 clf,并将模型保存到磁盘。下次运行程序,会从磁盘加载clf。

我的问题是:

  1. 如何预测保存在磁盘上的样本?我的意思是,如何加载和预测?
  2. 预测后如何获取样本标签而不是标签整数?

【问题讨论】:

    标签: machine-learning scikit-learn


    【解决方案1】:
    1. 如何预测保存在磁盘上的样本?我的意思是,如何加载和预测?

      您必须对新样本使用与传递给fit 方法的样本相同的数组表示。如果要预测单个样本,输入必须是形状为(1, n_features) 的二维numpy 数组。

      在 HDD 上读取原始文件并将其转换为适合分类器的 numpy 数组表示的方式是一个特定领域的问题:这取决于您是否尝试对文本文件、jpeg 文件、视频文件中的帧进行分类,数据库中的行,syslog 监控服务的日志行...

    2. 预测后如何获取样本标签而不是标签整数?

      只需保留标签名称列表,并确保在拟合时用作目标值的整数在[0, n_classes) 范围内。例如['spam', 'ham'],如果你有[0, 1]范围内的预测,那么你可以这样做:

      new_samples = # 2D array with shape (n_samples, n_features)
      label_names = ['ham', 'spam']
      predictions = [label_names[pred] for pred in clf.predict(new_samples)]
      

    【讨论】:

    • 我正在使用 TfidfVectorizer 生成传递给 fit 方法的数组,例如vectorizer = TfidfVectorizer(sublinear_tf = True, max_df = 0.5, stop_words = 'english',charset_error='ignore') X_train = vectorizer.fit_transform(data_train.data),我想知道如何为新样本生成相同的数组表示从磁盘加载模型后?我想,如何为新样本生成特征向量,因为如果我只使用矢量化器,转换(newSampleData),我想我会得到错误的特征
    • 你需要复用同一个vectorizer实例并使用transform方法。它需要一个字符串列表作为输入。只需阅读您的文本文件(假设它们使用 utf-8 字符集编码):new_samples = [open(f, 'wb').read().decode('utf-8') for f in filenames]
    • 上一条评论有错别字,应该是open(f, 'rb')而不是open(f, 'wb')
    猜你喜欢
    • 2021-03-24
    • 2016-05-25
    • 2013-05-31
    • 2022-09-27
    • 2015-08-01
    • 2020-03-24
    • 2015-09-15
    • 2018-01-14
    • 2018-03-21
    相关资源
    最近更新 更多