【将fisheriris、COIL20与MNIST三个数据集输入非负矩阵分解算法中再通过Kmeans聚类并得到聚类评价(精度、NMI)】

非负矩阵分解

 非负矩阵分解(NMF)是一种常用的数据降维和特征提取方法,而Kmeans则是一种常用的聚类算法。

为了在给定的数据集上使用这些算法并评估聚类效果,我们需要进行以下步骤:

1.加载数据集
我们首先需要加载三个数据集:fisheriris、COIL20和MNIST。这可以通过Python中的scikit-learn库中的相应函数进行完成。

from sklearn.datasets import load_iris, fetch_openml, fetch_20newsgroups_vectorized
iris = load_iris()
coil20 = fetch_openml(name='coil20', version=1, cache=True)
mnist = fetch_openml('mnist_784', version=1, cache=True)

2.数据预处理
由于NMF和Kmeans算法都需要非负的输入数据,因此我们需要对数据进行预处理以确保其满足此要求。在这里,我们可以使用scikit-learn库中的MinMaxScaler函数将每个数据集中的特征值缩放到0到1的范围内。

from sklearn.preprocessing import MinMaxScaler
scaler = MinMaxScaler()

iris_scaled = scaler.fit_transform(iris.data)
coil20_scaled = scaler.fit_transform(coil20.data)
mnist_scaled = scaler.fit_transform(mnist.data)

3.使用NMF进行数据降维
接下来,我们可以使用NMF算法来对每个数据集进行降维。这可以通过scikit-learn库中的NMF函数实现。

from sklearn.decomposition import NMF

n_components = 3

nmf_iris = NMF(n_components=n_components)
iris_features = nmf_iris.fit_transform(iris_scaled)

nmf_coil20 = NMF(n_components=n_components)
coil20_features = nmf_coil20.fit_transform(coil20_scaled)

nmf_mnist = NMF(n_components=n_components)
mnist_features = nmf_mnist.fit_transform(mnist_scaled)

4.使用Kmeans进行聚类
现在,我们可以使用Kmeans算法对每个数据集进行聚类。这可以通过scikit-learn库中的KMeans函数实现。

from sklearn.cluster import KMeans

n_clusters = 3

kmeans_iris = KMeans(n_clusters=n_clusters)
iris_labels = kmeans_iris.fit_predict(iris_features)

kmeans_coil20 = KMeans(n_clusters=n_clusters)
coil20_labels = kmeans_coil20.fit_predict(coil20_features)

kmeans_mnist = KMeans(n_clusters=n_clusters)
mnist_labels = kmeans_mnist.fit_predict(mnist_features)

5.计算聚类评价
最后,我们可以计算聚类评价指标,例如精度和NMI(归一化互信息)来评估每个数据集上的聚类结果。这可以使用scikit-learn库中的相应函数完成。

from sklearn.metrics import accuracy_score, normalized_mutual_info_score

iris_accuracy = accuracy_score(iris.target, iris_labels)
iris_nmi = normalized_mutual_info_score(iris.target, iris_labels)

coil20_accuracy = accuracy_score(coil20.target, coil20_labels)
coil20_nmi

你可能感兴趣的:(智能家居,聚类,算法,矩阵,python,机器学习)