在numpy中搜索k个最近的邻居

时间:2014-04-29 18:30:28

标签: python numpy

我是Python的新手。我想使用numpy和sklearn来KNN。但是,我的数据中有nan。我将dtype的{​​{1}}设置为genfromtxt,但数组如下所示:

None

然后,我会在[('ADT1_YEAST', 0.58, 0.61, 0.47, 0.13, 0.5, 0.0, 0.48, 0.22, 'MIT') ('ADT2_YEAST', 0.43, 0.67, 0.48, 0.27, 0.5, 0.0, 0.53, 0.22, 'MIT') ('ADT3_YEAST', 0.64, 0.62, 0.49, 0.15, 0.5, 0.0, 0.53, 0.22, 'MIT') ..., ('ZNRP_YEAST', 0.67, 0.57, 0.36, 0.19, 0.5, 0.0, 0.56, 0.22, 'ME2') ('ZUO1_YEAST', 0.43, 0.4, 0.6, 0.16, 0.5, 0.0, 0.53, 0.39, 'NUC') ('G6PD_YEAST', 0.65, 0.54, 0.54, 0.13, 0.5, 0.0, 0.53, 0.22, 'CYT')] 函数上获得data type not understood

这是我的代码:

NearestNeighbors

任何人都可以教我如何阅读清单吗?提前谢谢。

2 个答案:

答案 0 :(得分:1)

如果我理解了这个问题,你真的会问如何对categorical variables进行编码,使得它们可以被最近邻算法正确解释。您可以按照4.2.4. Encoding categorical features中的说明使用sklearn执行此操作。另一方面,如果您的功能不完整,请4.2.6. Imputation of missing values

答案 1 :(得分:0)

我认为您需要将数据正确地放入矩阵中。我通常做这样的事情:

import numpy as np

features = [] # list of lists of the feature vairables.
classes  = [] # list of the target variables
for line in f:
    line = line.strip().split() # will split the line into pieces on any white spaces
    features.append(line[1:-1]) # or whatever indices your features are in
    classes.append(line[-1])    # or whatever index your target variable is in
classes  = np.array(classes)
features = np.array(features,dtype=np.float)