机器学习算法之二:5分钟上手K-Means

时间:2022-03-23 05:44:39

1.案例:承袭KNN,这个数据依旧是用打斗次数和接吻次数来界定电影类型,接吻多的是Romance类型的,而打斗多的是动作电影。

2.问题:现在有一部名字未知的电影,打斗次数为18次,接吻次数为90次的电影,它到底属于哪种类型的电影呢?

3.Sampe code:

# -*- coding: utf-8 -*-
import numpy as np
from sklearn.cluster import KMeans
from sklearn.externals import joblib

#data对应着打斗次数和接吻次数
data = np.array([[3,104],[2,100],[1,81],[101,10],[99,5],[98,2]])

#参数说明:n_clusters代表想分几群,n_init代表设置选择质心种子次数,默认为10次,返回质心最好的一次结果。
#补充说明:因使用随机的初始值,因此每次执行的分群代表号会不一样。
clf = KMeans(n_clusters=2, n_init=10)
clf.fit(data)
print clf.labels_

#进行预测测试
test_data=np.array([[3,103], [102,5]])
print clf.fit_predict(test_data)

#储存模型
joblib.dump(clf, "2.kmeans_model.m")

#导入已储存的模型进行预测
clf1 = joblib.load("2.kmeans_model.m")
print clf1.fit_predict(test_data)


4.结果:

[0 0 0 1 1 1]
[0 1]
[1 0]