Мой вопрос касается предварительной обработки CSV-файлов перед их вводом в нейронную сеть.
Я хочу построить глубокую нейронную сеть для известного набора данных iris, используя tflearn в python 3.
Набор данных: http://archive.ics.uci.edu/ml/machine-learning-databases/iris/iris.data
Я использую tflearn для загрузки файла csv. Однако в столбце классов моего набора данных есть такие слова, как радужная оболочка, радужная оболочка, радужная оболочка.
Nureral сети работают только с номерами. Итак, я должен найти способ изменить классы со слов на цифры. Поскольку это очень маленький набор данных, я могу сделать это вручную, используя Excel / текстовый редактор. Я вручную назначил номера для разных классов.
Но я не могу сделать это для каждого набора данных, с которым я работаю. Итак, я попытался использовать панды для выполнения одного горячего кодирования.
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 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\.....\Dataset\iris_data.csv'
data, labels = load_csv(data_source, categorical_labels=True,
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 и нейронных сетях. Любая помощь будет оценена. Спасибо.