半监督学习和聚类都是机器学习中常用的方法。半监督学习通常是指模型在一部分有标签样本和一部分没有标签样本的情况下进行训练,而聚类则是通过将具有相似特征的样本划分到同一个簇中来获得数据的结构信息。
下面是一些基于Python实现半监督学习和聚类的示例代码:
半监督学习:
使用scikit-learn库中的LabelPropagation和LabelSpreading进行半监督学习。
from sklearn.semi_supervised import LabelPropagation, LabelSpreading
from sklearn.datasets import make_classification
from sklearn.model_selection import train_test_split
# 创建一个虚拟数据集
X, y = make_classification(n_samples=1000, n_features=10, n_informative=5, n_redundant=0, random_state=42)
# 划分有标签和无标签样本
X_l, X_u, y_l, y_u = train_test_split(X, y, test_size=0.9, random_state=42)
# 使用LabelPropagation
lp_model = LabelPropagation()
lp_model.fit(X_l, y_l)
lp_pred = lp_model.predict(X_u)
# 使用LabelSpreading
ls_model = LabelSpreading(kernel='knn', n_neighbors=10)
ls_model.fit(X_l, y_l)
ls_pred = ls_model.predict(X_u)
聚类:
使用scikit-learn库中的KMeans和AgglomerativeClustering进行聚类。
from sklearn.cluster import KMeans, AgglomerativeClustering
from sklearn.datasets import make_blobs
import matplotlib.pyplot as plt
# 创建一个虚拟数据集
X, y = make_blobs(n_samples=100, centers=3, n_features=2, random_state=42)
# 使用KMeans
kmeans_model = KMeans(n_clusters=3)
kmeans_model.fit(X)
kmeans_pred = kmeans_model.predict(X)
# 使用层次聚类
agg_model = AgglomerativeClustering(n_clusters=3)
agg_pred = agg_model.fit_predict(X)
# 可视化结果
plt.scatter(X[:, 0], X[:, 1], c=kmeans_pred)
plt.title("KMeans")
plt.show()
plt.scatter(X[:, 0], X[:, 1], c=agg_pred)
plt.title("Agglomerative Clustering")
下一篇:半监督学习深度学习