超市使用者的k means聚類處理

2021-09-27 05:55:40 字數 3369 閱讀 1193

import pandas as pd

from sklearn.preprocessing import standardscaler #標準差標準化

'''進行箱線圖分析,剔除異常值

:param data:

:return:

'''qu = data.quantile(0.75)

ql = data.quantile(0.25)

iqr = qu - ql

#上限與下限 1.5可以微調

up = qu+1.5*iqr

low = ql-1.5*iqr

#進行比較運算

檢測結果無缺失值

按照平均每次消費金額進行異常值去除

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

data = data.loc[bood_id_1,:]

按照平均消費週期進行異常值去除

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

data = data.loc[bood_id_2,:]

data.loc[:,'每日消費金額'] = data.loc[:,'平均每次消費金額']/data.loc[:,'平均消費週期(天)']
stand = standardscaler()  #建立標準差示例

#先計算每一列的均值、標準差再進行轉化資料

x = stand.fit_transform(data) #進行標準化

def built_data():

#缺失值檢測

# print(com.isnull().sum())

#篩選有用特徵,切片處理

data = com.iloc[:,-2:]

# print(data)

#異常值檢測,箱線圖分析

#按照平均每次消費金額進行異常值去除

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

data = data.loc[bood_id_1,:]

#按照平均消費週期進行異常值去除

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

data = data.loc[bood_id_2,:]

#構建需要特徵

data.loc[:,'每日消費金額'] = data.loc[:,'平均每次消費金額']/data.loc[:,'平均消費週期(天)']

# print(data)

#標準化資料,量級不大,暫時不處理量級

#標準化資料

stand = standardscaler() #建立標準差示例

#先計算每一列的均值、標準差再進行轉化資料

x = stand.fit_transform(data) #進行標準化

return data.values

def show_res_km(data,y_predict,center):

'''進行結果展示

:param data:原始資料

:param y_predict:**標籤

:param center:最終的聚類中心

:return:

'''plt.figure()

#獲取原始資料的行數

index_num = data.shape[0]

#colors = ['r','g','b','y']

for i in range(index_num):

plt.scatter(data[i,0],data[i,1],c=colors[int(y_predict[i])])

#散點圖的繪製,乙個乙個繪製

#聚類中心的位置

#b的話是描點劃線,bx的話是畫點但是不描線

plt.plot(center[:,0],center[:,1],'bx',marker='x',markersize=12)

plt.show()

data = built_data()

#導包實現

k=3km = kmeans(n_clusters=k)

#訓練資料

km.fit(data)

#進行** ,y_predict**標籤

y_predict = km.predict(data)

#獲取聚類中心

center = km.cluster_centers_

print('**值:\n',y_predict)

print('聚類中心:\n',center)

K Means聚類演算法

k means聚類演算法 intergret kmeans演算法的基本思想是初始隨機給定k個簇中心,按照最鄰近原則把待分類樣本點分到各個簇。然後按平均法重新計算各個簇的質心,從而確定新的簇心。一直迭代,直到簇心的移動距離小於某個給定的值。k means聚類演算法主要分為三個步驟 1 第一步是為待聚類...

聚類演算法 K means

演算法接受引數 k 然後將事先輸入的n個資料物件劃分為 k個聚類以便使得所獲得的聚類滿足 同一聚類中的物件相似度較高 而不同聚類中的物件相似度較小。聚類相似度是利用各聚類中物件的均值所獲得乙個 中心物件 引力中心 來進行計算的。k means演算法是最為經典的基於劃分的聚類方法,是十大經典資料探勘演...

模糊kmeans聚類

首先介紹乙個,fuzzykmeans演算法的主要思想 模糊均值聚類 fcm 即眾所周知的模糊isodata,是用隸屬度確定每個資料點屬於某個聚類的程度的一種聚類演算法。1973年,bezdek提出了該演算法,作為早期硬均值聚類 hcm 方法的一種改進。fcm把 n 個向量 xi i 1,2,n 分為...