如何将该数据集加载到Keras或TF?

时间:2019-01-14 11:41:59

标签: python numpy tensorflow keras

我是KerasTF的新手。我需要加载此数据集: https://archive.ics.uci.edu/ml/machine-learning-databases/letter-recognition/letter-recognition.data

但是我见过的每个教程都使用内置方法来从MNIST数据集中加载。 我想出了将字母(标签)更改为int(like a->1,b->2,c->3 etc.)的想法 但是,如何将其分成2组(x-in,y-out)?

3 个答案:

答案 0 :(得分:1)

您需要自己解析文件。

为此,您可以执行以下操作:

x_t = []
y_t = []
char_to_int = {}
int_to_char = {}
for i in x.split("\n"):
    print(i)
    y_t.append(i[0])
    x_t.append(i.split(",")[1:])

for i,j in enumerate(sorted(set(y_t))):
    char_to_int[j]=i 
for i,j in enumerate(sorted(set(y_t))):
    int_to_char[i]=j 
y_t = [char_to_int[i] for i in y_t]

基本上,您遍历文件并将整数保留为x值。对于y值,您首先要输入字母。但是神经网络无法理解这一点,因此您需要构建一个具有整数到字母映射关系的字典。这就是为什么我们最后再次解析y的原因,所以我们最终得到y值。

现在,您只需要从中制作numpy数组。

答案 1 :(得分:1)

  

但是我看过的每个教程都使用内置方法。

如果您以前没有尝试过,我建议您使用熊猫。

  1. 首先复制粘贴数据,然后另存为csv文件(example.csv)。
  2. 每个csv文件都需要标头,因为默认情况下该文件没有标头,因此您可以手动添加。通过插入 alphabet, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16 在文件的顶部。注意:您应该使用实际的功能名称替换数字,以提高可读性。

  3. import pandas as pd

  4. 读取文件:

    dataframe = pd.read_csv("example.csv")

  5. 自那以来,您说的第一列是可以将其从数据框中删除的标签。

    y = dataframe["alphabet"]

  6. 剩余列是您可以使用values属性检索的输入,该属性返回一个numpy数组。

    x = dataframe.drop("alphabet", 1).values#沿着列拖放

  7. 现在,您可以在train_test_split中使用sklearn.model_selection拆分数据集,也可以使用python索引。

    test_size = 0.1
    train_samples = int(X_train.shape[0]*(1 - test_size))
    X_train, X_test, Y_train, Y_test = x[:train_samples],x[train_samples: ], y[:train_samples], y[train_samples: ]
    

    from sklearn.model_selection import train_test_split
    X_train, X_test, Y_train, Y_test = train_test_split(x, y,
     test_size=test_size)
    
  8. 现在,由于y是numpy个字符数组,因此我们需要将其映射到索引。

    mapping = {}
    classes = set(y)
    for c in classes:
        if c not in mapping:
            mapping[c] = len(mapping)
    y = np.array([mapping[i] for i in y])
    
  9. 现在终于转换为一种热门格式:

    from keras.utils import to_categorical
    y = to_categorical(y, len(mapping))
    
  10. 在大多数库中,这通常是MNIST数据集存储的格式。此外,您可以根据需要对数据进行标准化。

答案 2 :(得分:1)

对于小型数据集(如您的情况),我只是从文件中解析并使用迭代器。这是您的数据的alasql( select( ['*'], ['cities'], and(low('pop', 3500000)), orderBy('pop', 'DES') ) ); 示例:

TensorFlow