Программа машинного обучения

Я написал программу, которая находит разницу между данными и выдает результат. Вот код:

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 ответа
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 должно работать нормально.

      Добавить комментарий

      Ваш адрес email не будет опубликован. Обязательные поля помечены *