无监督聚类(图)的一些方法比较---待整理和完善

本文对比了多种无监督聚类方法,特别是介绍了蔡登的非负矩阵分解(GNMF)算法,提供了一个百度云的代码下载链接,并引用了相关的博客文章来源。

无监督聚类(图)的一些方法比较---待整理和完善

 

 

代码整理:

GNMF(蔡登Non-negative Matrix Factorization on Manifold):百度云链接: http://pan.baidu.com/s/1pLGLnzd 密码: nb45

转载于:https://www.cnblogs.com/Jerry-PR/articles/5403455.html

<think>好的,用户让我写一个聚类代码,处理工业芯片的像数据,分为passfail,目的是通过聚类整理瑕疵特征,然后准备数据用于训练模型。首先,我需要明确用户的需求。他们可能是在做质量检测,希望通过无监督方法聚类)来发现不同类型的瑕疵,进而为监督学习准备带标签的数据。 用户的数据是像,所以聚类应该基于像特征。可能需要先进行特征提取,比如使用预训练的CNN(如ResNet)来提取特征向量。然后使用聚类算法,如K-means或者DBSCAN,将特征向量分成不同的类别。接下来,可能需要分析聚类结果,确定哪些聚类对应pass,哪些对应fail,或者是否有新的瑕疵类型出现。 需要注意的是,用户可能没有明确说明数据的格式规模。比如,像是否已经预处理过,是否有标注数据,或者只是部分标注。这时候可能需要假设一些步骤,比如使用迁移学习来提取特征,或者使用数据增强来增加样本量。另外,聚类后的数据需要如何整理,是否需要可视化,或者生成标注文件供后续模型训练使用。 可能的步骤包括:加载像数据,预处理(调整大小、归一化等),特征提取,聚类,分析聚类结果,生成标签数据。代码可能需要使用PyTorch或TensorFlow来处理像,使用scikit-learn进行聚类。此外,用户可能需要评估聚类效果,比如轮廓系数,或者可视化t-SNE来观察聚类分布。 需要考虑到工业芯片像可能有细微的瑕疵,所以特征提取要足够敏感。如果数据量大,可能需要考虑计算效率,使用PCA降维或者选择更高效的聚类算法。另外,处理后的数据如何保存,比如生成CSV文件或HDF5格式,方便后续模型训练。 最后,用户可能需要进一步的步骤,比如如何利用聚类结果生成训练数据,是否需要人工审核聚类结果,或者如何将聚类标签转换为监督学习的标签。可能需要建议后续的流程,比如使用聚类结果作为初始标签,然后进行半监督学习或主动学习,逐步完善数据标注。</think>以下是一个基于像特征提取K-means聚类的工业芯片瑕疵分析代码框架: ```python import cv2 import numpy as np from sklearn.cluster import KMeans from sklearn.decomposition import PCA from tensorflow.keras.applications import ResNet50 from tensorflow.keras.preprocessing import image # 1. 数据加载与预处理 def load_chip_images(data_dir): img_paths = [f for f in os.listdir(data_dir) if f.endswith('.jpg')] images = [cv2.imread(os.path.join(data_dir, img)) for img in img_paths] return np.array(images), img_paths # 2. 特征提取(使用预训练ResNet50) def extract_features(images): model = ResNet50(weights='imagenet', include_top=False, pooling='avg') features = [] for img in images: img = cv2.resize(img, (224, 224)) x = image.img_to_array(img) x = np.expand_dims(x, axis=0) x = preprocess_input(x) features.append(model.predict(x).flatten()) return np.array(features) # 3. 特征降维 def reduce_dimensions(features, n_components=50): pca = PCA(n_components=n_components) return pca.fit_transform(features) # 4. 聚类分析 def cluster_features(features, n_clusters=5): kmeans = KMeans(n_clusters=n_clusters, random_state=42) return kmeans.fit_predict(features) # 5. 聚类可视化分析 def analyze_clusters(labels, img_paths, cluster_dir='clustered_images'): os.makedirs(cluster_dir, exist_ok=True) for i, label in enumerate(labels): cluster_path = os.path.join(cluster_dir, f'cluster_{label}') os.makedirs(cluster_path, exist_ok=True) shutil.copy(img_paths[i], os.path.join(cluster_path, os.path.basename(img_paths[i]))) # 主流程 if __name__ == '__main__': data_dir = 'path/to/chip/images' images, img_paths = load_chip_images(data_dir) features = extract_features(images) reduced_features = reduce_dimensions(features) labels = cluster_features(reduced_features) analyze_clusters(labels, img_paths) ``` 聚类完成后,可进行以下数据准备步骤: 1. 人工审核各聚类结果,确定瑕疵类型 2. 为每个聚类分配类别标签(pass/fail/新类型) 3. 生成标注文件(CSV格式示例): ```csv image_path,label /path/to/cluster_0/image1.jpg,pass /path/to/cluster_1/image2.jpg,micro_crack ... ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值