📜  无监督机器学习(1)

📅  最后修改于: 2023-12-03 15:26:17.310000             🧑  作者: Mango

无监督机器学习

无监督机器学习是机器学习中的一个分支,它主要用于处理没有标记的数据集,即没有事先被分类或标签化的数据。

无监督学习的应用场景
  • 聚类:将数据集中的样本分成多个类别,使得同一个类别内的样本间距离较小,不同类别间的距离较大。
  • 降维:将高维数据转化成低维空间,从而方便可视化或者压缩数据。
  • 异常检测:从数据样本集中找出与其他样本不同的样本。
  • 关联规则学习:发现数据集中的关联规则,例如超市购物清单分析,推荐系统。
常见的无监督学习算法
1. K-Means 聚类算法

K-Means 算法是一种常见的聚类算法,基本思想是将原始数据聚集成 K 个类别,使得每个数据点都属于与其距离最近的那个聚类中心所代表的类别。K-Means 聚类算法的两个主要步骤是:1)初始化随机的 K 个聚类中心 2)不断迭代更新聚类中心的位置,直到聚类中心不再变化。

from sklearn.cluster import KMeans

kmeans = KMeans(n_clusters=3, random_state=0)  # 定义 KMeans 对象
kmeans.fit(data)  # 聚类
labels = kmeans.labels_  # 获取聚类结果
2. PCA 降维算法

PCA 是一种常见的线性降维算法,基本思想是将高维数据映射到低维空间。PCA 算法首先要对原始数据做一个中心化,然后计算数据的协方差矩阵,接着通过特征值分解来求得数据的主成分。PCA 的主要优点是能够提供数据的重要特征并且可以有效地去除冗余、噪声特征。

from sklearn.decomposition import PCA

pca = PCA(n_components=2)  # 定义 PCA 对象,设置降维后的维度为 2
new_data = pca.fit_transform(data)  # 降维处理
3. 离群点检测算法

离群点检测算法是无监督学习中的一种重要应用,它能够识别某个数据点是否属于数据集中的异常点。常见的离群点检测算法有基于统计学的 Z-score、箱型图和基于距离的 LOF 算法等。

from sklearn.neighbors import LocalOutlierFactor

clf = LocalOutlierFactor(n_neighbors=20, contamination=0.1)  # 调用 LOF 模型,contamination 参数可以调整异常值比例
y_pred = clf.fit_predict(X)  # 计算每个数据点的 LOF 得分,1 表示正常,-1 表示异常
4. Apriori 关联规则挖掘算法

Apriori 算法是一种关联规则挖掘算法,通过对数据集中频繁项集的挖掘,可以发现不同项之间的关联规则。Apriori 算法的核心是使用候选项集和支持度度量来对数据进行处理,候选项集是指可以组成频繁项集的所有项的集合,支持度度量是指该项集在数据集中出现的概率。

from mlxtend.frequent_patterns import apriori
from mlxtend.frequent_patterns import association_rules

frequent_itemsets = apriori(df, min_support=0.03, use_colnames=True)  # 使用 Apriori 查找频繁项集,min_support 表示最小支持度阈值
rules = association_rules(frequent_itemsets, metric="lift", min_threshold=1)  # 规则挖掘
结语

无监督机器学习是机器学习中的一个重要分支,它能够帮助我们更好地理解数据集并从中挖掘出有用的信息,从而使得机器学习算法更具鲁棒性和可靠性。以上介绍的只是无监督机器学习中的一些常见算法和应用场景,并不能代表全部,希望读者通过学习掌握更多有关无监督机器学习的知识和技术。