在Python 3.6中编程最近邻居算法

时间:2018-04-06 02:59:25

标签: python nearest-neighbor

我对编程非常陌生,并且可能比我可以咬的更多。我正在尝试创建一个程序,通过导入包含公园名称和每个公园之间距离的csv文件,我可以找到访问所有国家公园的最短路径。理想情况下,我希望它提示用户他们想要从哪个公园开始,然后穿过其他公园找到最短的距离(例如,如果你想从黄石开始,它会找到离黄石最近的公园,然后是离公园最近的公园等,然后将所有这些距离相加,返回总里程和公园被访问的顺序)我想我需要将csv文件导入为字典,这样我就可以使用公园将名称作为键,但我不确定如何将键用于算法。到目前为止,我从我有限的知识中得到以下内容:

import csv
import numpy as np

distances = csv.DictReader(open("ds.csv"))

for row in distances:
    print(row)
startingPark = input('Which park would you like to test?')

def NN(distanceArray, start):    
    path = [start]
    cost = 0
    N = A.shape[0]
    mask = np.ones(N, dtype=bool)
    mask[start] = False

    for i in range(N-1):
        last = path[-1]
        next_ind = np.argmin(distanceArray[last][mask]) # find minimum of remaining locations
        next_loc = np.arange(N)[mask][next_ind] # convert to original location
        path.append(next_loc)
        mask[next_loc] = False
        cost += distanceArray[last, next_loc]

    return path, cost
print (NN(distanceArray,0))

我知道我必须更改代码的实际算法部分中的所有数组内容(这只是我通过研究找到的一些代码,我将其用作起点) ,但我不确定A:如何让它实际使用我给出的输入和B:如何使算法使用字典而不是使用作为代码本身的一部分输入的数组。我已经尝试过使用这些文档,但它有点过头了。显然,我不希望任何人为我做这件事,但我很欣赏人们可能拥有的任何指针或资源。我非常努力地学习,但没有任何知道他们正在做什么的人的真正指导,我很难过。

编辑:以下是我必须处理的数据示例。我从Google地图中提取了所有距离并将其输入到csv文件中。我认为我所拥有的x也可能是一个问题,可能需要用0或类似的东西替换,但我还没有处理这个问题。 (对不起,不只是上传图片,还没有足够的代表发布一个) https://imgur.com/a/I4c1T

0 个答案:

没有答案