for index, k in enumerate((2,3,4,5)):
plt.subplot(2,2,index+1) # 绘制子图 (2,2,1 ) (2,2,2) (2,2,3)(2,2,4)
y_pred = MiniBatchKMeans(n_clusters=k, batch_size = 200, random_state=9).fit_predict(X)
score= silhouette_score(X, y_pred)
plt.scatter(X[:, 0], X[:, 1], c=y_pred)
plt.text(.99, .01, (\'k=%d, score: %.2f\' % (k,score)),
transform=plt.gca().transAxes, size=10,
horizontalalignment=\'right\')
plt.show()
import numpy as np # linear algebra
import pandas as pd # data processing, CSV file I/O (e.g. pd.read_csv)
import matplotlib.pyplot as plt
import seaborn as sns
from sklearn.cluster import KMeans
import warnings
import os
# 忽略警告信息
warnings.filterwarnings(\"ignore\")
# 读入数据
df = pd.read_csv(\'Mall_Customers.csv\')
# 练习: 改成中文名
d = {\"CustomerID\":\'用户ID\',
\"Gender\":\"性别\",
\"Age\":\"年龄\",
\"Annual Income (k$)\":\"年收入\",
\"Spending Score (1-100)\":\"花费分数\"}
df.rename(columns=d , inplace=True)
# 改变绘图风格
plt.style.use(\'seaborn\')
plt.rcParams[\'font.sans-serif\']=[\'SimHei\']
plt.rcParams[\'axes.unicode_minus\'] = False
# 观察网站用户年龄的分布情况
sns.distplot(df.年龄, bins=20 )
plt.figure(figsize=(6,4))
# 观察网站用户年龄的分布情况
sns.distplot(df.年龄, bins=20, hist = True, kde=False ,color=\'red\' )
# hist 控制直方图是否显示 , kde 密度曲线是否先显示
# 把年龄, 年收入, 花费分数 一次性的画到一张图片上面去
# 设置图片大小
plt.figure(1, figsize=(15 , 6))
n = 1
for x in [\'年龄\' , \'年收入\' , \'花费分数\']:
# 因为绘制多张图到一张画图上面, 所以要用到子图的语法
plt.subplot(1 , 3 , n)
sns.distplot(df[x], bins=20 )
plt.title(\'{}特征的分布图\'.format(x))
n += 1
# 把年龄, 年收入, 花费分数 一次性的画到一张图片上面去
# 设置图片大小
plt.figure(1, figsize=(15 , 6))
n = 1
for x in [\'年龄\' , \'年收入\' , \'花费分数\']:
# 因为绘制多张图到一张画图上面, 所以要用到子图的语法
plt.subplot(1 , 3 , n)
sns.distplot(df[x], bins=20, hist=False,rug=True )
plt.title(\'{}特征的分布图\'.format(x))
n += 1