聚類 KMeans 實際案例

2021-08-14 07:21:28 字數 3374 閱讀 6874

聚類演算法,並計算輪廓係數得分

plt.rcparams['font.sans-serif'] = ['simhei'] #指定預設字型

plt.rcparams['axes.unicode_minus'] = false

#解決儲存影象是負號'-'顯示為方塊的問題

# 連線本地伺服器

conn = mysqldb.connect(host="192.168.1.77", port=3306, user="root", passwd="", db="jr_project", charset='utf8')

cursor = conn.cursor()

#獲取整個sql的資料,並存入df中

#方案一,在這裡寫sql**,獲取的資料存入df中

sql1=('select * from jr_analysis_new')

#方案二

#test=open(r'c:\\users\\administrator.win7u-20160229g\\desktop\\jr_project\\jr_project.txt') #通過txt獲取sql**

#sql=test.read().decode('gbk')

#sql.replace('\n',' ')

df = pd.read_sql(sql1,conn,index_col=none) #因為不確定有沒有加索引,所以設定none

#df=df.loc[:, ['main_id','id','活期總額','定期金額加權求和','total_benifit','最大投資金額']]

kmodel=kmeans(n_clusters=10, random_state=0).fit(dataframe)#使用內建的kmeans演算法,獲取kmodel

centerpoint=kmodel.cluster_centers_#計算聚類中心點

typelist=kmodel.labels_#獲取所有專案的分類標籤

fig = plt.figure() #用於繪製3d圖形

ax = fig.add_subplot(111, projection='3d')

ax.scatter(df[[5]], df[[6]], df[[7]], c=typelist)#取3個維度取描繪圖形

ax.set_xlabel(u'類別1')

ax.set_ylabel(u'類別2')

ax.set_zlabel(u'類別3')

plt.title(u"'鯨魚專案'")

plt.show()

#用於計算輪廓係數,獲取聚類的得分

#file = open("c:\\users\\administrator.win7u-20160229g\\desktop\\jr_project\\jr_project.txt", 'w+')

#file.write(metrics.silhouette_score(dataframe, typelist, metric='euclidean'))

#file.close()

file = open("c:\\users\\administrator.win7u-20160229g\\desktop\\jr_project\\jr_project.txt", 'w+')

score=metrics.silhouette_score(dataframe, typelist, metric='euclidean')

file.write(str(score))

file.close()

#df1=pd.concat([df, dataframe], axis=1)

#df1=df[df.cumsum()<=38473208.0]

#用於將資料寫入mysql資料庫

#yconnect = create_engine('mysql+mysqldb://root:@localhost:3306/jr_project?charset=utf8')

#df=df.set_index('id') #去掉首列數字

#對df進行操作

#df1 = df.describe()

typelist=pd.dataframe([typelist])

typelist=typelist.t

df[r'類別']=typelist #把結果鏈結到原df中,因為我希望儲存的時候左邊是資料,右邊是分類標籤

centerpoint=pd.dataframe(centerpoint)

#將結果存入excel中

outputfile="c:\\users\\administrator.win7u-20160229g\\desktop\\jr_overcome.xlsx"

df.to_excel(outputfile)

outputfile1="c:\\users\\administrator.win7u-20160229g\\desktop\\jr_centerpoint.xlsx"

centerpoint.to_excel(outputfile1)

# 關閉連線

cursor.close()

conn.close()

##繪製df的圖形

#sns.set(style="white", palette="muted", color_codes=true)

#ax1=sns.kdeplot(df['年齡'],color='r')

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 分為...