如何用Python写一个简易的k均值聚类算法
时间: 2023-05-19 15:01:20 浏览: 147
可以使用Python中的scikit-learn库来实现简易的k均值聚类算法。以下是一个示例代码:
```python
from sklearn.cluster import KMeans
import numpy as np
# 生成随机数据
X = np.random.rand(100, 2)
# 定义k值
k = 3
# 初始化k均值聚类模型
kmeans = KMeans(n_clusters=k)
# 训练模型
kmeans.fit(X)
# 打印聚类结果
print(kmeans.labels_)
```
在这个示例中,我们首先生成了100个随机的二维数据点,然后定义了k值为3。接着,我们使用scikit-learn库中的KMeans类来初始化一个k均值聚类模型,并使用fit()方法训练模型。最后,我们打印出聚类结果,即每个数据点所属的簇的标签。
相关问题
机器学习无监督学习聚类算法
### 无监督学习中的聚类算法概述
聚类作为一种无监督学习方法,旨在依据数据样本间的特征相似性将其划分为若干组群[^1]。此过程无需预先标注的数据指导,适用于探索未知结构或模式的数据集。
#### K-means 聚类详解
K-means 是一种广泛应用的聚类技术,以其高效的执行速度和简易的操作流程著称于各类应用场景之中[^2]。该算法通过迭代优化簇中心位置实现对输入空间的有效分割;具体而言,在初始化阶段随机选定k个质心作为初始类别代表点之后,不断重复分配各观测值至最近邻近质心所属分类并重新计算新均值直至满足终止条件为止。
```python
from sklearn.cluster import KMeans
import numpy as np
# 创建模拟二维数据集
X = np.array([[1, 2], [1, 4], [1, 0],
[4, 2], [4, 4], [4, 0]])
# 构建K-means模型实例
model = KMeans(n_clusters=2)
# 训练模型
model.fit(X)
# 输出预测标签及最终确定下来的质心坐标
print(model.labels_)
print(model.cluster_centers_)
```
上述代码片段展示了如何利用 `scikit-learn` 库快速构建一个简单的K-means聚类器,并完成对于给定数据点集合的初步划分操作[^5]。
为了进一步提升K-means的表现力及其适应范围,研究者们提出了多种变体方案,比如针对大规模数据集设计的小批量版本 Mini-batch K-means 或者具备更好起始参数选取机制的 K-means++ 算法形式[^4]。这些改进措施有助于克服传统方法中存在的局限性问题,从而使得更多类型的现实世界挑战得以妥善解决。
大数据预测算法有哪几种
### 大数据预测算法的主要类型
#### k均值聚类算法
k均值聚类是一种划分聚类算法,因其简洁性和高效性而被广泛应用。该方法通过设定一个特定的距离函数,在给定的数据点集合中反复迭代直到形成预设数量 \( k \) 的簇[^1]。
```python
from sklearn.cluster import KMeans
import numpy as np
X = np.array([[1, 2], [1, 4], [1, 0],
[4, 2], [4, 4], [4, 0]])
kmeans = KMeans(n_clusters=2).fit(X)
print(kmeans.labels_)
```
这段代码展示了如何利用Python中的`sklearn`库实现简单的二维空间内的K-means聚类操作。
#### 推荐系统算法
推荐系统的常见算法包括但不限于协同过滤、基于内容的推荐以及混合型推荐方案。这些技术旨在根据用户的过往活动记录和个人偏好来提供个性化的产品或服务建议[^2]。
对于基于用户相似度的协同过滤而言:
```python
from surprise import Dataset, Reader, KNNWithMeans
from surprise.model_selection import cross_validate
reader = Reader(line_format='user item rating timestamp', sep=',')
data = Dataset.load_from_file('ratings.csv', reader=Reader())
algo = KNNWithMeans(k=50, sim_options={'name': 'pearson_baseline'})
cross_validate(algo, data, measures=['RMSE'], cv=3, verbose=True)
```
此段脚本说明了怎样借助Surprise库执行基于内存的协作过滤计算。
#### 关联规则挖掘算法
此类算法致力于发现事物之间的潜在联系模式,例如市场篮子分析就是典型的应用场景之一。Apriori和FP-Growth是两种常用的关联规则提取工具。
下面是一个简易版Apriori算法的例子:
```python
from mlxtend.frequent_patterns import apriori, association_rules
from pandas import DataFrame
df = DataFrame({'Milk': [1, 0, 1, 1], 'Bread': [1, 1, 0, 1]})
frequent_itemsets = apriori(df, min_support=0.6, use_colnames=True)
rules = association_rules(frequent_itemsets, metric="lift", min_threshold=1)
print(rules)
```
这里运用Pandas配合mlxtend包完成了频繁项集和支持度统计的任务。
#### 客户群选择模型
为了更精准地定位目标顾客并评估其消费潜力,可以构建专门针对客户细分的选择模型。这通常涉及对消费者在线足迹(如页面访问频率、加入收藏夹的动作等)以及其他交互特征的学习处理过程[^3]。
随机森林分类器可用于创建这样的预测框架:
```python
from sklearn.ensemble import RandomForestClassifier
from sklearn.datasets import make_classification
X, y = make_classification(n_samples=1000, n_features=20,
n_informative=2, n_redundant=10,
random_state=42)
clf = RandomForestClassifier(max_depth=2, random_state=0)
clf.fit(X, y)
predictions = clf.predict_proba(X)
sorted_indices = predictions[:, 1].argsort()[::-1]
top_customers = sorted_indices[:100]
```
上述实例体现了采用随机森林来进行高价值客户的识别工作。
阅读全文
相关推荐













