Проблема с генератором набора данных - PullRequest
0 голосов
/ 08 июля 2019

Я пытаюсь создать функцию, которая генерирует 2D-набор данных. Шаги, которые я хочу сделать с кодом:

  • Составьте список из 100 списков, с координатами и классом 0 (для неинициализированных) в каждом списке
  • Генерация n случайных координат и установка их классов, список обновлений
  • Рассчитать расстояние между точками с классом 0 и точками с назначенными классами. Возьмите сумму 1 / расстояние до точек с классом 1, сумму 1 / расстояние до точек с классом 2 ... и т. Д., И класс этой точки будет классом с наибольшей суммой

Однако приведенный ниже код не работает, когда список точек напечатан, почти все точки по-прежнему имеют класс 0.

import random

def dataset_maker(n): # 2D plane with 0 through 9 for x and y axis
    points = []
    for i in range(0,10):
        for j in range(0,10):
            points.append([i, j, "0"]) # 0 = class not initialised, 1 = class 1, 2 = class 2 etc

    centriods = []
    for i in range(n):
        centriods.append((random.randint(0,9), random.randint(0,9)))
    for i in range(0,len(points)):
        for j in range(0,len(centriods)):
            if points[i][0] == centriods[j][0] and points[i][1] == centriods[j][1]:
                points[i][2] = str(j+1)

    # All neighbours NN to determine classes of other points
    distances = [0] * n
    for i in range(0,len(points)):
        if points[i][2] == "0":
            for j in range(0,len(points)):
                if points[j][2] != "0":
                    if((points[i][0] - points[j][0]) ** 2 + (points[i][1] - points[j][1]) ** 2) != 0: # prevent division of 0
                        tmp = 1 / ((points[i][0] - points[j][0]) ** 2 + (points[i][1] - points[j][1]) ** 2)
                        tmp2 = int(points[j][2]) - 1
                        distances[tmp2] += tmp

                        tmp3 = distances[0]
                        for i in range(0,len(distances)):
                            if distances[i] > tmp3:
                                tmp3 = distances[i] 
                        points[i][2] = str(distances.index(tmp3) + 1)
                        distances = [0] * n
    print(points)

dataset_maker(5)
...