【问题标题】:Loading a dataset from file, to use with sklearn/numpy, including labels从文件加载数据集,用于 sklearn/numpy,包括标签
【发布时间】:2013-02-13 02:05:49
【问题描述】:

我看到通过 sklearn,我们可以使用一些预定义的数据集,例如 mydataset = datasets.load_digits(),我们可以获得数据集 mydataset.data 的数组(一个 numpy 数组?)和相应标签的数组 mydataset.target。但是我想加载我自己的数据集以便能够将它与 sklearn 一起使用。我应该如何以及以哪种格式加载我的数据?我的文件具有以下格式(每一行都是一个数据点):

-0.2080,0.3480,0.3280,0.5040,0.9320,1.0000,label1
-0.2864,0.1992,0.2822,0.4398,0.7012,0.7800,label3
...
...
-0.2348,0.3826,0.6142,0.7492,0.0546,-0.4020,label2
-0.1856,0.3592,0.7126,0.7366,0.3414,0.1018,label1

【问题讨论】:

    标签: python numpy scikit-learn dataset


    【解决方案1】:

    您可以使用 numpy 的 genfromtxt 函数从文件中检索数据(http://docs.scipy.org/doc/numpy/reference/generated/numpy.genfromtxt.html)

    import numpy as np
    mydata = np.genfromtxt(filename, delimiter=",")
    

    但是,如果您有文本列,则使用 genfromtxt 会比较棘手,因为您需要指定数据类型。

    使用优秀的 Pandas 库(http://pandas.pydata.org/)会更容易

    import pandas as pd
    mydata = pd.read_csv(filename)
    target = mydata["Label"]  #provided your csv has header row, and the label column is named "Label"
    
    #select all but the last column as data
    data = mydata.ix[:,:-1]
    

    【讨论】:

    • 如何使用第一个数学 np.genfromtxt 获取标签(应变)和数据(浮点值)?
    • 我想这就是我想要的,对吧? labels = np.genfromtxt(filename, delimiter=',', usecols=-1, dtype=str)data = np.genfromtxt(filename, delimiter=',')[:,:-1]
    • 首先,如果你想使用 numpy 矩阵,你应该使用数字标签。话虽如此,您可以使用类似 mydata = np.genfromtxt(filename, delimiter = ",", dtype=[('A', float), ... ,('F', float), ('Label' , 'S6')])。然后您可以通过 mydata[["A", ...,"F"]] 和 mydata["Label"] 访问数据和标签
    • 如果你有 1000 个列,你应该明确指定所有这些类型?!
    • 是的,如果您混合使用字符串和浮点列。如果所有类型都是数字,那么不,您不需要指定类型。同样,如果您使用的是 Pandas 和 read_csv,则无需指定类型。
    猜你喜欢
    • 2023-03-03
    • 2016-06-25
    • 2021-08-25
    • 1970-01-01
    • 2019-05-26
    • 1970-01-01
    • 2017-02-13
    • 1970-01-01
    • 2022-11-16
    相关资源
    最近更新 更多