合作者推薦第一步 k means 聚類

2021-09-26 22:57:18 字數 2771 閱讀 9410

第一步:得到兩個作者的資料,發表的**數和**被引用的數量的和

# -*- coding: utf-8 -*-

"""created on thu sep 5 10:40:57 2019

@author: administrator

"""import json

fo=open("d:\\mag_authors_2\\mag_authors_10.txt",'r+')

fi=open('demo3.txt','a')

#print fo.readline()

for i in range(10000):

js=json.loads(fo.readline())

n_pubs=str(js['n_pubs'])

n_citation=str(js['n_citation'])

fi.write(n_pubs+' '+n_citation+'\n')

print js['n_pubs'],js['n_citation']

fo.close()

fi.close()

資料示例

第二部:進行聚類 當然是k-means 演算法啦

# -*- coding: utf-8 -*-

"""created on wed sep 4 13:06:59 2019

@author: administrator

"""import numpy as np

import numpy.matlib

import math as mt

import matplotlib.pyplot as plt

def d(a1,a2):

return np.sqrt(np.sum((np.abs(a1-a2)**2)))

def getlist():#從文字中讀取取資料

fo=open("demo3.txt",'r+')

x=for str in fo:

z=str.split(' ')

x=[float(z[0]),float(z[1])]

return x

x=getlist()

a1=x[4]

a2=x[9]

a3=x[7]

line1x=

line1y=

line2x=

line2y=

line3x=

line3y=

d1=#d 為初始化簇

d2=d3=

while 1:#迭代求質點和簇

b1=a1

b2=a2

b3=a3

plt.plot(a1[0],a1[1],'xb')

plt.plot(a2[0],a2[1],'xr')

plt.plot(a3[0],a3[1],'xg')

d1=#初始化簇

d2=d3=

for i in x:#計算歐氏距離,把最近的新增到各簇中

d1=d(a1,i)

d2=d(a2,i)

d3=d(a3,i)

if d1<=d2:

if d1<=d3:

else:

else:

if d2<=d3:

else:

if len(d1)!=0:#如果簇中沒有物件,則質點不變,若有物件則重新計算質點,為各指標的和的平均,下同

x=0y=0

for j in d1:

x+=j[0]

y+=j[1]

a1=[x/len(d1),y/len(d1)]

if len(d2)!=0:

x=0y=0

for j in d2:

x+=j[0]

y+=j[1]

a2=[x/len(d2),y/len(d2)]

if len(d3)!=0:

x=0y=0

for j in d3:

x+=j[0]

y+=j[1]

a3=[x/len(d3),y/len(d3)]

print a1,a2,a3

if np.array_equal(a1,b1)&np.array_equal(a2,b2)&np.array_equal(a3,b3):#比較質點是否發生變化(是否收斂)收斂則跳出迭代

print '收斂'

break

print d1

print d2

print d3

plt.plot(line1x,line1y)#畫出質點的變化路徑

plt.plot(line2x,line2y)

plt.plot(line3x,line3y)

x1=np.array(d1).t#畫出各簇中的物件

plt.plot(x1[0],x1[1],'^b',markersize=1)

x1=np.array(d2).t

plt.plot(x1[0],x1[1],'or',markersize=1)

x1=np.array(d3).t

plt.plot(x1[0],x1[1],'og',markersize=1)

plt.show()

最後結果:

踏出第一步

我是乙個比較內向的人,或許應該說有一點自卑的傾向。因為生活中的一些事情,總是不斷的打擊我的自信心,讓我產生一種感覺 我缺乏能力,是乙個無用的人。我想有過這種經歷的,肯定不只我乙個人。人的信心有時候是很脆弱的,兩三次的失敗就可能讓其消失殆盡,然後你就覺得,反正我也做不出什麼事情來,乾脆就這樣混著吧,於...

邁出第一步

我,乙個程式小白,不是為了熱愛而走上程式設計之路。就這樣稀里糊塗的度過了兩年,期間,自己有為找不出那乙個個errors煩躁,也有為成功編譯後而獲得正確結果的那種喜悅。如今是真的想去改變現狀,想去提公升自己,想不負剩餘的兩年時光,不負你,不負我!對於今後的學習之路的想法,首先基礎的語言學習,其次資料結...

爬蟲第一步

注意正規表示式的書寫注意正規表示式的書寫 import re import requests url headers html requests.get url,headers,timeout 10 text print html redata re.compile r for i in re.fi...