@evilking
2017-12-20T22:44:26.000000Z
字数 565
阅读 1353
杂谈
输入: 加载数据集 tecator
// spectrum_data 的一行是一个样本
2. 提取原始的函数型数据 spectrum_data
3. 设置 100 个时间点,pointtime = (1:100)
4. 使用 7 阶 nbasis 数量的 B-spline基函数进行拟合
// FatCoef 每一行是一个样本的系数,nbasis+1 个系数
5. 提取函数型数据拟合后的系数矩阵 FatCoef
6. 提取原始数据 y 中脂肪的含量,y <= 20 表示合格,否则为不合格,标记为 Fat 向量
7. 对系数矩阵的每行进行 z-score标准化缩放
8. 将系数矩阵按 0.7/0.3 比例分配训练集 trainset 和测试集 testset;并分别提取标记 trainset_lab 和 testset_lab
9. 随机提取测试集中的一行设置为 x,将训练集作为 data
10. 分别计算 x 与 data中所有行的欧式距离
11. 对求得的欧式距离进行排序,并提取排序后的序号
12. 取前 k 个序号,在 data 中对应序号的行作为 x 的knn
13. 循环 x 的每个knn样本点,分别计算每个样本点的 knn,并提取每个样本点的 knn 的序号
14. if x 的索引 in 样本点 i 的knn序号 then
将该样本点设置为 x 的互knn
end
15. 在 x 的互knn 中计算类别号最多的类别作为 x 的预测类别
16. 转第 9 步循环测试集,计算精确度.