python - 如何摆脱使用代码查找最近邻居时遇到的此错误?
问题描述
我编写了以下函数,它获取数据、要查找的对等点数和索引以查找前 N 个最近邻:
def fit_nearest_neighbors(data, number_of_peers, index):
peer_data = FindPeers.filt_data(data)
peer_data_array = np.array(peer_data)
knn = NearestNeighbors(algorithm = 'auto', n_neighbors = number_of_peers, metric = 'minkowski', p = 2)
knn.fit(peer_data_array)
return knn.kneighbors(peer_data_array[index], return_distance = False)
但是我在 return 后的最后一行代码中收到以下错误:
ValueError: Expected 2D array, got 1D array instead:
array=[2.86839521e-01 7.63588709e-01 1.00000000e+00 1.73483898e-01
0.00000000e+00 1.25068828e-02 1.66424454e-17 4.38357126e-01
7.55219585e-03 6.03820534e-02 2.72387749e-01].
Reshape your data either using array.reshape(-1, 1) if your data has a single feature or array.reshape(1, -1) if it contains a single sample.
它打印的错误数组基本上是那个特定的数据点index
。我理解这个错误,但我不明白如何使它正确。任何类型的线索/答案都会有所帮助。
解决方案
错误信息很清楚。您需要使用 numpy 函数将数据从 1D 重塑为 2D np.reshape()
。
你可以做到这一点
peer_data_array = np.array(peer_data).reshape(-1, 1)
推荐阅读
- wordpress - 如何检查“在档案中启用 AJAX 添加到购物车按钮”状态?
- grails - Grails 3.3.2 Spring Security CAS 不能通过负载均衡器工作,但可以通过部署在其上的内部服务器正常工作
- java - 在 Eclipse IDE 上的 Java 中,我在包行(类中的第一行)上收到错误
- gitlab - 如何在 Gitlab Markdown 中指定 Mermaid 配置?
- mysql - 在 MySQL 中添加外键时是否需要指定约束名称?
- spring - 保存后的 JPA 查询不返回数据库生成的字段
- c++ - 使用 C++ 在 LeetCode 中的 Pow(x,n)。地址消毒剂 33
- assembly - 我可以用 OR 操作代替 MOV 操作吗?
- java - 如何使这部分程序运行?
- android - Recyclerview 中的 switch case 问题,因为它在过滤项目时打开了错误的活动