Skip to content

Instantly share code, notes, and snippets.

@karlnapf
Created June 30, 2016 13:08
Show Gist options
  • Save karlnapf/457e82955f9085f278fbdea4bcb7eba1 to your computer and use it in GitHub Desktop.
Save karlnapf/457e82955f9085f278fbdea4bcb7eba1 to your computer and use it in GitHub Desktop.
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"cell_type": "code",
"execution_count": 10,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"image/png": "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\nkxtQFZRN9NvI4ZUicgVWi0C1yFdrXe5LH6n3pWQigW9l58wHl09kn9MppNlG6UHqzKH3UhQTKa6b\nvvh9KodXZ+7MaaqdS2Vc6o3/q0ah6QSVa5iiW+cwcWkD0xitGkTqLte2Z4u96nbrqs551Kgyqsep\nWseVnTtXnNbNd6bk+3fi54PxU12a0ykG3mkW553TOn83xWc88bjUhaRqVvRPXxAbyhDlZbue0tXW\nGmGPMJVc0Zf0wxRyPc3kY1fy6Ey6J1ksrVIWODGS0qnlJy8jU62qE/m+WiWaFIVymcUagqQonktM\nU9eTYv19IR57D8V1py6ch5is4e2Ul9IAk3vI+s0beem1X7pbQTUr+v9+mMKHJUyu3w0Ut95ZSgWF\ncywqpO0Urr3EYlUUdYvtYrGCv51B2rbts9m6Mjd4LfdeziVbqLme8tNramJ7mYG4KS7r7MJ/TelF\nPcjEpaVMyf874nkfZnLvWVfrxOBSK0j1qwCWm+WKuyWaEetfX8BELv3jJ1EUykuxgdnpAA7HxrQ/\nfs8HYQ+zmJi3gcVGW+ZKyAlS5varpZhqHV+LVGRxHhwl47a4r4bCPsNiwuIg5UWiU4/cyDQZnb5Q\n9lIIpeN5vRxe8qiaVl4jpHIu1eOSunnVpdcft02hGG1PUbj0ExYj4bZSODLI4e7qPdk6bbNq+OVt\nu8zdXcaBWiWL8nPVMvTyqT3y+n2ar6VV0VfF9XfF5S8xGazaE3o5Lp+mBJHMpwRnWbfexOFSK0h1\nNdLA7msgA7v/tLqkatQtYbvDmkxoS/foYKX60XUupFMUtx0p0TXr43c7bYYtNaQN3E5poQ29VvBE\nLVeduhNGGqfKyZMT1uZoHTXH6oSKWgj3JRYrmtvE4n0Uq+8QRVnZys3Tmabf6KUQUSOMqu+KGIlU\n3cGlZl3lt7E49qTjIvMp/JrHxCV1j+vLWYOP1P2nPLLTaag7TXmmyqmWktGghVrGnI6vlimfMkWm\n38um59DrnSvZXz0rm+N5V8btX43rn6Io4E0Evs3kHlce9cRnN4mJUxOHS60i1gcAbAKwBcAf19in\n7Q+gSJaRBnZtGREdhxpgKtOiy5psuCk2mnuZIpO0QWotO21YtszQWhYbbp7Aaystj2TN2QHiMjKV\nrbNEVdKXlXDRnuHauP5pikKyhHmAqar0fop77xGmUk4awbeBxcHaWi+7eTXWV8dF0UoF1VlcaiZJ\n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\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x7f452210c590>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"import time\n",
"import numpy as np\n",
"from kernel_exp_family.examples.tools import visualise_fit_2d\n",
"import modshogun as sg\n",
"%matplotlib inline\n",
"\n",
"sigma = 3.\n",
"lmbda = 1.\n",
"D = 2\n",
"N = 2000\n",
"\n",
"X_row_major = np.random.randn(N, D)\n",
"X_col_major = X_row_major.T\n",
"x=X_col_major[0]\n",
"class test:\n",
" pass\n",
"a=test()\n",
"a.log_pdf = lambda x: 0\n",
"a.grad = lambda x: np.zeros(D)\n",
"\n",
"visualise_fit_2d(a, X_row_major)"
]
},
{
"cell_type": "code",
"execution_count": 16,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"200\n"
]
}
],
"source": [
"m = int(N*D/5)\n",
"m=N*D/20\n",
"print m"
]
},
{
"cell_type": "code",
"execution_count": 17,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"('time', 0.37149500846862793)\n"
]
},
{
"data": {
"image/png": "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\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x7f4521e94650>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"est = sg.KernelExpFamilyNystrom(X_col_major, sigma, lmbda, m)\n",
"start = time.time()\n",
"est.fit()\n",
"stop = time.time()\n",
"print(\"time\", stop-start)\n",
"visualise_fit_2d(est, np.zeros((0,D)))"
]
},
{
"cell_type": "code",
"execution_count": 13,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"('time', 22.24956488609314)\n"
]
},
{
"data": {
"image/png": "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\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x7f4521ed0e10>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"est = sg.KernelExpFamily(X_col_major, sigma, lmbda)\n",
"start = time.time()\n",
"est.fit()\n",
"stop = time.time()\n",
"print(\"time\", stop-start)\n",
"visualise_fit_2d(est, np.zeros((0,D)))"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": []
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 2",
"language": "python",
"name": "python2"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 2
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython2",
"version": "2.7.6"
}
},
"nbformat": 4,
"nbformat_minor": 0
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment