41、如何定义聚类?你能说出几种聚类算法吗?
聚类
聚类是识别相似实例并将它们分配到簇(即相似实例组)的任务。
常见的聚类算法
- K-Means
- DBSCAN
- 高斯混合模型
42、聚类算法的一些主要应用有哪些?
聚类算法的主要应用包括非线性降维、半监督学习、异常检测、密度估计等。
43、什么是标签传播?为什么要实现它,以及如何实现?
标签传播是将标签从有标签的实例传播到同一簇中其他无标签实例的过程。
实现标签传播的原因在于标记实例通常成本高且困难,尤其是由专家手动标记时,传播标签可以在使用较少标记实例的情况下提升模型性能。
实现方法:
- Scikit-Learn 提供了 LabelSpreading 和 LabelPropagation 类,它们会构建所有实例之间的相似度矩阵,并迭代地将标签从有标签实例传播到相似的无标签实例;
- 还可以通过代码实现:
y_train_propagated = np.empty(len(X_train), dtype=np.int64)
for i in range(k):
y_train_propagated[kmeans.labels_ == i] = y_representative_digits[i]
即把每个簇的代表实例的标签赋给该簇中的所有实例。
44、你能想出一个主动学习有用的用例吗?你会如何实施它?
用例
当需要持续改进模型和训练集时,主动学习很有用。例如在一些数据标注成本高、需要人工专业知识的场景,像医疗图像识别、复杂文本分类等。
实施步骤
- 在已收集的有标签实例上训练模型,并用该模型对所有无标签实例进行预测;
- 将模型最不确定(即估计概率最低)的实例交给专家进行标注;
- 重复上述过程,直到性能提升不再值得进行标注工作为止。
此外,还可以采用其他策略,如标注会导致模型变化最大、使模型验证误差下降最大或不同模型存在分歧的实例。
45、异常检测和新奇检测之间的区别是什么?
新奇检测假设算法在未受离群值污染的“干净”数据集上训练,而异常检测不做此假设。实际上,离群值检测常被用于清理数据集。
46、经典的奥利维蒂人脸数据集包含400张64×64像素的灰度人脸图像。每张图像被展平为一个大小为4096的一维向量。有40个不同的人被拍照(每人10次),通常的任务是训练一个模型,该模型可以预测每张图片中代表的是哪个人。使用sklearn.datasets.fetch_olivetti_faces()函数加载数据集,然后将其拆分为训练集、验证集和测试集(注意,数据集已经在0到1之间进行了缩放)。由于数据集相当小,需要使用分层抽样,以确保每个集合中每个人的图像数量相同。接下来,使用K - 均值算法对图像进行聚类,并使用轮廓系数法确定合适数量的簇。最后可视化这些簇,观察每个簇中是否有相似的人脸。
操作步骤
按照以下步骤操作:
- 使用
sklearn.datasets.fetch_olivetti_faces()函数加载奥利维蒂人脸数据集。 - 采用分层抽样将数据集拆分为训练集、验证集和测试集,保证每个集合中每个人的图像数量相同。
- 运用 K-均值算法对图像进行聚类,使用轮廓系数法确定合适的簇数量。
- 对聚类结果进行可视化,观察每个簇中是否有相似的人脸。
47、在Olivetti人脸数据集上训练一个高斯混合模型。为了加快算法速度,使用主成分分析(PCA)降低数据集的维度,保留99%的方差。使用该模型的sample()方法生成一些新的人脸,并将它们可视化,若使用了PCA,需要使用其inverse_transform()方法。修改一些图像,如进行旋转、翻转、变暗操作,比较正常图像和异常图像的score_samples()方法的输出,以此判断模型是否能检测到异常。
任务说明
要在Olivetti人脸数据集上完成以下操作:
- 训练高斯混合模型
- 进行降维处理
- 生成新图像
- 可视化结果
- 修改图像
- 检测异常
详细要求
- 降维 :使用PCA(主成分分析)方法,保留99%的方差。
- 生成新图像 :使用GMM(高斯混合模型)的
sample()方法生成新的图像样本。 - 可视化 :如果在可视化过程中使用了PCA,需使用
inverse_transform()方法将数据还原到原始空间。 - 异常检测 :通过比较正常图像与异常图像在
score_samples()方法输出上的差异,进行异常检测。
48、请简述如何利用降维技术进行异常检测,以Olivetti人脸数据集为例说明。
该方法是利用降维技术(如PCA)进行异常检测。以Olivetti人脸数据集为例,先通过PCA降维保留99%方差,计算各图像重构误差,再对比正常图像与修改后图像的重构误差,发现修改后图像重构误

最低0.47元/天 解锁文章
10万+

被折叠的 条评论
为什么被折叠?



