随机森林 - 或其他机器学习 - 具有不同数量的特征
Random Forest - or other Machine Learning - with Different number of features
我正在尝试将一个数字列表与另一个列表列表进行比较,以查看其中有多少非常匹配。但是我的每个数据集都可以有不同的长度。
举个例子,如果我有一个学习时间列表,学生 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 和学生 3 来说相当不错,因为有些数字非常匹配,尽管有些不匹配
我刚刚开始学习机器学习,对随机森林只是略微熟悉。您可以使用它们进行此类比较吗?还是它们必须具有相同的参数?你能推荐一个不同的方法吗?
实际上我正在寻找的是集合的交集,参数松散。我想在 python
中实现它
谢谢!
规范化
首先将 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]
对每个向量执行此操作,然后计算每对的均方误差
adding/removing 必要的 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);
}
我正在尝试将一个数字列表与另一个列表列表进行比较,以查看其中有多少非常匹配。但是我的每个数据集都可以有不同的长度。
举个例子,如果我有一个学习时间列表,学生 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 和学生 3 来说相当不错,因为有些数字非常匹配,尽管有些不匹配
我刚刚开始学习机器学习,对随机森林只是略微熟悉。您可以使用它们进行此类比较吗?还是它们必须具有相同的参数?你能推荐一个不同的方法吗?
实际上我正在寻找的是集合的交集,参数松散。我想在 python
中实现它谢谢!
规范化
首先将 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]
对每个向量执行此操作,然后计算每对的均方误差 adding/removing 必要的 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);
}