【机器学习系列(3)】无监督学习实战:聚类与降维的核心技术

【机器学习系列(3)】无监督学习实战:聚类与降维的核心技术

一、无监督学习概述

无监督学习(Unsupervised Learning) 从无标签数据中发现隐藏模式。主要应用于:

  • 数据聚类(Group similar data)
  • 异常检测(Identify outliers)
  • 特征降维(Reduce dimensionality)

二、K-Means聚类算法详解

算法步骤

  1. 随机选择K个初始质心
  2. 将数据点分配到最近的质心
  3. 重新计算质心位置
  4. 重复2-3步直到收敛
from sklearn.cluster import KMeans
from sklearn.datasets import make_blobs

# 生成模拟数据
X, _ = make_blobs(n_samples=500, centers=3, random_state=42)

# 训练模型
kmeans = KMeans(n_clusters=3, n_init=10)
kmeans.fit(X)

# 查看聚类结果
print(f"质心位置:\n{kmeans.cluster_centers_}")
print(f"前10个样本的簇标签:{kmeans.labels_[:10]}")

三、主成分分析(PCA)降维

数学原理

通过正交变换将相关特征转换为线性无关的主成分,保留最大方差方向

from sklearn.decomposition import PCA
from sklearn.datasets import load_digits

# 加载手写数字数据集
digits = load_digits()
X = digits.data

# 应用PCA
pca = PCA(n_components=2)
X_pca = pca.fit_transform(X)

# 查看方差解释率
print(f"各主成分方差解释率:{pca.explained_variance_ratio_}")

四、聚类质量评估方法

1. 内部评估(无需真实标签)

from sklearn.metrics import silhouette_score

# 计算轮廓系数(-1到1,越大越好)
score = silhouette_score(X, kmeans.labels_)
print(f"轮廓系数:{score:.2f}")

2. 外部评估(已知真实标签)

from sklearn.metrics import adjusted_rand_score

# 生成真实标签
_, y_true = make_blobs(n_samples=500, centers=3, random_state=42)

# 计算调整兰德指数(-0.2到1,越大越好)
ari = adjusted_rand_score(y_true, kmeans.labels_)
print(f"调整兰德指数:{ari:.2f}")

五、实战项目:顾客分群分析

import pandas as pd
from sklearn.preprocessing import StandardScaler

# 加载数据集(假设包含年龄、消费频率、平均消费金额)
data = pd.read_csv("customers.csv")
X = data[['age', 'purchase_freq', 'avg_spending']]

# 数据预处理
scaler = StandardScaler()
X_scaled = scaler.fit_transform(X)

# 降维可视化
pca = PCA(n_components=2)
X_pca = pca.fit_transform(X_scaled)

# 聚类分析
kmeans = KMeans(n_clusters=4)
clusters = kmeans.fit_predict(X_scaled)

# 分析聚类特征
data['cluster'] = clusters
print(data.groupby('cluster').mean())

六、下期预告

《机器学习系列(4)》将深入探讨:

  • 关联规则挖掘(Apriori算法)
  • 异常检测常用方法
  • 推荐系统基础原理

最佳实践提示:

  1. 使用scaler.inverse_transform可还原标准化前的数据尺度
  2. 通过PCA().fit(X).cumsum()查看累计方差解释率
  3. 尝试不同聚类算法:DBSCAN, AgglomerativeClustering
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值