Ejemplo n.º 1
0
def plot(
    iterable, key=lambda item: item, sample_size=1, depth=1, colors=_plot_colors, basecase=_plot_basecase, _show=True
):
    """ This function can be used for plotting an iterable graphically. If matplotlib isn't installed, this will only
        throw a warning, and no GUI will be launched.. """

    try:
        pyplot
    except NameError:
        warnings.warn("matplotlib must be installed in order to see the plot graphic.", Warning)
    else:
        for i, iterable in enumerate(flattened(iterable, basecase)):
            xs, ys = zip(
                *(
                    (i, math.avg(key(item) for item in sample))
                    for i, sample in enumerate(iterate.chunked(iterable, sample_size, trail=True))
                )
            )

            pyplot.plot(xs, ys, linewidth=1.0, color=colors[i % len(colors)])

        if _show:
            pyplot.show()
Ejemplo n.º 2
0
def __demo__ () :

    from nlplib.exterior.util import plot
    from nlplib.general.math import avg

    def fitness (individual) :
        return individual.traits['value']

    def mutate (individual) :
        individual.traits['value'] += round(random.triangular(-10, 10))

    selection = Selection('foo', fitness, mutate)

    for _ in range(100) :
        individual = selection.individual()
        individual.traits['value'] = 0
        mutate(individual)
        selection.population.add(individual)

    fitnesses = [selection.generation() for _ in range(100)]

     # Fitness increases with each successive generation.
    plot([avg(fitness) for fitness in fitnesses])
Ejemplo n.º 3
0
def __demo__ (ut) :

    from nlplib.data import builtin_db
    from nlplib.core.model import Word, NeuralNetwork

    from nlplib.exterior.train import usable
    from nlplib.exterior.util import plot

    top = 10

    with builtin_db() as session :
        top_words = list(session.access.most_common(Word, top=top)) + [None]

    nn = NeuralNetwork(top_words, int(len(top_words)*2), top_words)

    with builtin_db() as session :
        patterns = usable(nn, list(session.access.all_documents())[:], gram_size=2)

    errors = [nn.train(input_words, output_words, rate=0.1) for input_words, output_words in patterns]

    from nlplib.general.math import avg

    print(avg(errors[:]))

    plot(errors,
         sample_size=100)

    def ask (string) :
        with builtin_db() as session :
            words = session.access.words(string)

        scored = Scored(nn.predict(words)).sorted()

        print('\n'.join(repr(score) for score in list(scored)[:12]))

    return ask