示例#1
0
def _correlate2Lobs(lobName1, lobName2, granularity=0):
    lobConfig1 = config.getLobConfigByName(lobName1)
    lobConfig2 = config.getLobConfigByName(lobName2)
    if granularity is 0:
        if (lobConfig1.granularity < lobConfig2.granularity - 60):
            return -1
        granularity = max(lobConfig1.granularity, lobConfig2.granularity)
    import mediation.api.util as util

    fromDate = util.jsStringToDate("2016-10-28T10:00:00.000Z")
    toDate = util.jsStringToDate("2016-10-29T10:00:00.000Z")
    lob1Query = DateRangeGroupQuery(fromDate, toDate, [lobName1], granularity)
    lob2Query = DateRangeGroupQuery(fromDate, toDate, [lobName2], granularity)
    lob1Data = lob1Query.execute()
    lob2Data = lob2Query.execute()

    fromDate = util.jsStringToDate("2016-10-25T10:00:00.000Z")
    toDate = util.jsStringToDate("2016-10-26T10:00:00.000Z")
    lob1Query = DateRangeGroupQuery(fromDate, toDate, [lobName1], granularity)
    lob2Query = DateRangeGroupQuery(fromDate, toDate, [lobName2], granularity)
    lob1Data.extend(lob1Query.execute())
    lob2Data.extend(lob2Query.execute())

    lob1Data = util.dateDataListToList(lob1Data, lobName1.replace(".", "_"))
    lob2Data = util.dateDataListToList(lob2Data, lobName2.replace(".", "_"))

    lin = linregress(lob1Data, lob2Data)
    return lin.rvalue
示例#2
0
def getBestCorrelations(lobName, correlationThreshold=0.9, granularity=0):
    lobConfig = config.getLobConfigByName(lobName)
    otherLobs = config.getLobsConfig()["lobs"][lobConfig.country]
    resArr = []
    for lob in otherLobs:
        fullLobName = lobConfig.country + "." + lob
        if lobName == fullLobName:
            continue
        try:
            correlation = _correlate2Lobs(lobName, fullLobName, granularity)
            dayCorrelation = _correlate2Lobs(
                lobName, fullLobName,
                1440)  #lobs show have same workday/weekend changes
            resArr.append((fullLobName, correlation, dayCorrelation))
        except:
            traceback.print_exc()
            pass
    resArr = [
        x for x in resArr
        if x[1] >= correlationThreshold and x[2] >= correlationThreshold
    ]
    resSorted = sorted(resArr, key=lambda x: x[1], reverse=True)
    return map(lambda x: {
        "lobName": x[0],
        "correlation": (x[1] + x[2]) / 2
    }, resSorted)
示例#3
0
def correlate2Lobs(lobName1, lobName2):
    lobConfig1 = config.getLobConfigByName(lobName1)
    lobConfig2 = config.getLobConfigByName(lobName2)
    if (lobConfig1.granularity < lobConfig2.granularity - 60):
        return -1, 0
    granularity = max(lobConfig1.granularity, lobConfig2.granularity)
    import mediation.api.util as util
    fromDate = util.jsStringToDate("2016-10-03T10:00:00.000Z")
    toDate = util.jsStringToDate("2016-10-10T10:00:00.000Z")

    lob1Query = DateRangeGroupQuery(fromDate, toDate, [lobName1], granularity)
    lob2Query = DateRangeGroupQuery(fromDate, toDate, [lobName2], granularity)
    lob1Data = lob1Query.execute()
    lob1Data = util.dateDataListToList(lob1Data, lobName1)

    lob2Data = lob2Query.execute()
    lob2Data = util.dateDataListToList(lob2Data, lobName2)
    lin = linregress(lob1Data, lob2Data)
    # cosineSimilarity = cosine_similarity(lob1Data, lob2Data)
    return lin.rvalue, 0
示例#4
0
def getBestCorrelations(lobName):
    mainLobConfig = config.getLobConfigByName(lobName)
    country = mainLobConfig.country
    countryLobs = CZ_LOBS
    resArr = []
    for lob in countryLobs:
        fullLobName = country + "." + lob
        try:
            correlation = correlate2Lobs(lobName, fullLobName)
            resArr.append((fullLobName, correlation[0]))
        except:
            traceback.print_exc()
            pass
    resSorted = sorted(resArr, key=lambda x: x[1], reverse=True)
    return resSorted
示例#5
0
def getBestCorrelations(lobName, correlationThreshold=0.9, granularity=0):
    lobConfig = config.getLobConfigByName(lobName)
    otherLobs = config.getLobsConfig()["lobs"][lobConfig.country]
    resArr = []
    for lob in otherLobs:
        fullLobName = lobConfig.country + "." + lob
        if lobName == fullLobName:
            continue
        try:
            correlation = _correlate2Lobs(lobName, fullLobName, granularity)
            resArr.append((fullLobName, correlation))
        except:
            traceback.print_exc()
            pass
    resArr = [x for x in resArr if x[1] >= correlationThreshold]
    resSorted = sorted(resArr, key=lambda x: x[1], reverse=True)
    return list(
        map(lambda x: {
            "lobName": x[0],
            "correlation": x[1]
        }, resSorted))
示例#6
0
 def __init__(self, lobName, dateTime):
   self.lobName = lobName
   self.lobConfig = config.getLobConfigByName(lobName)
   self.granularity = self.lobConfig.granularity
   self.dateTime = dateTime