first evolutionary algorithm
This commit is contained in:
parent
09eb58e703
commit
5c25e04143
1
.gitignore
vendored
1
.gitignore
vendored
@ -4,3 +4,4 @@ __pycache__
|
|||||||
*.conllu
|
*.conllu
|
||||||
*.gz
|
*.gz
|
||||||
.vscode
|
.vscode
|
||||||
|
*.pickle
|
||||||
|
2383
EvolutionaryAlgorithm/EvolutionaryAlgorithm.ipynb
Normal file
2383
EvolutionaryAlgorithm/EvolutionaryAlgorithm.ipynb
Normal file
File diff suppressed because it is too large
Load Diff
136
RecipeAnalysis/AdjacencyMatrix.ipynb
Normal file
136
RecipeAnalysis/AdjacencyMatrix.ipynb
Normal file
@ -0,0 +1,136 @@
|
|||||||
|
{
|
||||||
|
"cells": [
|
||||||
|
{
|
||||||
|
"cell_type": "markdown",
|
||||||
|
"metadata": {},
|
||||||
|
"source": [
|
||||||
|
"# Adjacency Matrix"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cell_type": "code",
|
||||||
|
"execution_count": 3,
|
||||||
|
"metadata": {},
|
||||||
|
"outputs": [],
|
||||||
|
"source": [
|
||||||
|
"import numpy as np\n",
|
||||||
|
"\n",
|
||||||
|
"from scipy.sparse import csr_matrix, lil_matrix, coo_matrix"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cell_type": "code",
|
||||||
|
"execution_count": 5,
|
||||||
|
"metadata": {},
|
||||||
|
"outputs": [],
|
||||||
|
"source": [
|
||||||
|
"class adj_matrix(object):\n",
|
||||||
|
" def __init__(self, symmetric_indices=False):\n",
|
||||||
|
" \n",
|
||||||
|
" self._sym = symmetric_indices\n",
|
||||||
|
" if not symmetric_indices:\n",
|
||||||
|
" self._x_labels = []\n",
|
||||||
|
" self._y_labels = []\n",
|
||||||
|
"\n",
|
||||||
|
" self._x_label_index={}\n",
|
||||||
|
" self._y_label_index={}\n",
|
||||||
|
" \n",
|
||||||
|
" else:\n",
|
||||||
|
" self._labels = []\n",
|
||||||
|
" self._label_index={}\n",
|
||||||
|
" \n",
|
||||||
|
" self._x = []\n",
|
||||||
|
" self._y = []\n",
|
||||||
|
" self._data = []\n",
|
||||||
|
" \n",
|
||||||
|
" self._mat = None\n",
|
||||||
|
" \n",
|
||||||
|
" def _get_ix(self, label):\n",
|
||||||
|
" i = self._x_label_index.get(label)\n",
|
||||||
|
" if i is None:\n",
|
||||||
|
" i = len(self._x_labels)\n",
|
||||||
|
" self._x_labels.append(label)\n",
|
||||||
|
" self._x_label_index[label] = i\n",
|
||||||
|
" return i\n",
|
||||||
|
" \n",
|
||||||
|
" def _get_iy(self, label):\n",
|
||||||
|
" i = self._y_label_index.get(label)\n",
|
||||||
|
" if i is None:\n",
|
||||||
|
" i = len(self._y_labels)\n",
|
||||||
|
" self._y_labels.append(label)\n",
|
||||||
|
" self._y_label_index[label] = i\n",
|
||||||
|
" return i\n",
|
||||||
|
" \n",
|
||||||
|
" def _get_i(self, label):\n",
|
||||||
|
" i = self._label_index.get(label)\n",
|
||||||
|
" if i is None:\n",
|
||||||
|
" i = len(self._labels)\n",
|
||||||
|
" self._labels.append(label)\n",
|
||||||
|
" self._label_index[label] = i\n",
|
||||||
|
" return i\n",
|
||||||
|
" \n",
|
||||||
|
" def add_entry(self, x, y, data):\n",
|
||||||
|
" \n",
|
||||||
|
" if self._sym:\n",
|
||||||
|
" ix = self._get_i(x)\n",
|
||||||
|
" iy = self._get_i(y)\n",
|
||||||
|
" \n",
|
||||||
|
" else:\n",
|
||||||
|
" ix = self._get_ix(x)\n",
|
||||||
|
" iy = self._get_iy(y)\n",
|
||||||
|
" \n",
|
||||||
|
" self._x.append(ix)\n",
|
||||||
|
" self._y.append(iy)\n",
|
||||||
|
" self._data.append(data)\n",
|
||||||
|
" \n",
|
||||||
|
" \n",
|
||||||
|
" def compile_to_mat(self):\n",
|
||||||
|
" if self._sym:\n",
|
||||||
|
" sx = len(self._labels)\n",
|
||||||
|
" sy = len(self._labels)\n",
|
||||||
|
" else:\n",
|
||||||
|
" sx = len(self._x_labels)\n",
|
||||||
|
" sy = len(self._y_labels)\n",
|
||||||
|
" \n",
|
||||||
|
" self._mat = coo_matrix((self._data, (self._x, self._y)), shape=(sx,sy))\n",
|
||||||
|
" return self._mat\n",
|
||||||
|
" \n",
|
||||||
|
" def get_csr(self):\n",
|
||||||
|
" return self.compile_to_mat().tocsr()\n",
|
||||||
|
" \n",
|
||||||
|
" def get_labels(self):\n",
|
||||||
|
" if self._sym:\n",
|
||||||
|
" return self._labels\n",
|
||||||
|
" return self._x_labels, self._y_labels"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cell_type": "code",
|
||||||
|
"execution_count": null,
|
||||||
|
"metadata": {},
|
||||||
|
"outputs": [],
|
||||||
|
"source": []
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"metadata": {
|
||||||
|
"kernelspec": {
|
||||||
|
"display_name": "Python 3",
|
||||||
|
"language": "python",
|
||||||
|
"name": "python3"
|
||||||
|
},
|
||||||
|
"language_info": {
|
||||||
|
"codemirror_mode": {
|
||||||
|
"name": "ipython",
|
||||||
|
"version": 3
|
||||||
|
},
|
||||||
|
"file_extension": ".py",
|
||||||
|
"mimetype": "text/x-python",
|
||||||
|
"name": "python",
|
||||||
|
"nbconvert_exporter": "python",
|
||||||
|
"pygments_lexer": "ipython3",
|
||||||
|
"version": "3.7.3"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"nbformat": 4,
|
||||||
|
"nbformat_minor": 4
|
||||||
|
}
|
91
RecipeAnalysis/AdjacencyMatrix.py
Normal file
91
RecipeAnalysis/AdjacencyMatrix.py
Normal file
@ -0,0 +1,91 @@
|
|||||||
|
#!/usr/bin/env python3
|
||||||
|
# coding: utf-8
|
||||||
|
|
||||||
|
# # Adjacency Matrix
|
||||||
|
|
||||||
|
import numpy as np
|
||||||
|
|
||||||
|
from scipy.sparse import csr_matrix, lil_matrix, coo_matrix
|
||||||
|
|
||||||
|
|
||||||
|
class adj_matrix(object):
|
||||||
|
def __init__(self, symmetric_indices=False):
|
||||||
|
|
||||||
|
self._sym = symmetric_indices
|
||||||
|
if not symmetric_indices:
|
||||||
|
self._x_labels = []
|
||||||
|
self._y_labels = []
|
||||||
|
|
||||||
|
self._x_label_index={}
|
||||||
|
self._y_label_index={}
|
||||||
|
|
||||||
|
else:
|
||||||
|
self._labels = []
|
||||||
|
self._label_index={}
|
||||||
|
|
||||||
|
self._x = []
|
||||||
|
self._y = []
|
||||||
|
self._data = []
|
||||||
|
|
||||||
|
self._mat = None
|
||||||
|
|
||||||
|
def _get_ix(self, label):
|
||||||
|
i = self._x_label_index.get(label)
|
||||||
|
if i is None:
|
||||||
|
i = len(self._x_labels)
|
||||||
|
self._x_labels.append(label)
|
||||||
|
self._x_label_index[label] = i
|
||||||
|
return i
|
||||||
|
|
||||||
|
def _get_iy(self, label):
|
||||||
|
i = self._y_label_index.get(label)
|
||||||
|
if i is None:
|
||||||
|
i = len(self._y_labels)
|
||||||
|
self._y_labels.append(label)
|
||||||
|
self._y_label_index[label] = i
|
||||||
|
return i
|
||||||
|
|
||||||
|
def _get_i(self, label):
|
||||||
|
i = self._label_index.get(label)
|
||||||
|
if i is None:
|
||||||
|
i = len(self._labels)
|
||||||
|
self._labels.append(label)
|
||||||
|
self._label_index[label] = i
|
||||||
|
return i
|
||||||
|
|
||||||
|
def add_entry(self, x, y, data):
|
||||||
|
|
||||||
|
if self._sym:
|
||||||
|
ix = self._get_i(x)
|
||||||
|
iy = self._get_i(y)
|
||||||
|
|
||||||
|
else:
|
||||||
|
ix = self._get_ix(x)
|
||||||
|
iy = self._get_iy(y)
|
||||||
|
|
||||||
|
self._x.append(ix)
|
||||||
|
self._y.append(iy)
|
||||||
|
self._data.append(data)
|
||||||
|
|
||||||
|
def compile_to_mat(self):
|
||||||
|
if self._sym:
|
||||||
|
sx = len(self._labels)
|
||||||
|
sy = len(self._labels)
|
||||||
|
else:
|
||||||
|
sx = len(self._x_labels)
|
||||||
|
sy = len(self._y_labels)
|
||||||
|
|
||||||
|
self._mat = coo_matrix((self._data, (self._x, self._y)), shape=(sx,sy))
|
||||||
|
return self._mat
|
||||||
|
|
||||||
|
def get_csr(self):
|
||||||
|
return self.compile_to_mat().tocsr()
|
||||||
|
|
||||||
|
def get_labels(self):
|
||||||
|
if self._sym:
|
||||||
|
return self._labels
|
||||||
|
return self._x_labels, self._y_labels
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
72
RecipeAnalysis/AdjacencyMatrixTests.ipynb
Normal file
72
RecipeAnalysis/AdjacencyMatrixTests.ipynb
Normal file
@ -0,0 +1,72 @@
|
|||||||
|
{
|
||||||
|
"cells": [
|
||||||
|
{
|
||||||
|
"cell_type": "markdown",
|
||||||
|
"metadata": {},
|
||||||
|
"source": [
|
||||||
|
"# Evaluate Adjacency Matrices"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cell_type": "code",
|
||||||
|
"execution_count": 1,
|
||||||
|
"metadata": {},
|
||||||
|
"outputs": [],
|
||||||
|
"source": [
|
||||||
|
"import pickle"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cell_type": "code",
|
||||||
|
"execution_count": 2,
|
||||||
|
"metadata": {},
|
||||||
|
"outputs": [],
|
||||||
|
"source": [
|
||||||
|
"m_act = pickle.load(open(\"m_act.pickle\", \"rb\"))\n",
|
||||||
|
"m_mix = pickle.load(open(\"m_mix.pickle\", \"rb\"))\n",
|
||||||
|
"m_base_act = pickle.load(open(\"m_base_act.pickle\", \"rb\"))\n",
|
||||||
|
"m_base_mix = pickle.load(open(\"m_base_mix.pickle\", \"rb\"))"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cell_type": "code",
|
||||||
|
"execution_count": 3,
|
||||||
|
"metadata": {},
|
||||||
|
"outputs": [],
|
||||||
|
"source": [
|
||||||
|
"c_act = m_act.get_csr()\n",
|
||||||
|
"c_mix = m_mix.get_csr()\n",
|
||||||
|
"c_base_act = m_base_act.get_csr()\n",
|
||||||
|
"c_base_mix = m_base_mix.get_csr()"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cell_type": "code",
|
||||||
|
"execution_count": null,
|
||||||
|
"metadata": {},
|
||||||
|
"outputs": [],
|
||||||
|
"source": []
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"metadata": {
|
||||||
|
"kernelspec": {
|
||||||
|
"display_name": "Python 3",
|
||||||
|
"language": "python",
|
||||||
|
"name": "python3"
|
||||||
|
},
|
||||||
|
"language_info": {
|
||||||
|
"codemirror_mode": {
|
||||||
|
"name": "ipython",
|
||||||
|
"version": 3
|
||||||
|
},
|
||||||
|
"file_extension": ".py",
|
||||||
|
"mimetype": "text/x-python",
|
||||||
|
"name": "python",
|
||||||
|
"nbconvert_exporter": "python",
|
||||||
|
"pygments_lexer": "ipython3",
|
||||||
|
"version": "3.7.3"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"nbformat": 4,
|
||||||
|
"nbformat_minor": 4
|
||||||
|
}
|
36030
RecipeAnalysis/InputTrees.ipynb
Normal file
36030
RecipeAnalysis/InputTrees.ipynb
Normal file
File diff suppressed because it is too large
Load Diff
383
RecipeAnalysis/MatrixGeneration.ipynb
Normal file
383
RecipeAnalysis/MatrixGeneration.ipynb
Normal file
@ -0,0 +1,383 @@
|
|||||||
|
{
|
||||||
|
"cells": [
|
||||||
|
{
|
||||||
|
"cell_type": "markdown",
|
||||||
|
"metadata": {},
|
||||||
|
"source": [
|
||||||
|
"# Matrix Generation"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cell_type": "code",
|
||||||
|
"execution_count": 1,
|
||||||
|
"metadata": {},
|
||||||
|
"outputs": [
|
||||||
|
{
|
||||||
|
"data": {
|
||||||
|
"text/html": [
|
||||||
|
" <script type=\"text/javascript\">\n",
|
||||||
|
" window.PlotlyConfig = {MathJaxConfig: 'local'};\n",
|
||||||
|
" if (window.MathJax) {MathJax.Hub.Config({SVG: {font: \"STIX-Web\"}});}\n",
|
||||||
|
" if (typeof require !== 'undefined') {\n",
|
||||||
|
" require.undef(\"plotly\");\n",
|
||||||
|
" requirejs.config({\n",
|
||||||
|
" paths: {\n",
|
||||||
|
" 'plotly': ['https://cdn.plot.ly/plotly-latest.min']\n",
|
||||||
|
" }\n",
|
||||||
|
" });\n",
|
||||||
|
" require(['plotly'], function(Plotly) {\n",
|
||||||
|
" window._Plotly = Plotly;\n",
|
||||||
|
" });\n",
|
||||||
|
" }\n",
|
||||||
|
" </script>\n",
|
||||||
|
" "
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"metadata": {},
|
||||||
|
"output_type": "display_data"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"source": [
|
||||||
|
"import sys\n",
|
||||||
|
"sys.path.append(\"../\")\n",
|
||||||
|
"from Recipe import Recipe, Ingredient, RecipeGraph\n",
|
||||||
|
"\n",
|
||||||
|
"import settings\n",
|
||||||
|
"import db.db_settings as db_settings\n",
|
||||||
|
"from db.database_connection import DatabaseConnection\n",
|
||||||
|
"\n",
|
||||||
|
"import random\n",
|
||||||
|
"\n",
|
||||||
|
"import itertools\n",
|
||||||
|
"\n",
|
||||||
|
"import numpy as np"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cell_type": "code",
|
||||||
|
"execution_count": 2,
|
||||||
|
"metadata": {},
|
||||||
|
"outputs": [
|
||||||
|
{
|
||||||
|
"data": {
|
||||||
|
"text/plain": [
|
||||||
|
"<db.database_connection.DatabaseConnection at 0x7fc3a1bedac8>"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"execution_count": 2,
|
||||||
|
"metadata": {},
|
||||||
|
"output_type": "execute_result"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"source": [
|
||||||
|
"DatabaseConnection(db_settings.db_host,\n",
|
||||||
|
" db_settings.db_port,\n",
|
||||||
|
" db_settings.db_user,\n",
|
||||||
|
" db_settings.db_pw,\n",
|
||||||
|
" db_settings.db_db,\n",
|
||||||
|
" db_settings.db_charset)"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cell_type": "code",
|
||||||
|
"execution_count": 3,
|
||||||
|
"metadata": {},
|
||||||
|
"outputs": [
|
||||||
|
{
|
||||||
|
"name": "stdout",
|
||||||
|
"output_type": "stream",
|
||||||
|
"text": [
|
||||||
|
"CPU times: user 8.71 s, sys: 942 ms, total: 9.66 s\n",
|
||||||
|
"Wall time: 9.77 s\n"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"source": [
|
||||||
|
"%time ids = DatabaseConnection.global_single_query(\"select id from recipes\")"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cell_type": "code",
|
||||||
|
"execution_count": 4,
|
||||||
|
"metadata": {},
|
||||||
|
"outputs": [],
|
||||||
|
"source": [
|
||||||
|
"import AdjacencyMatrix"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cell_type": "markdown",
|
||||||
|
"metadata": {},
|
||||||
|
"source": [
|
||||||
|
"* create Adjacency Matrix"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cell_type": "code",
|
||||||
|
"execution_count": 6,
|
||||||
|
"metadata": {},
|
||||||
|
"outputs": [],
|
||||||
|
"source": [
|
||||||
|
"def add_entries_from_rec_state(rec_state, m_act, m_mix, m_base_act, m_base_mix):\n",
|
||||||
|
" mix_m, mix_label = rec_state.get_mixing_matrix()\n",
|
||||||
|
" act_m, act_a, act_i = rec_state.get_action_matrix()\n",
|
||||||
|
"\n",
|
||||||
|
" # create list of tuples: [action, ingredient]\n",
|
||||||
|
" seen_actions = np.array(list(itertools.product(act_a,act_i))).reshape((len(act_a), len(act_i), 2))\n",
|
||||||
|
"\n",
|
||||||
|
" # create list of tuples [ingredient, ingredient]\n",
|
||||||
|
" seen_mixes = np.array(list(itertools.product(mix_label,mix_label))).reshape((len(mix_label), len(mix_label), 2))\n",
|
||||||
|
"\n",
|
||||||
|
" seen_actions = seen_actions[act_m == 1]\n",
|
||||||
|
" seen_mixes = seen_mixes[mix_m == 1]\n",
|
||||||
|
"\n",
|
||||||
|
" seen_actions = set([tuple(x) for x in seen_actions.tolist()])\n",
|
||||||
|
" seen_mixes = set([tuple(x) for x in seen_mixes.tolist()])\n",
|
||||||
|
" \n",
|
||||||
|
" seen_base_actions = set()\n",
|
||||||
|
" seen_base_mixes = set()\n",
|
||||||
|
" \n",
|
||||||
|
" for act, ing in seen_actions:\n",
|
||||||
|
" m_act.add_entry(act, ing.to_json(), 1)\n",
|
||||||
|
" if (act, ing._base_ingredient) not in seen_base_actions:\n",
|
||||||
|
" seen_base_actions.add((act, ing._base_ingredient))\n",
|
||||||
|
" m_base_act.add_entry(act, ing._base_ingredient, 1)\n",
|
||||||
|
" \n",
|
||||||
|
" for x,y in seen_mixes:\n",
|
||||||
|
" xj = x.to_json()\n",
|
||||||
|
" yj = y.to_json()\n",
|
||||||
|
" if xj < yj:\n",
|
||||||
|
" m_mix.add_entry(xj,yj,1)\n",
|
||||||
|
" if (x._base_ingredient, y._base_ingredient) not in seen_base_mixes:\n",
|
||||||
|
" seen_base_mixes.add((x._base_ingredient, y._base_ingredient))\n",
|
||||||
|
" m_base_mix.add_entry(x._base_ingredient, y._base_ingredient, 1)\n",
|
||||||
|
" "
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cell_type": "code",
|
||||||
|
"execution_count": 7,
|
||||||
|
"metadata": {},
|
||||||
|
"outputs": [],
|
||||||
|
"source": [
|
||||||
|
"m_act = AdjacencyMatrix.adj_matrix()\n",
|
||||||
|
"m_mix = AdjacencyMatrix.adj_matrix(True)\n",
|
||||||
|
"m_base_act = AdjacencyMatrix.adj_matrix()\n",
|
||||||
|
"m_base_mix = AdjacencyMatrix.adj_matrix(True)"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cell_type": "code",
|
||||||
|
"execution_count": 8,
|
||||||
|
"metadata": {},
|
||||||
|
"outputs": [
|
||||||
|
{
|
||||||
|
"name": "stdout",
|
||||||
|
"output_type": "stream",
|
||||||
|
"text": [
|
||||||
|
"warning: recipe a9dc137b48 has no ingredient! skipping it\n",
|
||||||
|
"CPU times: user 13min 35s, sys: 3.52 s, total: 13min 39s\n",
|
||||||
|
"Wall time: 13min 50s\n"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"source": [
|
||||||
|
"%%time\n",
|
||||||
|
"for i in range(10000):\n",
|
||||||
|
" id = random.choice(ids)['id']\n",
|
||||||
|
" rec = Recipe(id)\n",
|
||||||
|
" #rec.display_recipe()\n",
|
||||||
|
" ing = rec.extract_ingredients()\n",
|
||||||
|
" if len(ing) == 0:\n",
|
||||||
|
" print(f\"warning: recipe {id} has no ingredient! skipping it\")\n",
|
||||||
|
" continue\n",
|
||||||
|
" rec.apply_instructions(debug=False)\n",
|
||||||
|
" add_entries_from_rec_state(rec._recipe_state, m_act, m_mix, m_base_act, m_base_mix)"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cell_type": "code",
|
||||||
|
"execution_count": 10,
|
||||||
|
"metadata": {},
|
||||||
|
"outputs": [],
|
||||||
|
"source": [
|
||||||
|
"import pickle"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cell_type": "code",
|
||||||
|
"execution_count": 11,
|
||||||
|
"metadata": {},
|
||||||
|
"outputs": [],
|
||||||
|
"source": [
|
||||||
|
"pickle.dump(m_act, file=open(\"m_act.pickle\", 'wb'))\n",
|
||||||
|
"pickle.dump(m_mix, file=open(\"m_mix.pickle\", 'wb'))\n",
|
||||||
|
"pickle.dump(m_base_act, file=open(\"m_base_act.pickle\", 'wb'))\n",
|
||||||
|
"pickle.dump(m_base_mix, file=open(\"m_base_mix.pickle\", 'wb'))"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cell_type": "code",
|
||||||
|
"execution_count": null,
|
||||||
|
"metadata": {},
|
||||||
|
"outputs": [],
|
||||||
|
"source": []
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cell_type": "code",
|
||||||
|
"execution_count": null,
|
||||||
|
"metadata": {},
|
||||||
|
"outputs": [],
|
||||||
|
"source": []
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cell_type": "code",
|
||||||
|
"execution_count": 12,
|
||||||
|
"metadata": {},
|
||||||
|
"outputs": [],
|
||||||
|
"source": [
|
||||||
|
"c_mix = m_mix.get_csr()\n",
|
||||||
|
"c_act = m_act.get_csr()\n",
|
||||||
|
"c_base_mix = m_base_mix.get_csr()\n",
|
||||||
|
"c_base_act = m_base_act.get_csr()"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cell_type": "code",
|
||||||
|
"execution_count": 13,
|
||||||
|
"metadata": {},
|
||||||
|
"outputs": [
|
||||||
|
{
|
||||||
|
"name": "stdout",
|
||||||
|
"output_type": "stream",
|
||||||
|
"text": [
|
||||||
|
"(65, 64699) (71548, 71548)\n",
|
||||||
|
"113994 537369\n",
|
||||||
|
"(65, 4738) (5850, 5850)\n",
|
||||||
|
"30820 122390\n"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"source": [
|
||||||
|
"print(c_act.shape, c_mix.shape)\n",
|
||||||
|
"print(len(c_act.nonzero()[0]),len(c_mix.nonzero()[0]))\n",
|
||||||
|
"print(c_base_act.shape, c_base_mix.shape)\n",
|
||||||
|
"print(len(c_base_act.nonzero()[0]),len(c_base_mix.nonzero()[0]))"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cell_type": "code",
|
||||||
|
"execution_count": 16,
|
||||||
|
"metadata": {},
|
||||||
|
"outputs": [
|
||||||
|
{
|
||||||
|
"name": "stdout",
|
||||||
|
"output_type": "stream",
|
||||||
|
"text": [
|
||||||
|
"(64, 63787) (70933, 70933)\n",
|
||||||
|
"112841 524285\n"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"source": [
|
||||||
|
"print(c_act.shape, c_mix.shape)\n",
|
||||||
|
"print(len(c_act.nonzero()[0]),len(c_mix.nonzero()[0]))"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cell_type": "code",
|
||||||
|
"execution_count": 18,
|
||||||
|
"metadata": {},
|
||||||
|
"outputs": [
|
||||||
|
{
|
||||||
|
"data": {
|
||||||
|
"text/plain": [
|
||||||
|
"17560"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"execution_count": 18,
|
||||||
|
"metadata": {},
|
||||||
|
"output_type": "execute_result"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"source": [
|
||||||
|
"np.sum(c_act.toarray() > 1)"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cell_type": "code",
|
||||||
|
"execution_count": 99,
|
||||||
|
"metadata": {},
|
||||||
|
"outputs": [
|
||||||
|
{
|
||||||
|
"data": {
|
||||||
|
"text/plain": [
|
||||||
|
"array([[1, 1, 0, ..., 0, 0, 0],\n",
|
||||||
|
" [0, 0, 1, ..., 0, 0, 0],\n",
|
||||||
|
" [0, 0, 0, ..., 0, 0, 0],\n",
|
||||||
|
" ...,\n",
|
||||||
|
" [0, 0, 0, ..., 0, 0, 0],\n",
|
||||||
|
" [0, 0, 0, ..., 0, 0, 0],\n",
|
||||||
|
" [0, 0, 0, ..., 0, 0, 0]], dtype=int64)"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"execution_count": 99,
|
||||||
|
"metadata": {},
|
||||||
|
"output_type": "execute_result"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"source": []
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cell_type": "markdown",
|
||||||
|
"metadata": {},
|
||||||
|
"source": [
|
||||||
|
"* values after 100:\n",
|
||||||
|
"```\n",
|
||||||
|
"(53, 1498) (1620, 1620)\n",
|
||||||
|
"1982 6489\n",
|
||||||
|
"```\n",
|
||||||
|
"\n",
|
||||||
|
"* after 1000:\n",
|
||||||
|
"```\n",
|
||||||
|
"(60, 9855) (10946, 10946)\n",
|
||||||
|
"15446 59943\n",
|
||||||
|
"```\n",
|
||||||
|
"\n",
|
||||||
|
"* after 10000:\n",
|
||||||
|
"```\n",
|
||||||
|
"(65, 65235) (72448, 72448)\n",
|
||||||
|
"114808 546217\n",
|
||||||
|
"```"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cell_type": "code",
|
||||||
|
"execution_count": null,
|
||||||
|
"metadata": {},
|
||||||
|
"outputs": [],
|
||||||
|
"source": []
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"metadata": {
|
||||||
|
"kernelspec": {
|
||||||
|
"display_name": "Python 3",
|
||||||
|
"language": "python",
|
||||||
|
"name": "python3"
|
||||||
|
},
|
||||||
|
"language_info": {
|
||||||
|
"codemirror_mode": {
|
||||||
|
"name": "ipython",
|
||||||
|
"version": 3
|
||||||
|
},
|
||||||
|
"file_extension": ".py",
|
||||||
|
"mimetype": "text/x-python",
|
||||||
|
"name": "python",
|
||||||
|
"nbconvert_exporter": "python",
|
||||||
|
"pygments_lexer": "ipython3",
|
||||||
|
"version": "3.7.3"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"nbformat": 4,
|
||||||
|
"nbformat_minor": 4
|
||||||
|
}
|
113
RecipeAnalysis/Playground.ipynb
Normal file
113
RecipeAnalysis/Playground.ipynb
Normal file
@ -0,0 +1,113 @@
|
|||||||
|
{
|
||||||
|
"cells": [
|
||||||
|
{
|
||||||
|
"cell_type": "markdown",
|
||||||
|
"metadata": {},
|
||||||
|
"source": [
|
||||||
|
"# Playground"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cell_type": "code",
|
||||||
|
"execution_count": 1,
|
||||||
|
"metadata": {},
|
||||||
|
"outputs": [],
|
||||||
|
"source": [
|
||||||
|
"from graphviz import Digraph"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cell_type": "code",
|
||||||
|
"execution_count": 2,
|
||||||
|
"metadata": {},
|
||||||
|
"outputs": [],
|
||||||
|
"source": [
|
||||||
|
"dot = Digraph(comment=\"testgraph\")"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cell_type": "code",
|
||||||
|
"execution_count": 6,
|
||||||
|
"metadata": {},
|
||||||
|
"outputs": [],
|
||||||
|
"source": [
|
||||||
|
"dot.node(\"B\", \"test2\", shape=\"diamond\")"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cell_type": "code",
|
||||||
|
"execution_count": 7,
|
||||||
|
"metadata": {},
|
||||||
|
"outputs": [
|
||||||
|
{
|
||||||
|
"data": {
|
||||||
|
"image/svg+xml": [
|
||||||
|
"<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n",
|
||||||
|
"<!DOCTYPE svg PUBLIC \"-//W3C//DTD SVG 1.1//EN\"\n",
|
||||||
|
" \"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd\">\n",
|
||||||
|
"<!-- Generated by graphviz version 2.40.1 (20161225.0304)\n",
|
||||||
|
" -->\n",
|
||||||
|
"<!-- Title: %3 Pages: 1 -->\n",
|
||||||
|
"<svg width=\"158pt\" height=\"44pt\"\n",
|
||||||
|
" viewBox=\"0.00 0.00 157.60 44.00\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\n",
|
||||||
|
"<g id=\"graph0\" class=\"graph\" transform=\"scale(1 1) rotate(0) translate(4 40)\">\n",
|
||||||
|
"<title>%3</title>\n",
|
||||||
|
"<polygon fill=\"#ffffff\" stroke=\"transparent\" points=\"-4,4 -4,-40 153.6046,-40 153.6046,4 -4,4\"/>\n",
|
||||||
|
"<!-- A -->\n",
|
||||||
|
"<g id=\"node1\" class=\"node\">\n",
|
||||||
|
"<title>A</title>\n",
|
||||||
|
"<ellipse fill=\"none\" stroke=\"#000000\" cx=\"27\" cy=\"-18\" rx=\"27\" ry=\"18\"/>\n",
|
||||||
|
"<text text-anchor=\"middle\" x=\"27\" y=\"-14.3\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\">test</text>\n",
|
||||||
|
"</g>\n",
|
||||||
|
"<!-- B -->\n",
|
||||||
|
"<g id=\"node2\" class=\"node\">\n",
|
||||||
|
"<title>B</title>\n",
|
||||||
|
"<polygon fill=\"none\" stroke=\"#000000\" points=\"111,-36 72.2905,-18 111,0 149.7095,-18 111,-36\"/>\n",
|
||||||
|
"<text text-anchor=\"middle\" x=\"111\" y=\"-14.3\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\">test2</text>\n",
|
||||||
|
"</g>\n",
|
||||||
|
"</g>\n",
|
||||||
|
"</svg>\n"
|
||||||
|
],
|
||||||
|
"text/plain": [
|
||||||
|
"<graphviz.dot.Digraph at 0x7f1d4e10e978>"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"execution_count": 7,
|
||||||
|
"metadata": {},
|
||||||
|
"output_type": "execute_result"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"source": [
|
||||||
|
"dot"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cell_type": "code",
|
||||||
|
"execution_count": null,
|
||||||
|
"metadata": {},
|
||||||
|
"outputs": [],
|
||||||
|
"source": []
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"metadata": {
|
||||||
|
"kernelspec": {
|
||||||
|
"display_name": "Python 3",
|
||||||
|
"language": "python",
|
||||||
|
"name": "python3"
|
||||||
|
},
|
||||||
|
"language_info": {
|
||||||
|
"codemirror_mode": {
|
||||||
|
"name": "ipython",
|
||||||
|
"version": 3
|
||||||
|
},
|
||||||
|
"file_extension": ".py",
|
||||||
|
"mimetype": "text/x-python",
|
||||||
|
"name": "python",
|
||||||
|
"nbconvert_exporter": "python",
|
||||||
|
"pygments_lexer": "ipython3",
|
||||||
|
"version": "3.7.3"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"nbformat": 4,
|
||||||
|
"nbformat_minor": 4
|
||||||
|
}
|
File diff suppressed because one or more lines are too long
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because one or more lines are too long
Loading…
Reference in New Issue
Block a user