automatyczny_kelner/dataset/datasetGenerator.py

57 lines
1.6 KiB
Python
Raw Normal View History

2023-05-26 01:29:28 +02:00
import random
import csv
attributes = {
1: ["empty", "low", "medium", "high"],
2: ["empty", "full"],
3: ["none", "available"],
4: ["none", "available"],
5: ["unavailable", "available"],
6: ["low", "medium", "high"],
7: ["no", "yes"],
8: ["no", "yes"]
}
dataset = []
while len(dataset) < 200:
data = {}
# Generate random values for attributes 1-7
for attr in range(1, 8):
data[attr] = random.choice(attributes[attr])
# Apply the rules to determine the value of attribute 8
if data[1] in ["empty", "low"]:
data[8] = "no"
elif data[2] == "full" and data[4] == "none":
data[8] = "no"
elif data[2] == "empty" and data[3] == "none":
data[8] = "no"
elif data[3] == "none" and data[4] == "none":
data[8] = "no"
elif data[5] == "unavailable":
data[8] = "no"
elif data[6] == "low":
data[8] = "no"
elif data[7] == "yes":
data[8] = "no"
else:
data[8] = "yes"
# Check if the generated data already exists in the dataset
if data not in dataset:
dataset.append(data)
# Print the generated dataset
for data in dataset:
print(data)
with open("dataset/Dataset.csv", "w", newline="") as csvfile:
writer = csv.writer(csvfile)
# Write the header row
writer.writerow(["Battery Charge", "Fullness", "Ready orders", "Waiting tables","Availability", "Cleanliness", "Error", "To go"])
# Write the data rows
for data in dataset:
row = [data[attr] for attr in range(1, 9)]
writer.writerow(row)