使用 python 聚类数据
Clustering data with python
我尝试使用 python 和 scikit-learn 对我的数据集进行聚类。这是我大学的一次练习。数据集如下所示:
StationNr A1 A2 A3 A4 A5 A6 A7 A8 A9 A10 A11 A12
0 2.45 4.32 3.5 1.89 2.87 4.34 2.67 3.90 3.97 2.61 3.01 2.95
1200 3.01 2.95 3.53 1.8 2.8 4.3 2.67 2.87 2.45 4.32 3.53 2.95
“StationNr”列具有以下不同的值:
[ 0, 1200, 900, 100, 400, 300, 600, 200, 1100, 500,
1000, 800, 700]
如果“StationNr”中有一个零,则表示该产品是好的。其他数字的含义是,产品在哪个站报废。
“A%”列具有以下不同的值,这些列代表一个处理站:
[ 2.017, 1.767, 0.987, ..., 24.083, 18.977, 4.904]
“A1”大约有 4000 个不同的值。此值是站上处理的持续时间。
现在,我想知道,在站点(A1,A2,A3 ...,A11,A12)上的处理持续时间是否存在集群,例如单个值或值的组合,这就是结果是坏产品还是好产品。好的产品有“StationNr”== 0,坏的产品有“StationNr”!= 0。
我 select k-Means 算法来探索数据,但我不知道如何在 python 代码中结合 k-Means 进行练习。
也许 k-Means 不是这种情况下的最佳算法,如果您提出更好的算法,我会很高兴。
我是这个主题的新手,如果你能帮助我对数据进行聚类,我会很高兴。
此致
基督教徒
在sklearn
中给出了近10种用于聚类目的的算法。例如Birch、DBSCAN、K-Means、Spectral等。您可以找到完整列表 here in the documentation.
您只需将数据放入模型并应用 fit
方法。您还需要传递必要的参数,例如 k-means
.
中的簇数
我想这是一个数据框,我将其命名为 df
所以一个工作示例可以是这样的:
X = df.values
from sklearn.cluster import Birch, KMeans, SpectralClustering, AgglomerativeClustering, DBSCAN
brc = Birch(n_clusters=None) # with int value, it'll perform Agglomerative Clustering
brc.fit(X)
brc.predict(X) # array of points belonging to unique clusters
kmeans = KMeans(n_clusters=2, random_state=0).fit(X)
kmeans.labels_ # array of clusters according to indices
clustering = SpectralClustering(n_clusters=2, assign_labels="discretize",random_state=0).fit(X)
clustering.labels_ # label of each data point belonging to the cluster
clustering = AgglomerativeClustering().fit(X)
clustering.labels_
clustering = DBSCAN(eps=3, min_samples=2).fit(X)
clustering.labels_
试试让我知道。如果有帮助,请投票并采纳为答案。
我尝试使用 python 和 scikit-learn 对我的数据集进行聚类。这是我大学的一次练习。数据集如下所示:
StationNr A1 A2 A3 A4 A5 A6 A7 A8 A9 A10 A11 A12
0 2.45 4.32 3.5 1.89 2.87 4.34 2.67 3.90 3.97 2.61 3.01 2.95
1200 3.01 2.95 3.53 1.8 2.8 4.3 2.67 2.87 2.45 4.32 3.53 2.95
“StationNr”列具有以下不同的值:
[ 0, 1200, 900, 100, 400, 300, 600, 200, 1100, 500,
1000, 800, 700]
如果“StationNr”中有一个零,则表示该产品是好的。其他数字的含义是,产品在哪个站报废。
“A%”列具有以下不同的值,这些列代表一个处理站:
[ 2.017, 1.767, 0.987, ..., 24.083, 18.977, 4.904]
“A1”大约有 4000 个不同的值。此值是站上处理的持续时间。
现在,我想知道,在站点(A1,A2,A3 ...,A11,A12)上的处理持续时间是否存在集群,例如单个值或值的组合,这就是结果是坏产品还是好产品。好的产品有“StationNr”== 0,坏的产品有“StationNr”!= 0。
我 select k-Means 算法来探索数据,但我不知道如何在 python 代码中结合 k-Means 进行练习。
也许 k-Means 不是这种情况下的最佳算法,如果您提出更好的算法,我会很高兴。
我是这个主题的新手,如果你能帮助我对数据进行聚类,我会很高兴。
此致
基督教徒
在sklearn
中给出了近10种用于聚类目的的算法。例如Birch、DBSCAN、K-Means、Spectral等。您可以找到完整列表 here in the documentation.
您只需将数据放入模型并应用 fit
方法。您还需要传递必要的参数,例如 k-means
.
我想这是一个数据框,我将其命名为 df
所以一个工作示例可以是这样的:
X = df.values
from sklearn.cluster import Birch, KMeans, SpectralClustering, AgglomerativeClustering, DBSCAN
brc = Birch(n_clusters=None) # with int value, it'll perform Agglomerative Clustering
brc.fit(X)
brc.predict(X) # array of points belonging to unique clusters
kmeans = KMeans(n_clusters=2, random_state=0).fit(X)
kmeans.labels_ # array of clusters according to indices
clustering = SpectralClustering(n_clusters=2, assign_labels="discretize",random_state=0).fit(X)
clustering.labels_ # label of each data point belonging to the cluster
clustering = AgglomerativeClustering().fit(X)
clustering.labels_
clustering = DBSCAN(eps=3, min_samples=2).fit(X)
clustering.labels_
试试让我知道。如果有帮助,请投票并采纳为答案。