我使用KMeans聚类将数据分成两个聚类,如下所示。
import pandas as pdimport numpy as npimport matplotlib.pyplot as pltfrom sklearn import cluster################################################### 加载数据clm = np.genfromtxt('data.csv',delimiter=',', skiprows=1)X = clm[:,(1,12)].astype(float)# 定义KMeans学习器,然后用数据拟合kmeans = cluster.KMeans(n_clusters=2)kmeans.fit(X)# 定义中心点centroids = kmeans.cluster_centers_labels = kmeans.labels_#print(centroids)#print(labels)#设置颜色colors = ["g.", "r."]for i in range(len(X)): print("坐标:",X[i], "标签:", labels[i]) plt.plot(X[i][0], X[i][1], colors[labels[i]], markersize= 10)# 绘图plt.scatter(centroids[:,0], centroids[:,1], marker = "x", s=150, linewidth = 5, zorder=10)plt.xlabel('读取比例')plt.ylabel('内存使用_读取')plt.xlim(0,100)plt.ylim(ymin=0)plt.show()
在KMeans聚类中,集合S=(x,y)没有标记数据,而在SVM中,集合S的输入是x和目标数据y。我想要做的是在SVM中分别使用创建的聚类。我不确定如何为每个聚类获取X,y。如果您有任何建议,请告诉我。
谢谢。
回答:
不太清楚您想要做什么。如果您想使用聚类分配作为类标签,您可以从y = kmeans.predict(X)
中获取y。特征X保持不变。像这样在SVM中使用它们:
y = kmeans.predict(X)svm = SVM()svm.fit(X, y)