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

Scikit learn 如何在scikit中创建sklearn.datasets.base.Bunch对象,从自己的数据学习?,scikit-learn,scikits,Scikit Learn,Scikits,在大多数Scikit学习算法中,数据必须作为束对象加载。对于教程中的许多示例,load_files()或其他函数用于填充束对象。像load_files()这样的函数期望数据以某种格式出现,但我有不同格式的数据存储,即每个字段都有字符串的CSV文件 如何解析这些数据并以束对象格式加载数据?您不必创建束对象。它们仅用于加载scikit学习的内部样本数据集 您可以直接向矢量器对象提供Python字符串列表。您可以这样做: import numpy as np import sklearn.datase

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


如何解析这些数据并以束对象格式加载数据?

您不必创建束对象。它们仅用于加载scikit学习的内部样本数据集


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

您可以这样做:

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)
这是一个示例,您可以在Kaggle中找到CSV文件:

  • 从CSV文件第2列第32处开始,是
    X_列
    X_测试
    data@
    usecols=range(2,32)
    这存储在束中 名为
    数据的对象键

    从numpy导入genfromtxt
    data=genfromtxt(“您的数据目录,分隔符=',',skip_header=1,usecols=range(2,32))
    
  • 我对CSV文件中的列数据B(Numpy数组中的列1@
    usecols=(1)
    )感兴趣,因为它是
    y\u列
    y\u测试
    的输出,并存储在名为:
    target
    的束对象键中

    将熊猫作为pd导入
    target=genfromtxt(“您的数据目录”,分隔符=',,跳过头=1,usecols=(1),dtype=str)
    
    有一些技巧可以像在sklearn中一样变换目标,当然可以在唯一变量中进行变换
    target,target1,…
    仅用于解释我所做的操作

  • 首先把这个小家伙变成熊猫

    target2=pd.系列(目标)
    
  • 这是为了使用秩函数,您可以跳过第5步

    target3=target2.rank(方法='稠密',轴=0)
    
  • 这仅适用于0或1中的目标变换,如本书中的示例所示

    target4=(target3%2==0)*1
    
  • 把价值观融入numpy

    target5=target4.values
    
  • 这里我复制了Hugh Perkins的解决方案:

    导入sklearn
    dataset=sklearn.datasets.base.Bunch(数据=data,目标=target5)
    
    谢谢,是否有加载.CSV的实用程序功能?具有用于列(所有字符串)的csv。现在我正在使用python csv阅读器,我推荐pandas:不过,在将pandas.DataFrame提供给sklearn之前,您需要将其转换为np数组。可以肯定的是:没有任何算法加载
    Bunch
    对象。示例脚本使用这些,但算法都需要数组或稀疏矩阵。@Blake,分类器的fit方法接受两个列表对象-数据列表(
    Bunch.data
    ),后跟目标列表(
    Bunch.target
    )-
    clf.fit(,)
    @MachineEpsilon该问题显示了对如何在
    scikit learn
    中将数据提供给分类器的误解,因此,即使这回答了字面上的问题,也无法消除最初的误解。这个链接非常清楚: