KMeans群集 - 在SVM中使用创建的群集

时间:2016-02-10 16:19:48

标签: python machine-learning svm k-means

我正在使用KMeans群集将数据拆分为2个群集,如下所示。

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
from sklearn import cluster
##################################################

# load data
clm = np.genfromtxt('data.csv',delimiter=',', skiprows=1)
X = clm[:,(1,12)].astype(float)

# define kmeans learner, then fit with data
kmeans = cluster.KMeans(n_clusters=2)
kmeans.fit(X)

# define centroids
centroids = kmeans.cluster_centers_
labels = kmeans.labels_

#print(centroids)
#print(labels)

#set color
colors = ["g.", "r."]

for i in range(len(X)):
    print("coordinate:",X[i], "label:", labels[i])
    plt.plot(X[i][0], X[i][1], colors[labels[i]], markersize= 10)


# plot
plt.scatter(centroids[:,0], centroids[:,1], marker = "x", s=150, linewidth = 5, zorder=10)
plt.xlabel('Read proportion')
plt.ylabel('Memory_used_Read')
plt.xlim(0,100)
plt.ylim(ymin=0)
plt.show()

enter image description here

在KMeans聚类中,对于集合S =(x,y),没有标记数据,而对于集合S输入x和目标数据y,在SVM中没有。我要做的是在SVM中单独使用创建的集群。我不知道如何为每个群集获取X,y。如果您有任何建议,请告诉我。

感谢。

1 个答案:

答案 0 :(得分:0)

这并不是100%清楚你要做的事情。如果要将群集分配用作类标签,则可以从y = kmeans.predict(X)获得y。特征X是相同的。像这样在SVM中使用它们:

y = kmeans.predict(X)

svm = SVM()
svm.fit(X, y)