将csv文件转换为机器学习输入的最简单方法是什么?

时间:2017-12-31 21:16:14

标签: python pandas csv tensorflow machine-learning

我知道你可以这样做:

import pandas as pd
df = pd.read_csv('mushrooms.csv')
df.apply(lambda x: pd.factorize(x)[0])

但我想要的是将所有类别更改为01

例如,CSV文件中的标题是favColorfavCookiefavColor的选项是'红色','橙'和'绿色'以及favCookie的选项是'巧克力'和'糖'。如果其中一行是红色'和'糖',我希望整行变成[1,0,0,0,1]

我看起来更像是一个库,所以每次使用CSV文件和神经网络时都很容易这样做

2 个答案:

答案 0 :(得分:2)

使用pandas,您可以使用pandas.get_dummies()

new_df = pd.get_dummies(df)

如果您想使用scikit-learn,可以使用OneHotEncoder

from sklearn.preprocessing import OneHotEncoder

new_np_array = OneHotEncoder().fit_transform(df.values)

正如我所说的变量名称,get_dummies()会返回pandas数据框,而OneHotEncoder会返回numpy数组

答案 1 :(得分:0)

在Tensorflow中导入CSV文件

使用新的数据集API(作为TF 1.4版本的一部分发布)来加速整个过程

从CSV文件中读取的步骤:

1)读取CSV文件名
2)通过提供CSV文件名来创建TextLineDataset 3)创建解码的Parse函数,并在输入数据中进行任何预处理工作 4)使用先前步骤中创建的数据集创建批处理,重复(没有纪元)和改组 5)创建迭代器以批量获取所需的输入(即小批量)

例如代码:

from matplotlib.image import imread
def input_model_function():
    csv_filename =['images.csv']
    dataset = tf.data.TextLineDataset(csv_filename)
    dataset = dataset.map(_parse_function)
    dataset = dataset.batch(20)# you can use any number of batching
    iterator = dataset.make_one_shot_iterator()
    sess = tf.Session()
    batch_images, batch_labels = sess.run(iterator.get_next())
return {'x':batch_images}, batch_labels

def _parse_function(line):
    image, labels= tf.decode_csv(line,record_defaults=[[""], [0]])
    # Decode the raw bytes so it becomes a tensor with type.
    image = imread(image)# give full path name of image
return image, labels

最后将批量数据集输入模型(使用任何预制估算器或自定义估算器API创建)