Advertisement
am_dot_com

IA 20211108

Nov 8th, 2021 (edited)
116
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 2.05 KB | None | 0 0
  1. #generic_chi_j.py
  2. #chi-s = (o-e)^2/e
  3. import random
  4.  
  5.  
  6. def chisquare(
  7.     pListOfActualObservedValues:list,
  8.     pListOfExpectedValues:list
  9. )->float or bool:
  10.     bCaution = len(pListOfActualObservedValues) \
  11.                 == len(pListOfExpectedValues)
  12.  
  13.     if (bCaution):
  14.         fDistance=0
  15.         iHowManySamples:int = len(pListOfActualObservedValues)
  16.         listValidAddresses:list = \
  17.             range(iHowManySamples) #0..iHowManySamples-1
  18.         for iAddress in listValidAddresses:
  19.             #compute
  20.             observedValue = \
  21.                 pListOfActualObservedValues[iAddress]
  22.             expectedValue = \
  23.                 pListOfExpectedValues[iAddress]
  24.             fDiff = observedValue - expectedValue
  25.             fParcelDist = fDiff**2
  26.             fParcelChi = fParcelDist/expectedValue
  27.             fDistance+=fParcelChi
  28.         #for
  29.  
  30.         return fDistance
  31.     else:
  32.         return False
  33. #def chisquare
  34.  
  35. #J(A,B) = |A∩B| / |A∪B|
  36. #J(A,B) = card(intersect(A,B)) / card(union(A, B))
  37. def jaccardProximity(
  38.     pListOfActualObservedValues:list,
  39.     pListOfExpectedValues:list
  40. ):
  41.     #no repetitions
  42.     setObserved = set(pListOfActualObservedValues)
  43.     #type(setObserved) #set
  44.     #no repetitions
  45.     setExpected = set(pListOfExpectedValues)
  46.     #type(setExpected) #set
  47.     setIntersection = setObserved.intersection(setExpected)
  48.     setUnion = setObserved.union(setExpected)
  49.     cardinalityIntersect = len(setIntersection)
  50.     cardinalityUnion = len(setUnion)
  51.     fJProx = cardinalityIntersect / cardinalityUnion
  52.     return fJProx
  53. #def jaccardProximity
  54.  
  55. def randomListFloats(pLen:int):
  56.     listRet = []
  57.     for idx in range(pLen):
  58.         f = random.Random()
  59.         listRet.append(f)
  60.     #for
  61.     #[0.1 , 0.2323, ....] * 100 => [10.0, 23.23, ...[
  62.     #broadcasting
  63.     listRet*=100
  64.     #listRet*=random.randint(10, 1000)
  65.     #listRet = listRet*random.randint(10, 1000)
  66.     return listRet
  67. #def randomListFloats
  68.  
  69. col1 = randomListFloats(100)
  70. print (col1)
  71. col2 = randomListFloats(100)
  72. print (col2)
  73.  
  74.  
  75.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement