Я написал программу, которая находит разницу между данными и выдает результат. Вот код:
import json
import numpy as np
print("This is a basic machine learning thing.")
baseData = {"collecting":True,"x":[],"y":[]}
while baseData["collecting"]:
baseData["x"].append(float(input("X:")))
baseData["y"].append(float(input("Y:")))
if input("Do you want to keep feeding data? Press enter for yes, or type anything for no.") != "":
baseData["collecting"] = False
if len(baseData["x"]) == len(baseData["y"]):
xdata = baseData["x"]
ydata = baseData["y"]
nums = []
for i in range(len(xdata)):
nums.append(xdata[i] - ydata[i])
median = np.median(nums)
else:
print("malformed data")
def getY(x):
pass
while True:
data = input("X/Data:")
print(int(data)-median)
Чтобы программа работала, дайте ей данные X и Y, затем дайте ей данные X, и она будет предсказывать данные Y.
2 ответа
Может быть, вам следует проверить правильность ввода и снова спросить, если ввод неверен?
while baseData["collecting"]:
baseData["x"].append(float(input("X:")))
Это всегда True, поэтому просто отбросьте эту часть:
if len(baseData["x"]) == len(baseData["y"]):
Может стоит дать возможность выйти?
while True:
data = input("X/Data:")
print(int(data)-median)
И вообще, называть это «машинным обучением» — довольно большая фантазия, не так ли? Может быть, вам стоит посмотреть, как подобрать данные. Т.е. базовая линейная модель подходит.
baseData следует разбить на 3 отдельные переменные (collecting, xdata, ydata); нет причин, чтобы это был диктат.
nums = []
for i in range(len(xdata)):
nums.append(xdata[i] - ydata[i])
может быть написано более Python как:
nums = []
for x, y in zip(xdata, ydata):
nums.append(x - y)
или даже просто:
nums = [x - y for x, y in zip(xdata, ydata)]
Вам не нужно импортировать numpy только для мультимедиа; stdlib statistics.median должно работать нормально.
