超市用户的k - means聚类处理

导入超市用户的数据

熊猫作为pd导入从sklearn

。预处理进口StandardScaler #标准差标准化

com=pd.read_csv (“。/company.csv”,编码=' ansi)

<中心> 超市用户的k - means聚类处理


导入剔除异常值的函数

def box_analysis(数据):

"

进行箱线图分析,剔除异常值

: param数据:

:返回:

"

瞿=data.quantile (0.75)

ql=data.quantile (0.25)

差=曲- ql

#上限与下限1.5可以微调

=曲+ 1.5 *差

低=ql - 1.5 *差

#进行比较运算

bool_id_1=data<=

bool_id_2=data>=低

bool_num=bool_id_1和;bool_id_2

返回bool_num

进行缺失值检测

打印(com.isnull () .sum ())

检测结果无缺失值

筛选有用特征,切片处理

data=https://www.yisu.com/zixun/com.iloc [: 2:]

<中心> 超市用户的k - means聚类处理


箱线图分析来进行异常值检测

按照平均每次消费金额进行异常值去除

bood_id_1=box_analysis (data.iloc [: 0])

data=https://www.yisu.com/zixun/data.loc [bood_id_1:]

按照平均消费周期进行异常值去除

bood_id_2=box_analysis (data.iloc [:, 1])

data=https://www.yisu.com/zixun/data.loc [bood_id_2:]

构建需要特征

数据。loc[::“每日消费金额”)=data.loc(:,“平均每次消费金额']/data.loc(:,“平均消费周期(天)”)

标准化数据,量级不大,暂时不处理量级

=StandardScaler站()#创建标准差示例

#先计算每一列的均值,标准差再进行转化数据

x=stand.fit_transform(数据)#进行标准化

把上面数据处理部分封装进函数

def built_data ():

#缺失值检测

#打印(com.isnull () .sum ())

#筛选有用特征,切片处理

data=https://www.yisu.com/zixun/com.iloc [: 2:]

#打印(数据)

#异常值检测,箱线图分析

#按照平均每次消费金额进行异常值去除

bood_id_1=box_analysis (data.iloc [: 0])

data=https://www.yisu.com/zixun/data.loc [bood_id_1:]

#按照平均消费周期进行异常值去除

bood_id_2=box_analysis (data.iloc [:, 1])

data=https://www.yisu.com/zixun/data.loc [bood_id_2:]

#构建需要特征

数据。loc[::“每日消费金额”)=data.loc(:,“平均每次消费金额']/data.loc(:,“平均消费周期(天)”)

#打印(数据)

#标准化数据,量级不大,暂时不处理量级

#标准化数据

=StandardScaler站()#创建标准差示例

#先计算每一列的均值,标准差再进行转化数据

x=stand.fit_transform(数据)#进行标准化

返回数据。值

绘图部分函数如下

def show_res_km(数据、y_predict中心):

"

进行结果展示

: param数据:原始数据

: param y_predict:预测标签

: param中心:最终的聚类中心

:返回:

"

plt.figure ()

#获取原始数据的行数

index_num=数据。形状[0]

#

颜色=[‘r’,‘g’, ' b ', ' y ']

我的范围(index_num):

plt.scatter([0]我,数据[1]我,c=颜色(int (y_predict[我])))

#散点图的绘制,一个一个绘制

#聚类中心的位置

# b的话是描点划线,bx的话是画点但是不描线

plt.plot(中心:0,中心(:1),“软”,标志=皒”, markersize=12)

plt.show ()

调用函数来进行聚类

data=https://www.yisu.com/zixun/built_data ()

#导包实现

k=3公里=KMeans (n_clusters=k)

#训练数据

km.fit(数据)

#进行预测,y_predict预测标签

y_predict=km.predict(数据)

#获取聚类中心

中心=公里。cluster_centers_

打印(“预测值:\ n”, y_predict)

打印(“聚类中心:\ n”,中心)

show_res_km (data.values y_predict,中心)

得出结果


超市用户的k - means聚类处理