ghdms

데이터 추가, 각 sub 완전그래프를 union

......@@ -7,13 +7,13 @@ MOVIE = db.movie
cur = MOVIE.find()
audience = {}
for c in cur:
audience[c["name"]] = c["audience"]
audience[c["name"]] = c["audience"]
data = {
"명량": "최민식,류승룡,조진웅,김명곤,진구,이정현,권율,노민우,이승준,박보검,김원해,이해영,장준녕,김길동,김강일,강태영,김민석,박노식,최덕문,조복래,문영동,이주실,주석태,고경표,김태훈,한이진,신유람",
"극한직업": "류승룡,이하늬,이동휘,공명,진선규,홍은진,양현민,장진희,오정세,이중옥,송영규,신하균,김의성,김종수,허준석",
"신과함께-죄와 벌": "하정우,차태현,주지훈,김향기,마동석,김동욱,도경수,오달수,임원희,장광,정해균,김수안,정지훈,예수정,이준혁",
"국제시장": " 황정민,김윤진,오달수,정진영,장영남,라미란,김슬기,정영기,맹세창,박재우,김재철",
"국제시장": "황정민,김윤진,오달수,정진영,장영남,라미란,김슬기,정영기,맹세창,박재우,김재철",
"베테랑": "황정민,유아인,유해진,오달수,장윤주,김시후,오대환,정웅인,정만식,송영창,진경,유인영,박소담,이동휘,배성우,천호진",
"도둑들": "김윤석,김혜수,이정재,전지현,김해숙,오달수,김수현,최덕문,최진호,예수정",
"7번방의 선물": "류승룡,박신혜,갈소원,오달수,박원상,김정태,정만식,김기천,조덕현,조재윤,박길수",
......@@ -73,70 +73,70 @@ data = {
"더 킹": "조인성,정우성,배성우,류준열,김의성,이석호,김민재,정성모,정은채,김소진,황승언,이주연,박정민,김규선,남명렬,오대환,정원중,정인기,이열음",
"완득이": "김윤석,유아인,조병찬,조세현,강별,박효주,김영재,김상호,박수영,김동영",
"완벽한 타인": "유해진,조진웅,이서진,염정아,김지수,송하윤,윤경호,지우",
# "타워": "",
# "투사부일체": "",
# "독전": "",
# "추격자": "",
# "공작": "",
# "바람과 함께 사라지다": "",
# "님아, 그 강을 건너지 마오": "",
# "봉오동 전투": "",
# "조선명탐정 : 각시투구꽃의 비밀": "",
# "군도: 민란의 시대": "",
# "남산의 부장들": "",
# "범죄와의 전쟁: 나쁜놈들 전성시대": "",
# "신세계": "",
# "도가니": "",
# "내 아내의 모든 것": "",
# "판도라": "",
# "나쁜 녀석들: 더 무비": "",
# "가문의 위기(가문의 영광2)": "",
# "연가시": "",
# "강철비": "",
# "강철중: 공공의 적 1-1": "",
# "아가씨": "",
# "말아톤": "",
# "용의자": "",
# "건축학개론": "",
"타워": "설경구,손예진,김상경,차인표,조민아,김인권,도지한,안성기,이한위,김성오,송재호,박철민,권현상,전배수,이창용,이주실,김수진,권태원,전국향,정인기",
"투사부일체": "정준호,정웅인,김상중,박용식,최윤영,박은비,나현주,김동성,고은영,이배훈,박기연,김성근,유인나,이희석,일호,최선영,박민애,정다은,최영미,이송,최영진,김지헌,이혁수,이기열,강성필,한효주",
"독전": "조진웅,류준열,김주혁,김성령,박해준,차승원,진서연,이주영,서현우,강승현,정가람,김동영,금새록,정준원",
"추격자": "김윤석,엄중호,하정우,서영희,박효주,김유정,최정우,정인기",
"공작": "황정민,이성민,조진웅,주지훈,박혜영,김지나,김소진,양현민,정기섭,김응수,최병모,정소리,최정인,곽자형,권범택,김인우,엄지만",
"바람과 함께 사라지다": "차태현,오지호,민효린,성동일,고창석,송종호,이채영,김길동,김향기,신정근,천보근",
# "님아, 그 강을 건너지 마오": "", #영화배우가 아님
"봉오동 전투": "유해진,류준열,조우진,강민재,오승호,박지환,최유화,성유빈,이재인,홍상표,원풍연",
"조선명탐정 : 각시투구꽃의 비밀": "김명민,한지민,오달수,김호연,최무성,우현,이재용,예수정,정인기",
"군도: 민란의 시대": "하정우,강동원,조진웅,마동석,정만식,김성균,주진모,이경영,이성민,윤지혜,김재영,노남석,송영창,김병옥,임현성",
"남산의 부장들": "이병헌,이성민,곽도원,이희준,김소진,김승훈,박성근,서현우,지현준,박지일,이태형,주석태,이도국,김민상",
"범죄와의 전쟁: 나쁜놈들 전성시대": "최민식,하정우,신수정,조진웅,마동석,곽도원,김성균,송영창,김종수,권태원,김종구",
"신세계": "이정재,최민식,황정민,박성웅,송지효,정영기,김홍파,장광,김윤성,최일화,권태원",
"도가니": "정유미,공유,허재호,임현성,최진호,이예나,김현수,장광,전국환,엄효섭,남명렬,이장유,박혜진,김민상",
"내 아내의 모든 것": "임수정,이선균,류승룡",
"판도라": "김남길,김영애,문정희,정진영,이경영,강신일,김대명,유승목,김주현,김명민,박선희,공정환,주석태,송철호,김영웅,김태훈",
"나쁜 녀석들: 더 무비": "마동석,김상중,김아중,장기용,박형수,박상욱,김인우,지승현",
# "가문의 위기(가문의 영광2)": "신현준,김수미,김원희,정준하,임형준,공형진,탁재훈,정호빈,김해곤", # 겹치는 배우가 100위까지 아직 없음
"연가시": "김명민,문정희,김동완,이하늬,강신일,송영창,조덕현,최정우,전국환,정인기",
"강철비": "정우성,곽도원,김갑수,김의성,이경영,조우진,정원중,김명곤,박은혜,김지호,안미나,원진아",
"강철중: 공공의 적 1-1": "설경구,정재영,김영필,강신일,유해진,탁트인,이상현,이재원,조한영,박창용,박태훈,김건호,김재득,임장현,정원중",
"아가씨": "김민희,김태리,하정우,조진웅,김해숙,문소리,김인우,이용녀",
"말아톤": "조승우,김미숙,이기영,백성현,안내상",
"용의자": "공유,박희순,조성하,유다인,김성균,조재윤,김민재,김의성,송재림,최종률,남보라,기주봉,박지일",
"건축학개론": "엄태웅,한가인,이제훈,배수지,고준희,조정석,신예진,유연석,조현철,김의성,이승호,박수영",
"댄싱퀸": "황정민,엄정화,정성화,오나라,박정민,박사랑,안은정,라미란,이대연,이한위,최우리,권병길,서동원",
# "7급 공무원": "",
# "우리 생애 최고의 순간": "",
# "꾼": "",
# "타짜-신의 손": "",
# "박수건달": "",
# "조선명탐정 : 사라진 놉의 딸": "",
# "역린": "",
# "남한산성": "",
# "암수살인": "",
# "국가부도의 날": "", #100위
# "쌍화점": "",
# "신기전": "",
# "82년생 김지영": "",
# "귀향": "",
# "신의 한 수": "",
# "태풍": "",
# "부러진 화살": "",
# "끝까지 간다": "",
# "스파이": "",
# "그것만이 내 세상": "",
# "돈": "",
# "악인전": "",
# "이끼": "",
# "한반도": "",
# "포화속으로": "",
# "시동": "",
# "아이 캔 스피크": "",
# "마녀": "",
# "탐정: 리턴즈": "",
# "공공의 적 2": "",
# "퀵": "",
# "친절한 금자씨": "",
# "감기": "",
# "스물": "",
# "거북이 달린다": "",
# "헬로우 고스트": "",
# "하모니": "",
# "오싹한 연애": "",
"7급 공무원": "김하늘,강지환,임성현,유승목,강규영,강신일,장남열,김형범,장영남",
"우리 생애 최고의 순간": "문소리,김정은,엄태웅,김지영,조은지,강재원,이미도,조영진,이봉규,정석용,하정우,정세형,김종언,김혜진,강선희,이수정,최욱,남궁은숙",
"꾼": "현빈,유지태,배성우,박성웅,나나,안세하,최덕문,허성태",
"타짜-신의 손": "최승현,신세경,곽도원,유해진,김윤석,이하늬,김인권,이경영,고수희,오정세,박효주,이준혁,이동휘,김원해,고준,조경현,박수영,김민상",
"박수건달": "박신양,김정태,엄지원,정혜영,김성균,최일화,최지호,김형범,장원종",
"조선명탐정 : 사라진 놉의 딸": "김명민,오달수,이연희,조관우,정원중,최무성,우현,황정민",
"역린": "현빈,정재영,조정석,한지민,조재현,박성웅,김성령,정은채,강민지,석현,송영창,김대명,천보근,서이숙,성유빈,전국향",
"남한산성": "이병헌,김윤석,박해일,고수,박희순,조우진,허성태,곽자형,박지일",
"암수살인": "김윤석,주지훈,문정희,진선규,이유준,김종수,권회수,허진,배해선,이봉련,정기섭,원현준,정종준",
"국가부도의 날": "김혜수,유아인,허준호,조우진,김기현,염혜란,조한철,엄효섭,장성범,동하,박진주,전배수,김민상", #100위
"쌍화점": "조인성,주진모,송지효,임주환,여욱환,심지호,송중기,노민우,조강현,김태수,최승희,이승구,권태원",
"신기전": "정재영,한은정,허준호,안성기,김명수,신정근,조원희,이광희,박윤희,조주현,최만수,박보람,박성배,이승근,이연우,김진규,이기오,주부진,이정인,김용재,김서현",
"82년생 김지영": "정유미,공유,김미경,공민정,박성연,이봉련,김성철,이얼,손성찬,강애심,김정영",
"귀향": "손숙,강하나,최리,임성철,정무성,류신,서미지,정인기,오지혜,김시은,이민영,이수현,이승현",
"신의 한 수": "정우성,안성기,이범수,김인권,이시영,안길강,최진혁,강다혜,유재상,유순철,김명수,안서현,이용녀,김소진",
"태풍": "이정재,이미연,장동건,김혜정,김원진,추현경,허욱,신성일,김형찬,홍의정,김이호,나수원,박태호,김경환,김상용,민성주,민지환,박광설,유승권,박병렬,김철준,이주헌,박찬영",
"부러진 화살": "안성기,박원상,나영희,김지호,신종훈,김준배,김응수",
"끝까지 간다": "이선균,조진웅,신정근,정만식,신동미,김동영,박보검,주석태,허정은",
"스파이": "설경구,문소리,고창석,한예리,오대환,라미란,서승인,이대수,이성제,최승현,정인기",
"그것만이 내 세상": "이병헌,윤여정,박정민,김성령,최리,백현진,김서원",
"돈": "류준열,유지태,조우진,손종학,신재민,원진아,정만식,임세미,김민재,김재영,김종수,진선규",
"악인전": "마동석,김무열,김성규,강문봉,문동혁,오희준,유승목,최민철,김승현,우상전,김윤성,허동원",
"이끼": "정재영,박해일,유준상,유선,허준호,유해진,김상호,김준배,강신일,이철민,박정재,최근현,윤아름,오순태,김철현",
"한반도": "조재현,안성기,차인표,문성근,강신일,이윤주,최종원,최연식,이승철,백일섭,이한위,박길수,최일화",
"포화속으로": "차승원,권상우,최승현,김승우,문재원,김혜성,신현탁,신경선,추종범,김윤성,김한준,윤승훈,김호원",
"시동": "마동석,박정민,정해인,염정아,최성은,김종수,윤경호,김경덕",
"아이 캔 스피크": "나문희,이제훈,박철민,염혜란,성유빈,김소진,이상희,정연주,이지훈,손숙,이재인,최수인",
"마녀": "김다미,조민수,박희순,최우식,김하나,정다은,김기훈,최정우,고민시,오미희,김병옥,이주원",
"탐정: 리턴즈": "권상우,성동일,김수영,김승필,이광수,서영희,이일화,남명렬,손담비,최성원,박성일,오희준,정연주,김성규",
"공공의 적 2": "설경구,정준호,유해진,강경덕,박웅,강신일,홍지연,전미애,박태수,남성훈,한재준,서영민,박상욱,최수경,변희봉",
"퀵": "고창석,강예원,이민기,김인권,이건우,이새별,김병철,김재화,오정세,전국환,유승목,윤제문",
"친절한 금자씨": "이영애,최민식,권예영,김시후,남일우,김병옥,오달수,이승신,김부선,라미란,최정우,김유정",
"감기": "장혁,수애,박민하,남문철,유해진,이희준,김기현,이상엽,박효주,박정민,최병모,차인표,박예슬",
"스물": "김우빈,이준호,강하늘,오현경,정소민,이유비,정주연",
"거북이 달린다": "김윤석,정경호,견미리,선우선,최수현,최권,신정근,이무생,유하복,차은재,김희원",
"헬로우 고스트": "차태현,강예원,이문수,고창석,장영남,천보근",
"하모니": "김윤진,나문희,강예원,이다희,장영남,박준면,정수영,임채연,이선주,김호연,정혜원,신정원,박선희,지성원,박혜진",
"오싹한 연애": "손예진,이민기,신동훈,조아라,이현진,이미도,황승언,김현숙",
# "방자전": "",
# "형": "",
# "마더": "",
......@@ -211,16 +211,41 @@ data = {
# "명당": "",
}
names = []
def named_union(graph1, graph2): #두 그래프 합성
A = graph1.copy()
B = graph2.copy()
Aname = A.vs["name"][:]
Bname = B.vs["name"][:]
Aes = A.es[:]
Bes = B.es[:]
Anams = set(Aname)
Bnams = set(Bname)
A.add_vertices(list(Bnams - Anams))
B.add_vertices(list(Anams - Bnams))
nams = sorted(Anams | Bnams)
Aind = [nams.index(nm) for nm in A.vs['name']]
Bind = [nams.index(nm) for nm in B.vs['name']]
A = A.permute_vertices(Aind)
B = B.permute_vertices(Bind)
Z = A | B
Z.vs['name'] = nams
Z.vs["label"] = Z.vs["name"][:]
return Z
weight = {}
keys = []
n = 0
top = data["명량"].split(",")
G = Graph.Full(len(top))
G.vs["name"] = top[:]
G.vs["label"] = G.vs["name"][:]
del data["명량"]
for movie in data:
actors = data[movie].split(",")
newActors = []
for actor in actors:
if(actor not in names):
newActors.append(actor)
names += newActors
g = Graph.Full(len(actors))
g.vs["name"] = actors[:]
g.vs["label"] = g.vs["name"][:]
G = named_union(G, g)
for i in range(0, len(actors)-1):
for j in range(i+1, len(actors)):
......@@ -235,21 +260,48 @@ for movie in data:
else:
weight[join]["audience"] += audience[movie]
weight[join]["count"] += 1
#G = Graph.Full(len(names))
#G.vs["name"] = names
#G.vs["label"] = G.vs["name"]
# n += 1
# if(n > 1):
# break
topten = sorted(keys, key=lambda n: weight[n]["audience"] / weight[n]["count"], reverse=True)[:10]
topten = sorted(keys, key=lambda n: weight[n]["count"], reverse=True)[:10]
for t in topten:
print(t, weight[t])
# out = plot(G,
# bbox = (2000, 2000),
# vertex_size = 20,
# vertex_label_size = 12,
# vertex_label_dist = 1,
# vertex_label_angle = 2,
# autocurve = True,
# layout = G.layout("fr")
# )
# out.save("test.png")
names = G.vs["name"][:]
edge_weight = [1] * len(G.es)
for k in keys:
if(weight[k]["count"] == 1):
continue
[s, e] = k.split(",")
sIdx, eIdx = names.index(s), names.index(e)
edges = G.es.select(_between = ([sIdx], [eIdx]))
for e in edges:
edge_weight[e.index] = weight[k]["count"]
names1, names2 = G.vs["name"][:], G.vs["name"][:]
bn = G.betweenness(weights=edge_weight)
print(sorted(bn, reverse=True)[:10])
print(sorted(names1, key=lambda n: bn[names2.index(n)], reverse=True)[:10])
degree = G.degree()
print(sorted(degree, reverse=True)[:10])
print(sorted(names1, key=lambda n: degree[names2.index(n)], reverse=True)[:10])
cn = G.closeness(weights=edge_weight)
print(sorted(cn, reverse=True)[:10])
print(sorted(names1, key=lambda n: cn[names2.index(n)], reverse=True)[:10])
out = plot(G,
bbox = (2500, 2500),
vertex_size = 15,
vertex_label_size = 9,
vertex_label_dist = 1,
vertex_label_angle = 2,
#autocurve = True,
#layout = G.layout("fr")
)
out.save("test.png")
#C:\Users\ghdms\2014104137\소스코드\movie_full.py
\ No newline at end of file
......