张掖网站建设培训班,wordpress早教模板,山西省吕梁市天气,商务网站内容维护范围目录
6.1 为什么正确率有时不能有效评估分类算法#xff1f;
6.2 什么样的分类器最好#xff1f;
6.3 什么是聚类#xff0c;你知道哪些聚类算法#xff1f;
6.4 K-Means聚类算法如何调优?
6.5 K-Means聚类算法如何选择初始点?
6.6 K-Means聚类聚的是特征还是样本 …目录
6.1 为什么正确率有时不能有效评估分类算法
6.2 什么样的分类器最好
6.3 什么是聚类你知道哪些聚类算法
6.4 K-Means聚类算法如何调优?
6.5 K-Means聚类算法如何选择初始点?
6.6 K-Means聚类聚的是特征还是样本
6.7 K-Means 欢迎大家订阅我的专栏一起学习共同进步主要针对25届应届毕业生
祝大家早日拿到offer lets go http://t.csdnimg.cn/lSA8k 算法类别 优点 缺点 Bayes 贝叶斯分类 1 所需估计的参数少对于缺失数据不敏感 2有着坚实的数学基础以及稳定的分类效率 1需要假设属性之间相互独立这往往并不成立喜欢吃番茄、鸡蛋却不喜欢吃番茄炒蛋 2需要知道先验概率 3分类决策存在错误率 SVM 支持向量机 1可以解决小样本下机器学习的问题 2提高泛化性能 3可以解决高维、非线性问题。超高维文本分类仍受欢迎 4避免神经网络结构选择和局部极小问题 1对缺失数据敏感 2内存消耗大难以解释 3运行和调参繁琐 KNN K近邻 1思想简单理论成熟既可以用来做分类也可以用来做回归 2可用于非线性分类 3训练时间复杂度为O(n) 4准确度高对数据没有假设对outlier不敏感 1计算量太大 2对于样本分类不均衡的问题会产生误判 3需要大量的内存 4输出的可解释性不强 Logistic Regression 逻辑回归 1速度快 2简单易于理解直接看到各个特征的权重 3能容易地更新模型吸收新的数据 4如果想要一个概率框架动态调整分类阀值 1特征处理复杂需要归一化和较多的特征工程 Neural Network 神经网络 1分类准确率高 2并行处理能力强 3分布式存储和学习能力强 4鲁棒性较强不易受噪声影响 1需要大量参数网络拓扑、阀值、阈值 2结果难以解释 3训练时间过长
6.1 为什么正确率有时不能有效评估分类算法
假设我们正在开发一个模型来诊断罕见疾病。在这种情况下罕见疾病的发病率可能非常低例如仅占所有病例的百分之一。因此我们的数据集中会有大量的健康样本类别0而罕见疾病的样本数量相对较少类别1。
现在假设我们开发了一个简单的模型该模型倾向于将所有样本都预测为健康类别0因为这样可以获得很高的整体准确率。然而对于罕见疾病的样本这样的模型将无法提供有效的诊断因为它几乎总是预测为健康。
在这种情况下我们需要采取措施来解决数据不平衡问题确保模型能够在诊断罕见疾病时具有良好的性能。我们可以使用类似于前面提到的解决方案例如重采样、类别权重调整、使用不同的评价指标等来处理数据不平衡。
出现这种现象的原因主要是数据分布不均衡类别为1的数据太少错分了类别1但达到很高的正确率此时失效。
6.2 什么样的分类器最好
在确保一定正确率前提下要求分类器的召回率尽量高。
6.3 什么是聚类你知道哪些聚类算法
什么是聚类
聚类是按照某个特定标准把一个数据集分割成不同的类或簇使得同一个簇内的数据对象的相似性尽可能大同时不在同一簇中的数据对象的差异性也尽可能地大。即聚类后同一类的数据尽可能聚集到一起不同类数据尽量分离。
主要可划分为
K-Means聚类均值漂移聚类基于密度的空间聚类算法高斯混合模型的期望最大化聚类凝聚层次聚类
K-Means聚类
基本K-Means算法的思想很简单事先确定常数K常数K意味着最终的聚类类别数首先随机选定初始点为质心并通过计算每一个样本与质心之间的相似度(这里为欧式距离)将样本点归到最相似的类中接着重新计算每个类的质心(即为类中心)重复这样的过程直到质心不再改变最终就确定了每个样本所属的类别以及每个类的质心。由于每次都要计算所有的样本与每一个质心之间的相似度故在大规模的数据集上K-Means算法的收敛速度比较慢。
K-means 聚类流程
首先确定一个k值即希望将数据集经过聚类得到k个集合。从数据集中随机选择k个数据点作为质心。对数据集中每一个点计算其与每一个质心的距离如欧式距离离哪个质心近就划分到那个质心所属的集合。把所有数据归好集合后一共有k个集合。然后重新计算每个集合的质心。如果新计算出来的质心和原来的质心之间的距离小于某一个设置的阈值表示重新计算的质心的位置变化不大趋于稳定或者说收敛可以认为聚类已经达到期望的结果算法终止。如果新质心和原质心距离变化很大需要迭代3~5步骤
6.4 K-Means聚类算法如何调优?
数据归一化和离群点的处理 k-means是根据欧式距离来度量数据的划分均值和方差大的数据会对结果有致命的影响。同时少量的噪声也会对均值产生较大的影响导致中心偏移。所以在聚类前一定要对数据做处理。选择合适的k值k-means方法在一开始确定簇时让所有簇中心坐标两两距离最远。
6.5 K-Means聚类算法如何选择初始点?
初始点随机分布k-means方法在一开始确定簇时让所有簇中心坐标两两距离最远
6.6 K-Means聚类聚的是特征还是样本
聚的是特征。
聚类的核心思想是将具有相似特征的事物给聚在一起也就是说聚类算法最终只能告诉我们哪些样本属于同一个类别而不能告诉我们每个样本具体属于什么类别。
6.7 K-Means
K-means与K-means原始K-means算法最开始随机选取数据集中K个点作为聚类中心而K-means按照如下的思想选取K个聚类中心假设已经选取了n个初始聚类中心(0nK)则在选取第n1个聚类中心时距离当前n个聚类中心越远的点会有更高的概率被选为第n1个聚类中心。在选取第一个聚类中心(n1)时同样通过随机的方法。可以说这也符合我们的直觉聚类中心当然是互相离得越远越好。这个改进虽然直观简单但是却非常得有效。
k-means code:
import numpy as npnp.random.seed(545)def wh_iou(wh1, wh2):# 返回nxm的IoU矩阵。wh1是nx2的数组wh2是mx2的数组wh1 wh1[:, None] # [N,1,2]# 通过添加维度将输入的边界框数组 wh1 和 wh2 转换为三维数组wh2 wh2[None] # [1,M,2]inter np.minimum(wh1, wh2).prod(2) # [N,M]# 这一行代码计算了交集部分的面积。它首先对 wh1 和 wh2 中的对应元素进行逐元素的最小值计算然后对第二个维度进行乘积运算。return inter / (wh1.prod(2) wh2.prod(2) - inter) # iou inter / (area1 area2 - inter)# wh1.prod(2) 和 wh2.prod(2) 计算了 wh1 和 wh2 中每个边界框的面积def k_means(boxes, k, distnp.median):YOLO的k-means聚类方法参考: https://github.com/qqwweee/keras-yolo3/blob/master/kmeans.py参数:boxes: 需要进行聚类的边界框k: 聚类中心的数量dist: 更新聚类中心的方法默认为中位数效果略优于均值box_number boxes.shape[0]last_nearest np.zeros((box_number,))# 创建一个长度为 box_number 的零数组用于存储上一次迭代时每个边界框所属的最近的聚类中心的索引。在算法的每次迭代中都会将当前迭代的结果与上一次迭代的结果进行比较以判断是否达到了收敛条件从而决定是否终止迭代。# 随机选择k个边界框作为初始聚类中心clusters boxes[np.random.choice(box_number, k, replaceFalse)] # replace 不重复的选取print((clusters))while True:# 计算每个边界框到每个聚类中心的距离: 1-IOU(边界框, 聚类中心)distances 1 - wh_iou(boxes, clusters)# 找到每个边界框最近的聚类中心current_nearest np.argmin(distances, axis1)# 如果聚类结果不再变化则退出循环收敛if (last_nearest current_nearest).all():break# 根据每个聚类中的边界框更新聚类中心for cluster in range(k):clusters[cluster] dist(boxes[current_nearest cluster], axis0)last_nearest current_nearestreturn clustersif __name__ __main__:boxes np.array([[10, 20],[15, 25],[30, 35],[40, 45],[50, 55],[60, 65]])# Number of clustersk 2# Call k_means functionclusters k_means(boxes, k)print(Cluster centers:\n, clusters)