全部版块 我的主页
论坛 提问 悬赏 求职 新闻 读书 功能一区 学道会
437 0
2019-09-26
练习: 使用年收入和花费分数进行聚类

# 提取出这两列
X2 = df[[\'年收入\', \'花费分数\']].values

# 使用 k 值进行调参
inertia = [] # 用于接收每次聚类后得到的样本距离平方和
for n in range(2, 11):
    # 算法实例化
    kmeans = KMeans( n_clusters= n , random_state=666)
    # 学习数据
    kmeans.fit(X2)
    # 把簇内距离平方和指标 , 输出到列表中来
    inertia.append(kmeans.inertia_)

plt.figure(figsize=(15,6))
plt.plot(range(2,11) ,inertia , \'o\' )
plt.plot(range(2,11) ,inertia , \'-\' , alpha = 0.5 )
plt.xlabel(\'聚类数量\') , plt.ylabel(\'距离平方和\')

# 使用k = 5 进行建模
kmeans = KMeans(n_clusters= 5 , random_state= 666)

kmeans.fit(X2)

# 获取聚类后样本的聚类集群情况
labels2 = kmeans.labels_
labels2

# 聚类的几个中心点
center2 = kmeans.cluster_centers_
center2

h = 0.02
x_min, x_max = X2[:, 0].min() - 1, X2[:, 0].max() + 1
y_min, y_max = X2[:, 1].min() - 1, X2[:, 1].max() + 1
xx, yy = np.meshgrid(np.arange(x_min, x_max, h), np.arange(y_min, y_max, h))
Z = kmeans.predict(np.c_[xx.ravel(), yy.ravel()])

plt.figure(1 , figsize = (15 , 7) )
plt.clf()

# 画出原有的样本点
plt.scatter(data = df , x = \'年收入\' , y = \'花费分数\' , c = labels2 ,s = 200)
# 画出四个聚类中心点
plt.scatter(x = center2[:, 0]  , y = center2[:, 1], s = 300 , c=\'red\' ,alpha = 0.5)
# 把预测值Z的形状变成和xx相同的形状
Z = Z.reshape(xx.shape)
plt.imshow(Z , interpolation=\"nearest\" , extent=(xx.min() , xx.max() , yy.min() ,yy.max()),
          cmap = plt.cm.Pastel2 , aspect=\'auto\' ,  origin=\'lower\')
plt.ylabel(\'年收入\') , plt.xlabel(\'花费分数\')
plt.show()


二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群