Skip to content

Instantly share code, notes, and snippets.

@spolakh
Created April 8, 2015 19:59
Show Gist options
  • Save spolakh/b498ea6fed4d28045935 to your computer and use it in GitHub Desktop.
Save spolakh/b498ea6fed4d28045935 to your computer and use it in GitHub Desktop.
{"nbformat_minor": 0, "cells": [{"execution_count": 1, "cell_type": "code", "source": "import numpy\nimport pandas\n\ndef generate_classification_sample(n_samples, n_features, distance=2.0, n_classes=2):\n \"\"\"Generates some test distribution,\n distributions are gaussian with centers at (x, x, x, ... x), where x = class_id * distance\n \"\"\"\n from sklearn.datasets import make_blobs\n\n centers = numpy.zeros((n_classes, n_features))\n centers += numpy.arange(n_classes)[:, numpy.newaxis] * distance\n\n X, y = make_blobs(n_samples=n_samples, n_features=n_features, centers=centers)\n columns = [\"column\" + str(x) for x in range(n_features)]\n X = pandas.DataFrame(X, columns=columns)\n return X, y\n\ndef generate_classification_data(n_classes=2):\n \"\"\" Generates random number of samples and features. \"\"\"\n n_samples = 1000 + numpy.random.poisson(1000)\n n_features = numpy.random.randint(10, 16)\n sample_weight = numpy.ones(n_samples, dtype=float)\n X, y = generate_classification_sample(n_features=n_features, n_samples=n_samples, n_classes=n_classes)\n return X, y, sample_weight", "outputs": [], "metadata": {"collapsed": true, "trusted": true}}, {"execution_count": 2, "cell_type": "code", "source": "X, y, _ = generate_classification_data()", "outputs": [], "metadata": {"collapsed": false, "trusted": true}}, {"execution_count": 3, "cell_type": "code", "source": "import neurolab as nl\nnet = nl.net.newff([[0, 1]] * X.shape[1], [2], transf=[nl.trans.SoftMax()])", "outputs": [], "metadata": {"collapsed": true, "trusted": true}}, {"execution_count": 4, "cell_type": "code", "source": "y_net = numpy.zeros([len(y), 2])\ny_net[numpy.arange(len(y)), y] = 1", "outputs": [], "metadata": {"collapsed": false, "trusted": true}}, {"execution_count": 5, "cell_type": "code", "source": "from sklearn.preprocessing import StandardScaler\nfrom scipy.special import expit\nscaler = StandardScaler()\ndef convert_input(X, fit=True):\n if fit:\n scaler.fit(X)\n return expit(scaler.transform(X) / 3)", "outputs": [], "metadata": {"collapsed": true, "trusted": true}}, {"execution_count": 6, "cell_type": "code", "source": "X_net = convert_input(X)", "outputs": [], "metadata": {"collapsed": false, "trusted": true}}, {"execution_count": 7, "cell_type": "code", "source": "error = net.train(X_net, y_net, epochs=100, show=1)", "outputs": [{"output_type": "stream", "name": "stdout", "text": "Epoch: 1; Error: 440.589233724;\nEpoch: 2; Error: 243.860265649;\nEpoch: 3; Error: 65.0653486984;\nEpoch: 4; Error: 37.2183184144;\nEpoch: 5; Error: 18.4159566969;\nEpoch: 6; Error: 10.0064954173;\nEpoch: 7; Error: 5.38152623357;\nEpoch: 8; Error: 2.95610172583;\nEpoch: 9; Error: 1.63313000782;\nEpoch: 10; Error: 0.911420960149;\nEpoch: 11; Error: 0.512767415223;\nEpoch: 12; Error: 0.290996767665;\nEpoch: 13; Error: 0.166393257129;\nEpoch: 14; Error: 0.0956630848265;\nEpoch: 15; Error: 0.0550670764454;\nEpoch: 16; Error: 0.0315409268216;\nEpoch: 17; Error: 0.017837520458;\nEpoch: 18; Error: 0.00988592812;\nThe goal of learning is reached\n"}], "metadata": {"collapsed": false, "trusted": true}}, {"execution_count": 9, "cell_type": "code", "source": "y[:5]", "outputs": [{"execution_count": 9, "output_type": "execute_result", "data": {"text/plain": "array([1, 1, 0, 1, 1])"}, "metadata": {}}], "metadata": {"collapsed": false, "trusted": true}}, {"execution_count": 10, "cell_type": "code", "source": "p = net.sim(convert_input(X, fit=False))\np[:5]", "outputs": [{"execution_count": 10, "output_type": "execute_result", "data": {"text/plain": "array([[ 9.76822844e-01, 2.31771558e-02],\n [ 2.12554331e-01, 7.87445669e-01],\n [ 9.99999997e-01, 3.05028648e-09],\n [ 6.64320984e-01, 3.35679016e-01],\n [ 9.93399830e-01, 6.60016977e-03]])"}, "metadata": {}}], "metadata": {"collapsed": false, "trusted": true}}, {"execution_count": 12, "cell_type": "code", "source": "from sklearn.metrics import roc_auc_score, accuracy_score\nroc_auc_score(y, p[:, 1])", "outputs": [{"execution_count": 12, "output_type": "execute_result", "data": {"text/plain": "1.0"}, "metadata": {}}], "metadata": {"collapsed": false, "trusted": true}}, {"execution_count": 13, "cell_type": "code", "source": "accuracy_score(y, numpy.argmax(p, axis=1))", "outputs": [{"execution_count": 13, "output_type": "execute_result", "data": {"text/plain": "0.5270886075949367"}, "metadata": {}}], "metadata": {"collapsed": false, "trusted": true}}, {"execution_count": null, "cell_type": "code", "source": "", "outputs": [], "metadata": {"collapsed": true, "trusted": true}}], "nbformat": 4, "metadata": {"kernelspec": {"display_name": "Python 2", "name": "python2", "language": "python"}, "language_info": {"mimetype": "text/x-python", "nbconvert_exporter": "python", "version": "2.7.6", "name": "python", "file_extension": ".py", "pygments_lexer": "ipython2", "codemirror_mode": {"version": 2, "name": "ipython"}}}}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment