在文章开始之前,推荐一篇值得阅读的好文章!感兴趣的也可以去看一下,并关注作者!
今日推荐:快速上手 KSQL:轻松与数据库交互的利器
文章链接:https://cloud.tencent.com/developer/article/2465572
通过这篇文章,可以帮助你深入的理解KSQL,帮助我们掌握了基本的操作技巧。我们从连接数据库、创建表结构到执行 SQL 脚本,再到灵活运用变量和进行性能优化等方面,逐步熟悉了 KSQL 的强大功能。与传统的 SQL 工具相比,KSQL 提供了更高效的工作流,尤其是在处理数据库查询和调试时,灵活的命令行操作和可视化功能为开发者节省了大量的时间和精力。
from sklearn.cluster import KMeans
import matplotlib.pyplot as plt
import numpy as np
# 生成一些示例数据
X = np.random.rand(100, 2)
# 初始化K均值模型
kmeans = KMeans(n_clusters=3, random_state=42)
kmeans.fit(X)
# 获取聚类结果
labels = kmeans.labels_
# 可视化结果
plt.scatter(X[:, 0], X[:, 1], c=labels)
plt.scatter(kmeans.cluster_centers_[:, 0], kmeans.cluster_centers_[:, 1], s=300, c='red', marker='X')
plt.title("K-Means Clustering")
plt.show()
扩展:可进一步介绍K均值++初始化方法(K-means++),通过优化初始质心选择来提高收敛性和结果质量。
from sklearn.cluster import DBSCAN
import matplotlib.pyplot as plt
import numpy as np
# 生成一些示例数据
X = np.random.rand(100, 2)
# 初始化DBSCAN模型
dbscan = DBSCAN(eps=0.1, min_samples=5)
dbscan.fit(X)
# 获取聚类结果
labels = dbscan.labels_
# 可视化结果
plt.scatter(X[:, 0], X[:, 1], c=labels)
plt.title("DBSCAN Clustering")
plt.show()
派生算法:可介绍HDBSCAN(基于密度的层次聚类算法),它能在不同密度下自动调节,适用于密度变化较大的数据集。
from scipy.cluster.hierarchy import dendrogram, linkage
import matplotlib.pyplot as plt
import numpy as np
# 生成一些示例数据
X = np.random.rand(10, 2)
# 使用AGNES(层次聚类)
Z = linkage(X, method='ward')
# 可视化层次聚类的树状图
plt.figure(figsize=(10, 5))
dendrogram(Z)
plt.title("AGNES Hierarchical Clustering Dendrogram")
plt.show()
扩展:还可以介绍如何确定层次聚类的最佳分割点,比如通过树状图的“拐点”或使用轮廓系数评估分割效果。
常用指标:
from sklearn.metrics import silhouette_score
# 计算轮廓系数
score = silhouette_score(X, labels)
print(f'Silhouette Score: {score}')
import pandas as pd
import numpy as np
from sklearn.cluster import KMeans, DBSCAN, AgglomerativeClustering
from sklearn.feature_extraction.text import TfidfVectorizer
from sklearn.metrics import silhouette_score
from nltk.corpus import conll2003
from nltk import download
# 下载 CoNLL-2003 数据集
download('conll2003')
# 提取 CoNLL-2003 数据集
def load_conll_data():
sentences = []
for sentence in conll2003.iob_sents():
words = [word for word, _, _ in sentence]
sentences.append(" ".join(words))
return sentences
# 特征提取
def extract_features(texts):
vectorizer = TfidfVectorizer(stop_words='english')
return vectorizer.fit_transform(texts)
# 聚类评估
def evaluate_clustering(model, X):
labels = model.labels_ if hasattr(model, 'labels_') else model.predict(X)
return silhouette_score(X, labels)
# 加载数据
texts = load_conll_data()
# 提取特征
X = extract_features(texts)
# 初始化不同的聚类算法
kmeans = KMeans(n_clusters=5, random_state=42)
dbscan = DBSCAN(eps=0.5, min_samples=5)
agg_clustering = AgglomerativeClustering(n_clusters=5)
# 聚类模型训练
kmeans.fit(X)
dbscan.fit(X)
agg_clustering.fit(X)
# 聚类评估
kmeans_score = evaluate_clustering(kmeans, X)
dbscan_score = evaluate_clustering(dbscan, X)
agg_score = evaluate_clustering(agg_clustering, X)
# 输出评估结果
print(f"K-means Silhouette Score: {kmeans_score:.4f}")
print(f"DBSCAN Silhouette Score: {dbscan_score:.4f}")
print(f"Agglomerative Clustering Silhouette Score: {agg_score:.4f}")
实际应用场景:
挑战与创造都是很痛苦的,但是很充实。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。