import io_module as io
import utility as util
red_data = ["datasets/red_2d.txt","datasets/red_4d.txt","datasets/red_6d.txt"]
blue_data = ["datasets/blue_2d.txt","datasets/blue_4d.txt","datasets/blue_6d.txt"]
unknown_data = ["datasets/unknown_2d.txt","datasets/unknown_4d.txt","datasets/unknown_6d.txt"]
red_dataset = None
blue_dataset = None
unknown_dataset = None
###Reading the dataset
while True:
try:
select_dimension = int(input("Select the Dimension for the Red and blue dataset (2,4,8):"))
if select_dimension == 2:
red_dataset = io.read_multi_dim_data(red_data[0])
blue_dataset = io.read_multi_dim_data(blue_data[0])
unknown_dataset = io.read_multi_dim_data(unknown_data[0])
break
elif select_dimension == 4:
red_dataset = io.read_multi_dim_data(red_data[1])
blue_dataset = io.read_multi_dim_data(blue_data[1])
unknown_dataset = io.read_multi_dim_data(unknown_data[1])
break
elif select_dimension == 8:
red_dataset = io.read_multi_dim_data(red_data[2])
blue_dataset = io.read_multi_dim_data(blue_data[2])
unknown_dataset = io.read_multi_dim_data(unknown_data[2])
break
else:
raise ValueError
except ValueError:
print("Please enter a valid number")
min_distance_from_red = 1000
min_distance_from_blue = 1000
unknow_point = unknown_dataset[0]
print(unknow_point)
for numbers in (unknown_dataset):
print(numbers)
for red in red_dataset:
distance_from_red = util.calculate_distance(unknow_point, red)
min_distance_from_red = distance_from_red if distance_from_red < min_distance_from_red else min_distance_from_red
for blue in blue_dataset:
distance_from_blue = util.calculate_distance(unknow_point, blue)
min_distance_from_blue = distance_from_blue if distance_from_blue < min_distance_from_blue else min_distance_from_blue
##compare the distance between red and blue
if (min_distance_from_red > min_distance_from_blue):
print(f"The coodinate {unknow_point} is red ")
else:
print(f"The coodinate {unknow_point} is blue ")
其实一个循环就可以写完了,但是你这里分了三个颜色,所以先遵循你的源码来吧
import os
import io_module as io
# 读取文件夹里面的文件,按前缀归到不同数组
file_dir = "datasets"
list_file = os.listdir(file_dir)
red_data, blue_data, unknown_data = [], [], []
for each_file in list_file:
if each_file.startswith("red"):
red_data.append("%s/%s" % (file_dir, each_file))
elif each_file.startswith("blue"):
blue_data.append("%s/%s" % (file_dir, each_file))
else:
unknown_data.append("%s/%s" % (file_dir, each_file))
red_dataset, blue_dataset, unknown_dataset = [], [], []
for f in blue_data:
blue_dataset.append(io.read_multi_dim_data(f))
for f in unknown_data:
unknown_dataset.append(io.read_multi_dim_data(f))