如何在scikit中创建sklearn.datasets.base.Bunch对象从我自己的数据中学习



在大多数Scikit学习算法中,数据必须作为Bunch对象加载。例如,教程中的load_files()或其他函数用于填充Bunch对象。像load_files()这样的函数希望数据以某种格式存在,但我的数据以不同的格式存储,即每个字段都有字符串的CSV文件。

我如何解析它并以Bunch对象格式加载数据?

你可以这样做:

import numpy as np
import sklearn.datasets
examples = []
examples.append('some text')
examples.append('another example text')
examples.append('example 3')
target = np.zeros((3,), dtype=np.int64)
target[0] = 0
target[1] = 1
target[2] = 0
dataset = sklearn.datasets.base.Bunch(data=examples, target=target)

您不必创建Bunch对象。它们只适用于加载scikit learn的内部样本数据集。

您可以直接将Python字符串列表提供给矢量器对象。

这是一个癌症威斯康星州乳腺癌(诊断)数据集的例子,您可以在Kaggle:中找到CSV文件

  1. CSV文件中32处的第2列为X_trainX_test数据@usecols=range(2,32),这些数据存储在Bunch中名为data 的对象密钥

    from numpy import genfromtxt
    data = genfromtxt("YOUR DATA DIRECTORY", delimiter=',', skip_header=1,  usecols=range(2,32))
    
  2. 我对CSV文件中的列数据B(Numpy Array@usecols=(1)中的列1)感兴趣,因为它是y_trainy_test的输出,并且存储在名为:target 的Bunch Object Key中

    import pandas as pd
    target = genfromtxt("YOUR DATA DIRECTORY", delimiter=',', skip_header=1, usecols=(1), dtype=str)
    

    有一些技巧可以像在sklearn中一样转换目标,当然它可以在一个唯一的变量target, target1, ...中创建,只是为了解释我所做的。

  3. 首先将numpy转换为Panda

    target2 = pd.Series(target)
    
  4. 这是为了使用排名功能,你可以跳过步骤5

    target3 = target2.rank(method='dense', axis=0)
    
  5. 这只适用于在0或1中转换目标,如书籍中的示例

    target4 = (target3 % 2 == 0) * 1 
    
  6. 在numpy 中获取值

    target5 = target4.values
    

在这里,我复制了Hugh Perkins的解决方案:

import sklearn
dataset = sklearn.datasets.base.Bunch(data=data, target=target5)

相关内容

  • 没有找到相关文章

最新更新