赞
踩
导语:上一节我们详细探索监督学习的进阶应用,详情可见:
目录
DBSCAN(Density-Based Spatial Clustering of Applications with Noise)
非监督学习像一位探险家,挖掘未标记数据的未知领域。它不依赖预先定义的类别或标签,而是试图揭示数据自身的结构和关系。这种学习方式在处理复杂数据集时尤其有价值,因为它能发现人类可能未曾预见的模式和联系。
聚类算法是一种重要的非监督学习技术,它旨在将数据集中的样本分组成若干个簇,使得同一簇内的样本相似度高,而不同簇内的样本相似度低。聚类在许多领域中都有广泛应用,如市场细分、社交网络分析、计算生物学以及图像分割等。
K-均值是最流行的聚类算法之一,因其简单高效而广泛应用。算法通过迭代过程将数据分为K个簇,每个簇由其质心(簇内点的平均值)定义。K-均值的主要挑战在于K值的选择,这通常需要领域知识或使用如肘部法则(Elbow Method)等技术来确定。
层次聚类通过创建一个簇的层次结构来进行聚类,可以是自底向上的聚合方法(也称为凝聚聚类),或是自顶向下的分裂方法。凝聚聚类开始时将每个数据点视为一个独立的簇,然后逐渐合并为更大的簇,直到达到所需的簇数量或满足某个终止条件。层次聚类不需要预先指定簇的数量,且可以通过树状图(Dendrogram)直观地展示簇是如何合并或分裂的。
DBSCAN是一种基于密度的聚类算法,能够识别出任意形状的簇,并且能够处理噪声和孤立点。它的核心概念是核心点、边界点和噪声点。算法通过查找被低密度区域分隔的高密度区域来形成簇。DBSCAN的优点是不需要预先指定簇的数量,且对于簇的形状和大小具有较好的适应性。
聚类算法是探索数据内在结构的强大工具,每种算法都有其独特的优势和适用场景。选择合适的聚类算法需要考虑数据的特性、应用场景的需求以及算法的限制。通过实践应用和结果可视化,我们可以更深入地理解聚类算法在解决实际问题中的作用和价值。下面是一个使用K-均值聚类的Python示例:
- from sklearn.cluster import KMeans
- import matplotlib.pyplot as plt
- import pandas as pd
-
- # 假设data是包含特征的DataFrame
- data = pd.DataFrame({
- 'Feature1': [1.0, 1.5, 3.0, 5.0, 3.5, 4.5, 3.5],
- 'Feature2': [1.0, 2.0, 4.0, 7.0, 5.0, 5.0, 4.5]
- })
-
- # 应用K-均值聚类
- kmeans = KMeans(n_clusters=2) # 假设我们将数据分为2个簇
- kmeans.fit(data)
-
- # 可视化聚类结果
- plt.scatter(data['Feature1'], data['Feature2'], c=kmeans.labels_, cmap='rainbow')
- plt.xlabel('Feature 1')
- plt.ylabel('Feature 2')
- plt.title('K-Means Clustering')
- plt.show()
降维是非监督学习中的一种重要技术,用于减少数据集的特征数量,同时尽可能保留原始数据的重要信息。这一过程对于处理高维数据集尤其重要,因为高维数据不仅增加了计算的复杂性,还可能引入噪声,导致模型性能下降(这一现象被称为“维度的诅咒”)。通过降维,我们可以提高数据处理的效率,改善模型的性能,并且使数据的可视化变得更加直观。
主成分分析(PCA)是最常用的降维技术之一。它通过线性变换将数据转换到新的坐标系统中,使得任何投影数据的第一大方差位于第一个坐标(称为第一主成分),第二大方差位于第二个坐标,依此类推。PCA能够揭示数据中的内在结构,减少冗余信息,而且通常用于数据预处理、数据可视化或准备数据以供后续的机器学习任务使用。
线性判别分析(LDA)不仅是一种降维技术,也是一种分类方法。与PCA不同,LDA在降维时考虑了类别标签,目标是最大化不同类别之间的距离,同时最小化同一类别内的距离。这使得LDA成为一种监督学习技术,适用于分类问题中的特征降维。
t-SNE是一种非常有效的高维数据降维技术,尤其适用于数据可视化。它通过将高维数据中的相似对象转换为在低维空间中紧密聚集的点,而将不相似的对象转换为在低维空间中相距较远的点,从而保留了数据的局部结构。t-SNE非常适合于将高维数据降至2维或3维以便进行可视化。
降维技术在数据预处理、特征工程和数据可视化中扮演着重要角色。通过合理选择和应用降维方法,我们可以更有效地处理和分析数据,揭示数据的内在结构,同时减轻后续机器学习模型的计算负担。在实际应用中,选择合适的降维技术需要考虑数据的特性、任务的需求以及技术的优缺点。以下是使用PCA进行降维的Python示例:
- from sklearn.decomposition import PCA
- import matplotlib.pyplot as plt
- import pandas as pd
-
- # 假设data是包含多个特征的DataFrame
- data = pd.DataFrame({
- 'Feature1': [1.0, 1.5, 3.0, 5.0, 3.5, 4.5, 3.5],
- 'Feature2': [1.0, 2.0, 4.0, 7.0, 5.0, 5.0, 4.5],
- 'Feature3': [2.0, 3.5, 2.0, 5.0, 4.0, 5.0, 3.5]
- })
-
- # 应用PCA进行降维
- pca = PCA(n_components=2) # 将数据降至2维
- reduced_data = pca.fit_transform(data)
-
- # 可视化降维结果
- plt.scatter(reduced_data[:, 0], reduced_data[:, 1])
- plt.xlabel('Principal Component 1')
- plt.ylabel('Principal Component 2')
- plt.title('PCA Result')
- plt.show()
除了上面所说的两种外,处理未标记数据并试图发现数据内在结构或模式的机器学习方法还有一个,就是关联规则学习,它是一种重要的数据挖掘技术,用于发现数据集中变量之间的有意义的关系。这种技术通常用于事务数据集,如零售市场的购物篮分析,以发现不同物品之间的关联性。关联规则的典型例子是“如果购买了物品A(如啤酒),则也可能购买物品B(如薯片)”。这种分析有助于零售商理解顾客的购买行为,从而优化产品布局、库存管理和促销策略。
在超市购物篮分析中,关联规则学习可以揭示哪些产品常常一起被购买。这些信息可以用来指导许多商业决策,如:
使用Apriori算法进行关联规则学习的Python示例:
- from mlxtend.frequent_patterns import apriori, association_rules
- from mlxtend.preprocessing import TransactionEncoder
- import pandas as pd
-
- # 示例数据集,表示购物篮中的商品
- dataset = [['Milk', 'Bread', 'Beer'],
- ['Milk', 'Bread'],
- ['Bread', 'Beer'],
- ['Milk', 'Eggs'],
- ['Bread', 'Eggs']]
-
- # 将数据集转换为适合机器学习模型的格式
- te = TransactionEncoder()
- te_ary = te.fit(dataset).transform(dataset)
- df = pd.DataFrame(te_ary, columns=te.columns_)
-
- # 使用Apriori算法找出频繁项集
- frequent_itemsets = apriori(df, min_support=0.6, use_colnames=True)
-
- # 生成关联规则
- rules = association_rules(frequent_itemsets, metric="confidence", min_threshold=0.7)
-
- # 显示关联规则
- print(rules[['antecedents', 'consequents', 'support', 'confidence', 'lift']])
下一节我们将进行监督与非监督学习的结合探索
-----------------
以上,欢迎点赞收藏、评论区交流
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。