Exemplo n.º 1
0
def main():
    forgetFrames()
    global newOrderDict
    newOrderDict = {}
    customerProducts = []
    orderSimilarity = {}

    custID = custEntry.get()
    custType = fileOps.getStockistType("c" + custID)
    print custType
    print '++=========++'
    for key, prods in orders.iteritems():
        if "c" + custID == key:
            #Once we've find the customer, we've got our list of products and can break the loop.
            customerProducts += prods
            print customerProducts

    print '----------'

    for key, prods in orders.iteritems():

        if custID != key:
            customerProducts = set(customerProducts)
            prods = set(prods)

            extraProducts = customerProducts ^ prods  #Xor
            extraProducts = prods & extraProducts
            similarProducts = prods & customerProducts  #interseciton
            #Output
            print ""
            print "Checking customer " + str(key)
            print "  Number of extra products: " + str(len(extraProducts))
            print "  Number of similar products: " + str(len(similarProducts))

            if (len(similarProducts) != 0 and len(extraProducts) != 0):
                temp1 = len(similarProducts) * len(similarProducts)
                temp2 = len(prods) * len(prods)
                sim = math.sqrt(float(temp1) / float(temp2))
                orderSimilarity[key] = sim

    print "-----"
    summaryLabelVar.set("Summary for customer c" + custID)
    summaryLabelVar2.set("Number of similar orders: " +
                         str(len(orderSimilarity)))
    mostSimOrder = 0
    for key, sim in orderSimilarity.iteritems():
        if sim > mostSimOrder:
            mostSimOrder = sim
            keyToSearch = key
    summaryLabelVar3.set("The most Similar order is [" + keyToSearch + "] = " +
                         str(mostSimOrder))
    #Stockist Type sim
    mostSimType = fileOps.getStockistType(keyToSearch)
    stockistSim = stockist[custType][mostSimType]

    #print "probability of wanting the extra item:"
    for key, prods in orders.iteritems():
        if key == keyToSearch:
            prods = set(prods)
            extraProducts = prods ^ customerProducts
            extraProducts = prods & extraProducts
            print "Extra Products " + str(extraProducts)
            similarProducts = prods & customerProducts
            if len(extraProducts) != 0:
                if v.get() == 0:
                    for extraProd in extraProducts:
                        extraProdCat = fileOps.getProductCat(extraProd)
                        extraProdSim = 0

                        for simProd in similarProducts:
                            simProdCat = fileOps.getProductCat(simProd)
                            extraProdSim += category[simProdCat][extraProdCat]

                        extraProdSim = extraProdSim / len(similarProducts)
                        print "sim for :" + extraProd + ":" + str(extraProdSim)
                        if extraProdSim > similarityThreshold:
                            newOrderDict.setdefault("c" + custID, [])
                            newOrderDict["c" + custID].append(extraProd)
                            #print "_______________"
                            #print newOrderDict
                else:
                    for extraProd in extraProducts:
                        newOrderDict.setdefault("c" + custID, [])
                        newOrderDict["c" + custID].append(extraProd)
    print "========="
    suggestLabelVar.set("Suggesting new order of:" + str(newOrderDict))
    suggestLabelVar2.set("Order Ok ?:")
    summaryFrame.pack()
    ordOptionsFrame.pack()
Exemplo n.º 2
0
		#moved out of order sim loop to only use most similar result
print "Most Similar order is ["+key+"] = " + str(sim)
print "-------"
#print "probability of wanting the extra item:"

for key, prods in orders.iteritems():
	if key == keyToSearch:
		prods = set(prods)
		extraProducts = prods ^ customerProducts
		extraProducts = prods & extraProducts
		print "Extra Products " + str(extraProducts)
		similarProducts = prods & customerProducts
		if len(extraProducts) != 0:
		
			for extraProd in extraProducts:
				extraProdCat = fileOps.getProductCat(extraProd)
				extraProdSim = 0

				for simProd in similarProducts:
					simProdCat = fileOps.getProductCat(simProd)
					extraProdSim += category[simProdCat][extraProdCat]

				extraProdSim = extraProdSim / len(similarProducts)
				print "sim for :" + extraProd + ":"+ str(extraProdSim)
				if extraProdSim > 0.25:
					key = "n1"
					newOrderDict.setdefault(key, [])
					newOrderDict[key].append(extraProd)
					#print "_______________"
					#print newOrderDict
print "========="
Exemplo n.º 3
0
    # moved out of order sim loop to only use most similar result
print "Most Similar order is [" + key + "] = " + str(sim)
print "-------"
# print "probability of wanting the extra item:"

for key, prods in orders.iteritems():
    if key == keyToSearch:
        prods = set(prods)
        extraProducts = prods ^ customerProducts
        extraProducts = prods & extraProducts
        print "Extra Products " + str(extraProducts)
        similarProducts = prods & customerProducts
        if len(extraProducts) != 0:

            for extraProd in extraProducts:
                extraProdCat = fileOps.getProductCat(extraProd)
                extraProdSim = 0

                for simProd in similarProducts:
                    simProdCat = fileOps.getProductCat(simProd)
                    extraProdSim += category[simProdCat][extraProdCat]

                extraProdSim = extraProdSim / len(similarProducts)
                print "sim for :" + extraProd + ":" + str(extraProdSim)
                if extraProdSim > 0.25:
                    key = "n1"
                    newOrderDict.setdefault(key, [])
                    newOrderDict[key].append(extraProd)
                    # print "_______________"
                    # print newOrderDict
print "========="
Exemplo n.º 4
0
def main():
	forgetFrames()
	global newOrderDict
	newOrderDict = {}
	customerProducts = []
	orderSimilarity = {}
	 
	custID = custEntry.get()
	for key, prods in orders.iteritems():
	 
		if "c" + custID == key:
			
			#Once we've find the customer, we've got our list of products and can break the loop.
			customerProducts = prods
			print customerProducts
	 
	print '----------'

	for key, prods in orders.iteritems():
	 
		if custID != key:
			customerProducts = set(customerProducts)
			prods = set(prods)
	 
			extraProducts = customerProducts ^ prods	#Xor
			extraProducts = prods & extraProducts
	 		similarProducts = prods & customerProducts	#interseciton
			#Output
			print ""
			print "Checking customer " + str(key)
			print "  Number of extra products: " + str(len(extraProducts))		
			print "  Number of similar products: " + str(len(similarProducts))
	 
			if(len(similarProducts)!= 0 and len(extraProducts) != 0):
				temp1 = len(similarProducts)*len(similarProducts)
				temp2 = len(prods)*len(prods)
				sim = math.sqrt(float(temp1)/float(temp2))
				orderSimilarity[key] = sim 
	 
	print "-----"
	#text.insert(INSERT,"Summary for customer c"+custID)
	#text.insert(END,"-----")
	summaryLabelVar.set("Summary for customer c" + custID)
	summaryLabelVar2.set("Number of similar orders: " + str(len(orderSimilarity)))
	mostSimOrder = 0
	for key, sim in orderSimilarity.iteritems():
		if sim > mostSimOrder:
			mostSimOrder = sim
			keyToSearch = key
	summaryLabelVar3.set("The most Similar order is ["+keyToSearch+"] = " + str(mostSimOrder))
	#print "probability of wanting the extra item:"
	for key, prods in orders.iteritems():
		if key == keyToSearch:
			prods = set(prods)
			extraProducts = prods ^ customerProducts
			extraProducts = prods & extraProducts
			print "Extra Products " + str(extraProducts)
			similarProducts = prods & customerProducts
			if len(extraProducts) != 0:
				if v.get() == 0:
					for extraProd in extraProducts:
						extraProdCat = fileOps.getProductCat(extraProd)
						extraProdSim = 0

						for simProd in similarProducts:
							simProdCat = fileOps.getProductCat(simProd)
							extraProdSim += category[simProdCat][extraProdCat]

						extraProdSim = extraProdSim / len(similarProducts)
						print "sim for :" + extraProd + ":"+ str(extraProdSim)
						if extraProdSim > similarityThreshold:
							key = "n1"
							
							newOrderDict.setdefault(key, [])
							newOrderDict[key].append(extraProd)
							#print "_______________"
							#print newOrderDict
				else:
					for extraProd in extraProducts:
						key = "n1"
						newOrderDict.setdefault(key, [])
						newOrderDict[key].append(extraProd)

	print "========="
	suggestLabelVar.set("Suggesting new order of:"+str(newOrderDict['n1']))
	suggestLabelVar2.set("Order Ok ?:")
	summaryFrame.pack()
	ordOptionsFrame.pack()
Exemplo n.º 5
0
def main():
    orders = fileOps.openCsvDebugAmount("casesDebug.csv")
    forgetFrames()
    global newOrderDict
    newOrderDict = {}
    customerProducts[:] = []
    customerProductsSet = set()
    orderSimilarity = {}

    custID = custEntry.get()
    custType = fileOps.getStockistType("c" + custID)
    print custType
    print '++=========++'
    for key, prods in orders.iteritems():
        if "c" + custID == key:
            for prod in prods:
                print prod[0]
                #Once we've find the customer, we've got our list of products and can break the loop.
                customerProducts.append(prod[0])
                print "+++" + str(customerProducts)

    print '----------'

    for key, prods in orders.iteritems():

        if custID != key:
            prodArr[:] = []
            customerProductsSet = set(customerProducts)
            for prod in prods:
                prodArr.append(prod[0])
            prodSet = set(prodArr)
            extraProducts = customerProductsSet ^ prodSet  #Xor
            extraProducts = prodSet & extraProducts
            similarProducts = prodSet & customerProductsSet  #interseciton
            #Output
            print ""
            print "Checking customer " + str(key)
            print "  Number of extra products: " + str(len(extraProducts))
            print "  Number of similar products: " + str(len(similarProducts))

            if (len(similarProducts) != 0 and len(extraProducts) != 0):
                temp1 = len(similarProducts) * len(similarProducts)
                temp2 = len(prodSet) * len(prodSet)
                sim = math.sqrt(float(temp1) / float(temp2))
                orderSimilarity[key] = sim

    print "-----"
    summaryLabelVar.set("Summary for customer c" + custID)
    summaryLabelVar2.set("Number of similar orders: " +
                         str(len(orderSimilarity)))
    mostSimOrder = 0
    for key, sim in orderSimilarity.iteritems():
        if sim > mostSimOrder:
            mostSimOrder = sim
            keyToSearch = key
    summaryLabelVar3.set("The most Similar order is [" + keyToSearch + "] = " +
                         str(mostSimOrder))
    #Stockist Type sim
    mostSimType = fileOps.getStockistType(keyToSearch)
    stockistSim = stockist[custType][mostSimType]
    #clear arrays
    prodArr[:] = []
    amountArr[:] = []
    #print "probability of wanting the extra item:"
    for key, prods in orders.iteritems():
        if key == keyToSearch:
            for prod in prods:
                prodArr.append(prod[0])
            prodSet = set(prodArr)
            extraProducts = prodSet ^ customerProductsSet
            extraProducts = prodSet & extraProducts
            print "Extra Products " + str(extraProducts)
            similarProducts = prodSet & customerProductsSet

            if len(extraProducts) != 0:
                if v.get() == 0:
                    #get amounts
                    for extraProd in extraProducts:
                        extraProdCat = fileOps.getProductCat(extraProd)
                        extraProdSim = 0
                        for simProd in similarProducts:
                            simProdCat = fileOps.getProductCat(simProd)
                            extraProdSim += category[simProdCat][extraProdCat]

                        extraProdSim = extraProdSim / len(similarProducts)
                        print "sim for :" + extraProd + ":" + str(extraProdSim)
                        if extraProdSim > similarityThreshold:
                            newOrderDict.setdefault("c" + custID, [])
                            for prod in prods:
                                if prod[0] == extraProd:
                                    amountArr.append(
                                        int(float(prod[1]) * stockistSim))
                                    newOrderDict["c" + custID].append([
                                        extraProd,
                                        int(float(prod[1]) * stockistSim)
                                    ])
                            #print "_______________"
                            #print newOrderDict
                else:
                    for extraProd in extraProducts:
                        newOrderDict.setdefault("c" + custID, [])
                        for prod in prods:
                            if prod[0] == extraProd:
                                amountArr.append(
                                    int(float(prod[1]) * stockistSim))
                                newOrderDict["c" + custID].append([
                                    extraProd,
                                    int(float(prod[1]) * stockistSim)
                                ])

    print "========="
    print str(amountArr)
    suggestLabelVar.set("Suggesting new order of:" + str(newOrderDict))
    suggestLabelVar2.set("Order Ok ?:")
    summaryFrame.pack()
    ordOptionsFrame.pack()
Exemplo n.º 6
0
def main():
	orders = fileOps.openCsvDebugAmount("casesDebug.csv")
	forgetFrames()
	global newOrderDict
	newOrderDict = {}
	customerProducts[:] = []
	customerProductsSet = set()
	orderSimilarity = {}
	 
	custID = custEntry.get()
	custType = fileOps.getStockistType("c"+custID)
	print custType
	print '++=========++' 
	for key, prods in orders.iteritems():
		if "c" + custID == key:
			for prod in prods:
				print prod[0]
		#Once we've find the customer, we've got our list of products and can break the loop.
				customerProducts.append(prod[0])
				print "+++"+str(customerProducts)

	 
	print '----------'

	for key, prods in orders.iteritems():
	 
		if custID != key:
			prodArr[:] = []
			customerProductsSet = set(customerProducts)
			for prod in prods:
				prodArr.append(prod[0])
			prodSet = set(prodArr)
			extraProducts = customerProductsSet ^ prodSet	#Xor
			extraProducts = prodSet & extraProducts
	 		similarProducts = prodSet & customerProductsSet	#interseciton
			#Output
			print ""
			print "Checking customer " + str(key)
			print "  Number of extra products: " + str(len(extraProducts))		
			print "  Number of similar products: " + str(len(similarProducts))
	 
			if(len(similarProducts)!= 0 and len(extraProducts)!=0):
				temp1 = len(similarProducts)*len(similarProducts)
				temp2 = len(prodSet)*len(prodSet)
				sim = math.sqrt(float(temp1)/float(temp2))
				orderSimilarity[key] = sim 
	 
	print "-----"
	summaryLabelVar.set("Summary for customer c" + custID)
	summaryLabelVar2.set("Number of similar orders: " + str(len(orderSimilarity)))
	mostSimOrder = 0
	for key, sim in orderSimilarity.iteritems():
		if sim > mostSimOrder:
			mostSimOrder = sim
			keyToSearch = key
	summaryLabelVar3.set("The most Similar order is ["+keyToSearch+"] = " + str(mostSimOrder))
	#Stockist Type sim
	mostSimType = fileOps.getStockistType(keyToSearch)
	stockistSim = stockist[custType][mostSimType]
	#clear arrays
	prodArr[:] = []
	amountArr[:] = []
	#print "probability of wanting the extra item:"
	for key, prods in orders.iteritems():
		if key == keyToSearch:
			for prod in prods:
				prodArr.append(prod[0])
			prodSet = set(prodArr)
			extraProducts = prodSet ^ customerProductsSet
			extraProducts = prodSet & extraProducts
			print "Extra Products " + str(extraProducts)
			similarProducts = prodSet & customerProductsSet

			if len(extraProducts) != 0:
				if v.get() == 0:
					#get amounts
					for extraProd in extraProducts:
						extraProdCat = fileOps.getProductCat(extraProd)
						extraProdSim = 0
						for simProd in similarProducts:
							simProdCat = fileOps.getProductCat(simProd)
							extraProdSim += category[simProdCat][extraProdCat]

						extraProdSim = extraProdSim / len(similarProducts)
						print "sim for :" + extraProd + ":"+ str(extraProdSim)
						if extraProdSim > similarityThreshold:
							newOrderDict.setdefault("c"+custID, [])
							for prod in prods:
								if prod[0] == extraProd:
									amountArr.append(int(float(prod[1])*stockistSim))
									newOrderDict["c"+custID].append([extraProd,int(float(prod[1])*stockistSim)])
							#print "_______________"
							#print newOrderDict
				else:
					for extraProd in extraProducts:
						newOrderDict.setdefault("c"+custID, [])
						for prod in prods:
							if prod[0] == extraProd:
								amountArr.append(int(float(prod[1])*stockistSim))
								newOrderDict["c"+custID].append([extraProd,int(float(prod[1])*stockistSim)])
						
						
	print "========="
	print str(amountArr)
	suggestLabelVar.set("Suggesting new order of:"+str(newOrderDict))
	suggestLabelVar2.set("Order Ok ?:")
	summaryFrame.pack()
	ordOptionsFrame.pack()