>> 사용자가 거울에서 보여줄 정보를 미리 지정해놓는 작업을 수행하는 프로그램.
다양한 선택의 폭으로 기호를 만족시킴.
>> socket 통신으로 서버에서 xml 파일을 읽어와 UI에 올린다.
MFC의 소켓 통신은 <afxsocket.h>의 함수를 이용한다.
>> 다이얼로그 소멸과 동시에 새로운 다이얼로그를 띄어 설정을 할 수 있다.
1. XML Library 설치
2. XML 파일 작성
3. XML 파일 저장
>>> import recommendations
>>> recommendations.topMatches(recommendations.critics,'Toby',n=3)
Traceback (most recent call last):
File "<pyshell#1>", line 1, in <module>
recommendations.topMatches(recommendations.critics,'Toby',n=3)
File "C:\Python26\recommendations.py", line 71, in topMatches
for other in prefs if other!=person]
File "C:\Python26\recommendations.py", line 61, in sim_pearson
den=sqrt((sum1Sq-pow(sum1,2)/n)*sum2Sq-pow(sum2,2)/n)
ValueError: math domain error
아ㅏㅏㅏㅏㅏㅏㅏㅏㅏㅏㅏㅏㅏㅏㅏㅏㅏㅏㅏㅏㅏㅏㅏㅏㅏㅏㅏㅏㅏㅏㅏㅏㅏㅏㅏ
궁금해 ㅠ.ㅠ
----------------------------------------------------------------------------------------
헐...
강의실 컴에서는 안됐는데 내 랩탑에서는 실행되는 소스...
뭐 빼먹었나?
오타 있나?
아 놔 ㅠ.ㅠ
critics={'Lisa Rose': {'Lady in the Water': 2.5, 'Snakes on a Plane': 3.5,
'Just My Luck': 3.0, 'Superman Returns': 3.5, 'You, Me and Dupree': 2.5,
'The Night Listener': 3.0},
'Gene Seymour': {'Lady in the Water': 3.0, 'Snakes on a Plane': 3.5,
'Just My Luck': 1.5, 'Superman Returns': 5.0, 'The Night Listener': 3.0,
'You, Me and Dupree': 3.5},
'Michael Phillips': {'Lady in the Water': 2.5, 'Snakes on a Plane': 3.0,
'Superman Returns': 3.5, 'The Night Listener': 4.0},
'Claudia Puig': {'Snakes on a Plane': 3.5, 'Just My Luck': 3.0,
'The Night Listener': 4.5, 'Superman Returns': 4.0,
'You, Me and Dupree': 2.5},
'Mick LaSalle': {'Lady in the Water': 3.0, 'Snakes on a Plane': 4.0,
'Just My Luck': 2.0, 'Superman Returns': 3.0, 'The Night Listener': 3.0,
'You, Me and Dupree': 2.0},
'Jack Matthews': {'Lady in the Water': 3.0, 'Snakes on a Plane': 4.0,
'The Night Listener': 3.0, 'Superman Returns': 5.0, 'You, Me and Dupree': 3.5},
'Toby': {'Snakes on a Plane':4.5,'You, Me and Dupree':1.0,'Superman Returns':4.0}}
#from recommendations import *
#import recommendations
from math import sqrt
def sim_distance(prefs, person1, person2):
si={}
#condition : pick a movie as same
for item in prefs[person1]:
if item in prefs[person2]: si[item]=1
if len(si)==0: return 0
#if satisfied item under condition exist, excute this function
#number = > figure to sum
sum_of_squares=sum([pow(prefs[person1][item]-prefs[person2][item],2)
for item in prefs[person1] if item in prefs[person2]])
#normalization
return 1/(1+sqrt(sum_of_squares))
def sim_pearson(prefs, p1, p2):
si={}
for item in prefs[p1]:
if item in prefs[p2]: si[item]=1
if len(si)==0: return 0
n=len(si)
sum1=sum([prefs[p1][it] for it in si])
sum2=sum([prefs[p2][it] for it in si])
sum1Sq=sum([pow(prefs[p1][it],2) for it in si])
sum2Sq=sum([pow(prefs[p2][it],2) for it in si])
pSum=sum([prefs[p1][it]*prefs[p2][it] for it in si])
num=pSum-(sum1*sum2/n)
den=sqrt((sum1Sq-pow(sum1,2)/n)*sum2Sq-pow(sum2,2)/n)
if den==0: return 0
r=num/den
return r
파이썬은 사용하기는 쉬운데... 오류 찾기가 까다롭다...
아 놔 ... 리눅스와 맞먹는데?