コード例 #1
0
    stats = tools.Statistics(lambda ind: ind.fitness.values)
    stats.register("avg", numpy.mean)
    stats.register("std", numpy.std)
    stats.register("min", numpy.min)
    stats.register("max", numpy.max)
    algorithms.eaSimple(pop,
                        toolbox,
                        0.7,
                        0.3,
                        150,
                        stats=stats,
                        halloffame=hof)

    return pop, stats, hof


if __name__ == "__main__":
    pop, stats, hof = main()

    print('track names in hof individual set size', SET_SIZE)
    for h in hof:
        for i in h:
            print(trackNames[i])
        bestSetURIs = [trackURIs[i] for i in h]

        eval = Evaluation()
        print(" hof set scores ",
              eval.exactSetMatches(ugpTrackURIs, bestSetURIs))
        print(' === ')

    pdb.set_trace()
コード例 #2
0

def WeightedSum(ideal, trackFeatures, weights):
    '''
    keyOrder = ['danceability', 'energy', 'key', 'loudness', 'mode', 'speechiness', 'acousticness', \
         'instrumentalness', 'liveness', 'valence', 'tempo', 'time_signature', 'popularity', 'release_date']
    '''
    trackDiffs = []
    wSum = sum(weights)
    for track in tqdm(trackFeatures):
        trackDiffSum = 0
        for cIdx, cIdeal in enumerate(ideal):
            trackDiffSum += (weights[cIdx] / wSum) * abs(cIdeal - track[cIdx])
        trackDiffs.append(trackDiffSum / len(cons))
    return trackDiffs


trackDiffs = UnweightedSum(ideal, trackFeatures)

print('sorting')
trackDiffs, trackURIs, trackNames, trackFeatures = zip(
    *sorted(zip(trackDiffs, trackURIs, trackNames, trackFeatures)))

#for i in range(20):
#print(trackDiffs[i], trackNames[i])

eval = Evaluation()
print(" set scores ", eval.exactSetMatches(testTrackURIs,
                                           trackURIs[:SET_SIZE]))

pdb.set_trace()