【问题标题】:Random Forest - or other Machine Learning - with Different number of features随机森林 - 或其他机器学习 - 具有不同数量的特征
【发布时间】:2015-03-14 16:42:57
【问题描述】:

我正在尝试将一个数字列表与另一个列表列表进行比较,以查看其中有多少非常接近。但是,我的每个数据集都可能有不同的长度。

例如,如果我有一个学习时间列表,学生 1 可能有

1 -  [ 10.0,  25.0,  15.7,  45.0]

并与其他学生的列表进行比较

2   -   [  9.0,   30.0,  3.0]

3   -   [  26.0,  44.0]

4   -   [  5.0,   70.0,  90.0,  100.0]

5   -   [ 9.0,  27.0,  13.7,  42.0,  56.0,  60.0,  75.0]

我希望比较研究 1 与 5 的比较得分很高,因为有 4 次得分都很好,即使学生 5 有额外的时间而学生 1 没有,我希望它得分相当好学生 1 vs 3 因为有些数字非常匹配,即使有些数字不匹配

我刚刚开始学习机器学习,对随机森林只是略知一二。您可以使用它们进行这种类型的比较还是它们必须具有相同的参数?你能推荐一种不同的方法吗?

实际上,我正在寻找的是具有松散参数的集合的交集。我想在python中实现这个

谢谢!

【问题讨论】:

    标签: python-2.7 intersection random-forest


    【解决方案1】:

    标准化

    首先对 0 到 1 范围内的数据进行标准化。这可以使用以下公式完成。

    Norm(e) = (e - Emin) / (Emax - Emin)
    

    对于每个向量中的每个值 e。 (我不知道如何将数学符号放在这里,否则我会。)

    所以例如第一个向量会变成...

    1 -  [ 10.0,  25.0,  15.7,  45.0]
    
    Norm(10.0) = (10.0 - 10.0) / (45.0 - 10.0) = 0.0
    
    1 -  [ 0.0,  25.0, 15.7,  45.0]
    
    Norm(25.0) = (25.0 - 10.0) / 35.0 = 15/35 = 3/7 ~= 0.42857142
    
    1 -  [ 0.0,  0.42857142, 15.7,  45.0]
    

    ...

    1 -  [ 0.0,  0.42857142, 0.30571428,  1.0]
    

    对每个向量执行此操作,然后计算每对的均方误差 添加/删除必要的 0。这应该会给你一个很好的评分机制。如果需要,您还可以将 1.0 拆分为 2 个 0.5 条目。

    均方误差

    您可以使用以下等式计算均方误差。 其中 n 是每个向量中的元素数,Y 是您要为其获取 MSE 的两个向量。

    在代码中,函数看起来像...

    public long getMSE(long[] v1, long[] v2) {
        long returnValue = 0.0L;
        for (int i = 0; i < v1.length; i++) {
            returnValue += Math.pow(v1[i] - v2[i], 2);
        }
    
        return (long) (returnValue / v1.length);
    }
    

    【讨论】:

      猜你喜欢
      • 2020-12-05
      • 2019-06-23
      • 1970-01-01
      • 1970-01-01
      • 2018-12-01
      • 2015-08-18
      • 2016-10-20
      • 1970-01-01
      • 2020-05-16
      相关资源
      最近更新 更多