python – 预处理与tflearn一起使用的csv文件
我的问题是在将csv文件输入神经网络之前对其进行预处理.
我想在python 3中使用tflearn为着名的虹膜数据集构建一个深度神经网络. 数据集:http://archive.ics.uci.edu/ml/machine-learning-databases/iris/iris.data 我正在使用tflearn来加载csv文件.但是,我的数据集的类列包含iris-setosa,iris-versicolor,iris-virginica等词. Nueral网络仅适用于数字.所以,我必须找到一种方法来将类从单词更改为数字.由于它是一个非常小的数据集,我可以使用Excel /文本编辑器手动完成.我手动为不同的类分配了数字. 但是,对于我使用的每个数据集,我都不可能这样做.所以,我尝试使用pandas来执行一个热编码. preprocess_data = pd.read_csv("F:Gautam.....Datasetiris_data.csv") preprocess_data = pd.get_dummies(preprocess_data) 但是现在,我不能使用这段代码: data,labels = load_csv('filepath',categorical_labels=True,n_classes=3) ‘filepath’应该只是csv文件的目录,而不是像preprocess_data这样的任何变量. 原始数据集: Sepal Length Sepal Width Petal Length Petal Width Class 89 5.5 2.5 4.0 1.3 iris-versicolor 85 6.0 3.4 4.5 1.6 iris-versicolor 31 5.4 3.4 1.5 0.4 iris-setosa 52 6.9 3.1 4.9 1.5 iris-versicolor 111 6.4 2.7 5.3 1.9 iris-virginica 手动修改的数据集: Sepal Length Sepal Width Petal Length Petal Width Class 89 5.5 2.5 4.0 1.3 1 85 6.0 3.4 4.5 1.6 1 31 5.4 3.4 1.5 0.4 0 52 6.9 3.1 4.9 1.5 1 111 6.4 2.7 5.3 1.9 2 这是我的代码完美运行,但是,我手动修改了数据集. import numpy as np import pandas as pd import tflearn from tflearn.layers.core import input_data,fully_connected from tflearn.layers.estimator import regression from tflearn.data_utils import load_csv data_source = 'F:Gautam.....Datasetiris_data.csv' data,labels = load_csv(data_source,n_classes=3) network = input_data(shape=[None,4],name='InputLayer') network = fully_connected(network,9,activation='sigmoid',name='Hidden_Layer_1') network = fully_connected(network,3,activation='softmax',name='Output_Layer') network = regression(network,batch_size=1,optimizer='sgd',learning_rate=0.2) model = tflearn.DNN(network) model.fit(data,labels,show_metric=True,run_id='iris_dataset',validation_set=0.1,n_epoch=2000) 我想知道在tflearn(或任何其他模块中)是否有任何其他内置函数,我可以使用它来修改我的类的值从单词到数字.我不认为手动修改数据集会很有效. 我也是tflearn和神经网络的初学者.任何帮助,将不胜感激.谢谢. 解决方法
使用sklearn库中的标签编码器:
from sklearn.preprocessing import LabelEncoder,OneHotEncoder df = pd.read_csv('iris_data.csv',header=None) df.columns=[Sepal Length,Sepal Width,Petal Length,Petal Width,Class] enc=LabelEncoder() df['Class']=enc.fit_transform(df['Class']) print df.head(5) 如果你想要One-hot编码,那么首先你需要labelEncode然后做OneHotEncoding: enc=LabelEncoder() enc_1=OneHotEncoder() df['Class']=enc.fit_transform(df['Class']) df['Class']=enc_1.fit_transform([df['Class']]).toarray() print df.head(5) 这些编码器首先按字母顺序对单词进行排序,然后为它们分配标签.如果要查看为哪个类分配了哪个标签,请执行以下操作: for k in list(enc.classes_) : print 'name ::{},label ::{}'.format(k,enc.transform([k])) 如果要将此数据帧保存为csv文件,请执行以下操作: df.to_csv('Processed_Irisdataset.csv',sep=',') (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |