K-Means能不能类似于集成学习生成一个模型保存下来,用在新的数据上?
K-means算法是无监督的聚类算法。它的算法思想是:先随机选取K个对象作为初始的聚类中心。然后计算每个对象与各个种子聚类中心之间的距离,把每个对象分配给距离它最近的聚类中心。聚类中心以及分配给它们的对象就代表一个聚类。一旦全部对象都被分配了,每个聚类的聚类中心会根据聚类中现有的对象被重新计算。
K-means算法的关键点在于:
我想讨论的是:在关键词聚类的任务当中,距离的计算方式的选择,对聚类效果的影响。
K-means模型的保存和新数据应用
在使用K-Means算法时,我们可以将生成的模型保存下来,并且在新的数据上进行应用。下面是具体的解决方案:
data, cityName = loadData('city.txt') # 加载数据
km = KMeans(n_clusters=4) # 创建实例
label = km.fit_predict(data) # 调用Kmeans()fit_predict()方法进行计算
expenses = np.sum(km.cluster_centers_,axis=1)
CityCluster = [[], [], [], []]
for i in range(len(cityName)):
CityCluster[label[i]].append(cityName[i])
for i in range(len(CityCluster)):
print("Expenses:%.2f" % expenses[i] )
print(CityCluster[i])
在Python中,可以使用sklearn.externals.joblib库来保存和加载K-means模型。
保存模型的代码如下:
```python import joblib
joblib.dump(km, "kmeans_model.pkl") ```
加载模型并应用于新的数据的代码如下:
```python km = joblib.load("kmeans_model.pkl") new_data = loadData("new_data.txt") # 加载新数据
# 使用加载的模型进行预测 new_label = km.predict(new_data) new_expenses = np.sum(km.cluster_centers_, axis=1) new_CityCluster = [[], [], [], []] for i in range(len(new_data)): new_CityCluster[new_label[i]].append(new_data[i]) for i in range(len(new_CityCluster)): print("Expenses:%.2f" % new_expenses[i] ) print(new_CityCluster[i]) ```
通过以上步骤,我们可以将K-means模型保存下来,并且在新的数据上进行应用。可以根据新的数据的标签,进行进一步的处理和分析。