聚類演算法,並計算輪廓係數得分
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 分為...