Это мой маленький тестовый файл CSV, потому что я пытаюсь изолировать ошибку.
Destination Port Flow Duration Total Fwd Packets Labels
22 20 100 BENIGN
21 30 200 BENIGN
43 30 100 Bot
15 11 203 Bot
Поэтому, когда я запускаю следующий код для предварительной обработки данных,
import csv
# import itertools
import os
from os.path import join as os_join
import numpy as np
dataroot = r'D:\DDOS\testing_too_many_indices'
attacks = {'BENIGN': 0, 'Bot': 1}
# and many others
features = ['Destination Port', 'Flow Duration', 'Total Fwd Packets']
np.random.seed(1202)
def get_filenames(a_dir):
return [name for name in os.listdir(a_dir)
if os.path.isfile(os.path.join(a_dir, name))]
def read_csv(filename, sampling_rate=100):
with open(filename) as csv_file:
print('Reading {} ...'.format(filename))
reader = csv.reader(csv_file)
# header = next(reader)
data = [row for row in reader]
print('#{} rows read'.format(len(data)))
N = len(data)
sample_size = N*sampling_rate//100
indices = np.random.randint(0, N, sample_size)
sampled_data = [data[i] for i in indices]
return sampled_data
def read_data(dataroot, sampling_rate=10, seed=0):
np.random.seed(seed)
filenames = get_filenames(dataroot)
data = []
for filename in filenames:
data_part = read_csv(os_join(dataroot, filename), sampling_rate)
data += data_part
return data
data = read_data(dataroot, sampling_rate=10)
arr = np.array(data)
# X contains feature values and Y the output values.
X = arr[:, :-1].astype(np.float32) # ERROR HERE.
Y_str = arr[:, -1]
Я получаю ошибку следующим образом: -
File "/some_path/temp.py", line 63, in <module>
X = arr[:, :-1].astype(np.float32)
IndexError: too many indices for array
Что мне делать? Я разбил свои мозги на другие, возможно, дублированные ссылки, такие как эта , эта и т. Д. Также сделал приведенный выше фрагмент кода для тестирования отдельно, прочитайте о 2D нарезка и все же я не знаю. Вы можете мне помочь?