Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/332.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python实现KNN方法_Python_Pandas_Numpy_Time Complexity_Knn - Fatal编程技术网

Python实现KNN方法

Python实现KNN方法,python,pandas,numpy,time-complexity,knn,Python,Pandas,Numpy,Time Complexity,Knn,我正在尝试手动编码KNN分类方法。我定义了两个函数,一个用于计算欧氏距离,另一个用于对给定样本进行分类。代码如下: def Distance(train,test,i): dis=np.array([]) for k in range(train.shape[0]): e_dis = np.linalg.norm(train[k]-test[i]) dis = np.append(dis,e_dis) dis=np.argsort(dis)

我正在尝试手动编码KNN分类方法。我定义了两个函数,一个用于计算欧氏距离,另一个用于对给定样本进行分类。代码如下:

def Distance(train,test,i):
    dis=np.array([])
    for k in range(train.shape[0]):
        e_dis = np.linalg.norm(train[k]-test[i])
        dis = np.append(dis,e_dis)
    dis=np.argsort(dis)
    return dis
现在,我尝试定义一个真正的KNN函数,它使用for循环将这两个函数组合在一起,以从测试数据集中获得对每个给定样本的预测

def knn(train,test,label_set,k):
    prediction=np.array([])
    for i in range (test.shape[0]):
        dis=Distance(train,test,i)
        pred=predict(label_set,dis,k)
        prediction=np.append(prediction,pred)
    return prediction
下面是我试图运行的代码。设置k=10以查找10个最近邻进行分类

b=knn(ftrain_set,ftest_set,ltrain_set,10)
当我测试它们时,距离和预测函数运行良好。当我测试knn函数时,运行它需要很长时间。我承认我的knn函数取O(nklogn),其中n,k是序列和测试集的样本量


现在我正在寻找一些方法来降低时间复杂度,这样我就可以计算每个k的精度,然后画一条研究曲线来找到最佳的k参数。有人能帮我降低knn函数的时间复杂度吗?提前谢谢你

似乎输入数据和标签之间的维度不匹配。@您好,那么除了维度不匹配问题之外,我的knn函数在逻辑上应该正常工作吗?“谢谢你嗨,我想是的。”她说:“谢谢你的建议。我现在修复了它,该功能正在运行!谢谢你,酷!很高兴知道。
b=knn(ftrain_set,ftest_set,ltrain_set,10)