by: Kevin Broløs
(Feyn version 1.4 or newer)
How to use the QLattice
This page is about some of the basic functions that live on the
QLattice instance itself.
A few prerequisites and assumptions:
We also assume you already know how to access your QLattice, and this code assumes you use a configuration file.
Update your QLattice
QLattice will be a blank slate, and you'll be using your results to point it in the direction that's useful to your problem as you go along.
Once you've selected a good graph you can update your
QLattice with the learnings.
For the sake of example, let's generate a classification dataset using
from sklearn.datasets import make_classification import pandas as pd from feyn.tools import split # Generate a dataset and put it into a dataframe X, y = make_classification() data = pd.DataFrame(X, columns=[str(i) for i in range(X.shape)]) data['target'] = y # Split into a train and test set train, test = split(data, ratio=(0.75, 0.25))
Let's get a classifier for this and do a single fit:
from feyn import QLattice qlattice = QLattice() # This will extract a QGraph containing classifiers qgraph = qlattice.get_classifier(data.columns, 'target')
Now that we have a qgraph, we can choose to update the
QLattice. You can update the
QLattice with either a single graph, or a list of graphs, like so:
best_graph = qgraph qlattice.update(best_graph) best_graphs = list(qgraph[0:10]) qlattice.update(best_graphs)
You can also use
QGraph.best(), which returns all the top graphs in your
QGraph that are guaranteed to have evolved separately.
best_graphs = qgraph.best() qlattice.update(best_graphs)
This is essential to how you can tap into the full potential of your
QLattice. Updating the
QLattice means restructuring the knowledge in a way that takes into account the structure of the graph you have just fitted with your dataset. This narrows the search field for new graphs and allows you to get new and different graphs to fit, and converge faster on solutions that work for your specific problem.
In layman's terms, you tell the
QLattice what works and what you'd like to see more of, and it'll use this knowledge to make you happier, faster.
The blank slate
What happens if you've been experimenting with some different datasets, or approaches, and you want to go back to this initial state?
You can reset it using the following:
from feyn import QLattice qlattice = QLattice() qlattice.reset()
This will reset all knowledge in the
QLattice, so take care not to use it for production systems. Except for restoring a previous version, this action cannot be undone.
Saving and restoring the QLattice state
You can take a snapshot of your QLattice at any time, as well as restore it, both programmatically, and through the dashboard.
from feyn import QLattice qlattice = QLattice() # Returns a snapshot object containing your note, time of snapshotting and id snapshot = qlattice.snapshots.capture("A little note") # List all snapshots: for s in qlattice.snapshots: print(s.id, s.when, s.note) # Restore using the id of the snapshot. The instance of the snapshot from previously also works. qlattice.snapshots.restore(snapshot.id)