Algorithm 为每个记录训练具有不同特征的kNN算法

Algorithm 为每个记录训练具有不同特征的kNN算法,algorithm,machine-learning,knn,Algorithm,Machine Learning,Knn,我有一个数据集,每个记录可以包含不同数量的特征。 这些特征总共有56条,每条记录可以包含该特征的1到56条记录 每个特征都像一个标志,在数据集中存在与否,如果存在,则有另一个值double将其值放入数据集中 数据集的一个例子是 我知道是否有可能使用每个记录的不同特征来训练我的kNN算法,例如,一个记录有3个特征加上标签,另一个有4个特征加上标签,等等 我试图用Python实现这一点,但我不知道该怎么做。数据集中的每个实例都应该由相同数量的特性表示。如果数据具有可变数量的特征(例如,每个数据点是

我有一个数据集,每个记录可以包含不同数量的特征。 这些特征总共有56条,每条记录可以包含该特征的1到56条记录

每个特征都像一个标志,在数据集中存在与否,如果存在,则有另一个值double将其值放入数据集中

数据集的一个例子是

我知道是否有可能使用每个记录的不同特征来训练我的kNN算法,例如,一个记录有3个特征加上标签,另一个有4个特征加上标签,等等


我试图用Python实现这一点,但我不知道该怎么做。

数据集中的每个实例都应该由相同数量的特性表示。如果数据具有可变数量的特征(例如,每个数据点是x和y的向量,其中每个实例具有不同数量的点),则应将这些点视为缺失值

因此,您需要处理缺少的值。例如:

  • 用每列的平均值替换缺少的值
  • 选择能够处理缺失值(如决策树)的算法
  • 使用能够预测缺失值的模型 编辑

    首先,您需要将数据转换为更好的格式。目前,每个特性由两列表示,这不是一种很好的技术。因此,我建议将数据重组如下:

    +------+------------+-----------+----------+--------+
    | ID   |  Feature1  |  Feature2 | Feature3 | Label  |
    +-------------------+-----------+----------+--------+
    |  1   |    15.12   |   ?       |   56.65  |  True  |
    |  2   |    ?       |   23.6    |   ?      |  True  |
    |  3   |    ?       |   12.3    |   ?      |  False |
    +-------------------+-----------+----------+--------+
    

    然后,您可以用
    0
    (这取决于每个功能的“含义”)替换缺少的值(用
    )或使用我前面提到的技术之一

    是的,这绝对是可能的。你需要考虑的一件事是距离测量

    kNN分类器使用的默认距离通常是欧几里德距离。然而,欧几里德距离要求具有相同数量特征(维度)的记录(向量)

    您使用的距离度量在很大程度上取决于您认为应该使记录相似的内容

    如果两条记录的特征之间存在对应关系,那么您知道记录x的特征i与记录y的特征i描述的特征相同,您可以调整欧几里德距离。例如,您可以忽略缺失的尺寸(这样,如果一个记录中缺少某个特征,它们不会增加距离),也可以惩罚缺失的尺寸(这样,每当记录中缺少某个特征时,都会添加某个惩罚值)


    如果两个记录的特征之间没有对应关系,则必须查看设置的距离,例如,最小匹配距离或Hausdorff距离。

    每个特征都像一个标志,因此,该特征是否存在。所以我无法预测这些数值。关于决策树,它可以是一个很好的选择,谢谢!然后你有布尔特征。你不应该忽略等同于<代码> false (或<代码> 0代码>代码)的特性,也不要认为它们是缺失的。确切地说,一个想法是使用所有的特征,而不是在你提到的问题中的一部分。您的实例具有相同数量的特征,但每个特征的值不同,这是非常正常的。请编辑您的初始帖子,并提供数据集中的一些实例,好吗?我已经更新了,很抱歉我对这个问题的错误描述!为什么需要使用kNN?还有其他算法可以处理丢失的值,因为我需要知道哪个记录更接近一个接收输入,哪个标签属于哪个,所以你在做1-NN。如果你对你的问题解释得更多,我们可以给你更好的指示……你想达到什么目的?不是1NN,因为我必须对它进行分类,而用1NN是不可能进行分类的。