深度学*-机器学*与K*邻交叉验证

一张图片有可以被表示为三维数组的形式,每个像素值从0到255

图像属性:染色通道 。

彩色图有三个:r,g,b。

黑白图有一个染色通道。例如某图片:300*100*3,值越大越黑。(图像是三维的 H*W*C)

对图片处理面对的挑战:光照角度,光照强度,形状改变,部分遮蔽,背景混入

机器学*常规套路:

1.收集数据并给定标签

2.训练一个分类器

3.测试,评估

K-*邻

对于不同的参数的选择对结果产生影响

对未知类别属性数据集中的点:
1.计算已知类别数据集中的点与当前点的距离

2.按照距离依次排序

3.选取与当前点距离最小的K个点

4.确定前K个点所在的类别出现的概率

5.返回前K个点出现频率最高的类别作为当前点预测分类

对于图像处理模块使用K*邻:

1.选取超参数的方法:将原始训练集分为训练集和验证集,我们在验证机上尝试不同的超参数,最后保留表现最好的

2.如果训练数据量不够,使用交叉验证的方法,帮助我们选取最优超参数的时候减少噪音

3.一旦找到最优的超参数,让算法以该参数在测试集跑且只跑一次,并根据测试结果评价算法

4,最*邻分类器能够在CIFAR-10上得到将*40%的准确率。该算法简单易实现,但需要存储所有训练数据,并且在测试的时候过于消耗计算能力

5.仅仅使用L1,L2范数来进行像素的比较是不够的,图像更多的时按照背景和颜色分类,而不是语义主体分身。

数据库样例:CIFAR-10

10个嘞标签

50000个训练数据

10000个测试数据

大小均为32*32

方式:计算像素点之间的差异值distance,像素点越小越暗

超参数:K*邻算法-4.超参数 - 凌晨四点的洛杉矶 - 博客园 (cnblogs.com)

  • 超参数:在算法运行之前需要决定的参数
  • 模型参数:算法过程中学*到的参数

KNN算法作为最简单的机器学*算法,它没有模型参数,下面讨论它的超参数
加载数据集:

from sklearn import datasets, neighbors, model_selection

data = datasets.load_digits()
x = data.data
y = data.target

x_train,x_test,y_train,y_test = model_selection.train_test_split(x,y,test_size=0.2)

寻找最好的k:

best_score = 0.0
best_k = -2
for k in range(1,15):
    knn_clf = neighbors.KNeighborsClassifier(n_neighbors=k)
    knn_clf.fit(x_train,y_train)
    score = knn_clf.score(x_test,y_test)
    if score > best_score:
        best_k = k
        best_score = score

  

训练集(train)验证集(validation)测试集(test)与交叉验证法

用交叉验证进行选择

训练集(train)验证集(validation)测试集(test)与交叉验证法 - 知乎 (zhihu.com)

交叉验证与训练集、验证集、测试集_九城风雪的博客-CSDN博客_交叉验证集

背景主导:如何让背景不影响,只让主题参加?

 

原文地址:https://www.cnblogs.com/Catherinezhilin/p/15087296.html