Я пытаюсь добиться того, что указано в инструкциях ниже в ожидаемом разделе вывода.Текстовый файл содержит 5 чисел с плавающей запятой в каждой строке, последняя из которых бесполезна, поскольку он просто классифицирует, означают ли предыдущие числа реальный или поддельный счет (0 - фальшивка, 1 - реал).Я хочу создать цикл, который может взять первое число каждой строки (более 600 строк) и найти среднее, то же самое со вторым числом каждой строки, третьей и четвертой.Выходными данными должен быть список, который показывает каждое среднее значение [avg1 avg2 avg3 avg4].Код ниже может успешно сделать это, но только по одному за раз.Например.в этой строке sum + = float (line.split () [0]), изменение от 0 до 1 даст среднее значение второго числа в каждой строке и так далее.Как создать эффективный цикл, который может дать мне все средние значения сразу?
Я уже пытался скопировать цикл и вставить его 4 раза для каждого «столбца» чисел, но он неэффективен и не даетработа.
import web_scraper
import urllib.request
import math
def data_text_files():
page = 'http://archive.ics.uci.edu/ml/machine-learning-
databases/00267/data_banknote_authentication.txt'
stream = urllib.request.urlopen(page)
samples = web_scraper.get_all_data(stream, ',')
training = open("training2.txt", "w")
testing = open ("testing2.txt", "w")
for i in range(len(samples)):
if i % 2 == 0:
#write data to training file
count = 1
for bill in samples[i]:
bill_str = str(bill)
if(count == 5):
training.write(bill_str + "\n")
count = 1
else:
training.write(bill_str + " ")
count += 1
else:
#write data to testing file
count = 1
for bill in samples[i]:
bill_str = str(bill)
if(count == 5):
testing.write(bill_str + "\n")
count = 1
else:
testing.write(bill_str + " ")
count += 1
data_text_files()
with open('training2.txt') as fh:
sum = 0 # initialize here, outside the loop
count = 0 # and a line counter
for line in fh:
count += 1 # increment the counter
sum += float(line.split()[0]) # add here, not in a nested loop
average = [sum / count]
print (average)
building_classifier()
Каждый образец данных имеет 4 атрибута (исключая последний, который указывает классификацию образца).Итак, данные выглядят примерно так:
[ [2, 4, 6, 8, 0],
[4, 6, 8, 10, 0],
[1, 3, 5, 7, 1]
[3, 5, 7, 9, 1]]
Для построения классификатора вы будете использовать данные в "training.txt":
Рассчитать среднее значение каждого из атрибутов по всемобразцы с одинаковой классификацией (0 или 1).Для данных, показанных выше, средние значения для каждого атрибута по поддельным образцам (0) составляют [3, 5, 7, 9], а для тех, которые являются действительными (1), средние значения составляют [2, 4, 6, 8].Найдите средние точки между средними значениями для 2 групп, сложив среднее значение поддельных и среднее значение реальных образцов, и разделите результат на два.Это будет сделано для каждого из атрибутов.Таким образом, для показанных данных средние точки будут [2,5, 4,5, 6,5, 8,5].Середины - это то, что мы будем использовать в качестве нашего классификатора.