我想在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\.....\Dataset\iris_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 Class89 5.5 2.5 4.0 1.3 iris-versicolor85 6.0 3.4 4.5 1.6 iris-versicolor31 5.4 3.4 1.5 0.4 iris-setosa52 6.9 3.1 4.9 1.5 iris-versicolor111 6.4 2.7 5.3 1.9 iris-virginica
手动修改的数据集:
Sepal Length Sepal WIDth Petal Length Petal WIDth Class89 5.5 2.5 4.0 1.3 185 6.0 3.4 4.5 1.6 131 5.4 3.4 1.5 0.4 052 6.9 3.1 4.9 1.5 1111 6.4 2.7 5.3 1.9 2
这是我的代码完美运行,但是,我手动修改了数据集.
import numpy as npimport pandas as pdimport tflearnfrom tflearn.layers.core import input_data,fully_connectedfrom tflearn.layers.estimator import regressionfrom tflearn.data_utils import load_csvdata_source = 'F:\Gautam\.....\Dataset\iris_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,OneHotEncoderdf = 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=',')总结
以上是内存溢出为你收集整理的python – 预处理与tflearn一起使用的csv文件全部内容,希望文章能够帮你解决python – 预处理与tflearn一起使用的csv文件所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)