{ "cells": [ { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "# 便利機能色々\n", "- utils\n", "- feature_selection\n", "- preprocess" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ "下ごしらえ" ] }, { "cell_type": "code", "execution_count": 1, "metadata": { "collapsed": true }, "outputs": [], "source": [ "import pandas as pd\n", "import numpy as np" ] }, { "cell_type": "code", "execution_count": 2, "metadata": { "collapsed": false }, "outputs": [], "source": [ "from sklearn.datasets import load_breast_cancer\n", "breast=load_breast_cancer()\n", "data=breast.data\n", "target=breast.target\n", "feature_name=breast.feature_names" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "-" } }, "source": [ "dataをposiとnegaに分割しておく" ] }, { "cell_type": "code", "execution_count": 3, "metadata": { "collapsed": false }, "outputs": [], "source": [ "malignant=data[target==0]\n", "benign=data[target==1]" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "# 今回のお題" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "## 便利機能その1 utils\n", "- utils.reshape\n", "- utils.shuffle" ] }, { "cell_type": "code", "execution_count": 4, "metadata": { "collapsed": true }, "outputs": [], "source": [ "from sklearn import utils" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "breast_cancerのposiとnegaの比率を見てみると..." ] }, { "cell_type": "code", "execution_count": 5, "metadata": { "collapsed": false, "scrolled": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "malignant: 212\n", "benign: 357\n" ] } ], "source": [ "for i,j in enumerate(breast.target_names):\n", " print(\"{}: {}\".format(j,target[target==i].shape[0]))\n", "# 良性の患者がちょっと多め" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "posiとnegaからそれぞれresampleする" ] }, { "cell_type": "code", "execution_count": 6, "metadata": { "collapsed": false }, "outputs": [], "source": [ "malignant_resample=utils.resample(malignant,n_samples=200)\n", "benign_resample=utils.resample(benign,n_samples=200)" ] }, { "cell_type": "code", "execution_count": 7, "metadata": { "collapsed": false, "scrolled": true }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "(200, 30)\n", "(200, 30)\n" ] } ], "source": [ "print(benign_resample.shape)\n", "print(malignant_resample.shape)" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "使うときはresampleした結果をmergeする(列方向に結合)" ] }, { "cell_type": "code", "execution_count": 8, "metadata": { "collapsed": false }, "outputs": [], "source": [ "# np.r_で列方向に結合できる。\n", "data_resample=np.r_[malignant_resample,benign_resample]\n", "target_resample=np.r_[[0 for i in range(200)],[1 for i in range(200)]]" ] }, { "cell_type": "code", "execution_count": 9, "metadata": { "collapsed": false, "scrolled": true }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "(400, 30)\n", "(400,)\n" ] } ], "source": [ "print(data_resample.shape)\n", "print(target_resample.shape)" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "utils.shuffleの使い方" ] }, { "cell_type": "code", "execution_count": 10, "metadata": { "collapsed": true }, "outputs": [], "source": [ "data_shuffle, target_shuffle = utils.shuffle(data_resample, target_resample)" ] }, { "cell_type": "code", "execution_count": 11, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "array([0, 1, 0, 0, 1, 0, 0, 1, 1, 0])" ] }, "execution_count": 11, "metadata": {}, "output_type": "execute_result" } ], "source": [ "target_shuffle[0:10]" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "-" } }, "source": [ "関数を一個にまとめておかないとseedが変わってしまい、バラバラになってしまうので注意。" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "## 便利機能その2\n", "- feature_selection.SelectKBest\n", "- feature_selection.SelectFromMedel" ] }, { "cell_type": "code", "execution_count": 12, "metadata": { "collapsed": true, "slideshow": { "slide_type": "slide" } }, "outputs": [], "source": [ "from sklearn import feature_selection as fs" ] }, { "cell_type": "code", "execution_count": 13, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/html": [ "
\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
012
01001.0153.402019.0
11326.074.081956.0
21203.094.031709.0
3386.127.23567.7
41297.094.441575.0
\n", "
" ], "text/plain": [ " 0 1 2\n", "0 1001.0 153.40 2019.0\n", "1 1326.0 74.08 1956.0\n", "2 1203.0 94.03 1709.0\n", "3 386.1 27.23 567.7\n", "4 1297.0 94.44 1575.0" ] }, "execution_count": 13, "metadata": {}, "output_type": "execute_result" } ], "source": [ "selector=fs.SelectKBest(fs.chi2,k=3)\n", "selector.fit(data,target)\n", "pd.DataFrame(selector.transform(data)).head()" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ "ざっくりというと、単変量解析して重要な特徴量を抽出する。 \n", "(厳密には違うらしい) \n", "特徴量のスコアリングは下記が使える\n", "- 回帰: f_regression, mutual_info_regression\n", "- 分類: chi2, f_classif, mutual_info_classif" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ "scores_に各特徴量のスコアも入っている。 \n", "でも特徴量名をとってくるのはちょいと面倒。" ] }, { "cell_type": "code", "execution_count": 14, "metadata": { "collapsed": false, "scrolled": true }, "outputs": [ { "data": { "text/html": [ "
\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
0123456789...20212223242526272829
0266.10491793.8975082011.10286453991.6559240.1498995.40307519.71235410.5440350.257380.000074...491.689157174.44943665.035416112598.4315640.39736619.31492239.51691513.4854191.2988610.231522
\n", "

1 rows × 30 columns

\n", "
" ], "text/plain": [ " 0 1 2 3 4 5 \\\n", "0 266.104917 93.897508 2011.102864 53991.655924 0.149899 5.403075 \n", "\n", " 6 7 8 9 ... 20 21 \\\n", "0 19.712354 10.544035 0.25738 0.000074 ... 491.689157 174.4494 \n", "\n", " 22 23 24 25 26 27 \\\n", "0 3665.035416 112598.431564 0.397366 19.314922 39.516915 13.485419 \n", "\n", " 28 29 \n", "0 1.298861 0.231522 \n", "\n", "[1 rows x 30 columns]" ] }, "execution_count": 14, "metadata": {}, "output_type": "execute_result" } ], "source": [ "pd.DataFrame(selector.scores_).T" ] }, { "cell_type": "code", "execution_count": 15, "metadata": { "collapsed": false, "scrolled": true }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "3665.03541634\n" ] }, { "data": { "text/plain": [ "array(['mean area', 'area error', 'worst area'], \n", " dtype='threshhold]" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "SelectPercentileは、同様にしてK%の特徴量を選択する。" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "SelectFromModelを使うと、あるモデルで重要だった特徴量のみを抽出できる。" ] }, { "cell_type": "code", "execution_count": 16, "metadata": { "collapsed": false }, "outputs": [], "source": [ "from sklearn.linear_model import ElasticNet\n", "en=ElasticNet().fit(data,target)" ] }, { "cell_type": "code", "execution_count": 17, "metadata": { "collapsed": false, "scrolled": true }, "outputs": [ { "data": { "text/html": [ "
\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
01
017.33184.60
123.41158.80
225.53152.50
326.5098.87
416.67152.20
\n", "
" ], "text/plain": [ " 0 1\n", "0 17.33 184.60\n", "1 23.41 158.80\n", "2 25.53 152.50\n", "3 26.50 98.87\n", "4 16.67 152.20" ] }, "execution_count": 17, "metadata": {}, "output_type": "execute_result" } ], "source": [ "selector_en=fs.SelectFromModel(en, prefit=True,threshold=\"mean\")\n", "pd.DataFrame(selector_en.transform(data)).head()" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "特徴量名を取ってきたいならこんな感じ。" ] }, { "cell_type": "code", "execution_count": 18, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "array(['worst texture', 'worst perimeter'], \n", " dtype='selector_en.threshold_]" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "これ以上はドキュメントを参照。 \n", "RFE(recursive feature elimination)などもある。 \n", "http://scikit-learn.org/dev/modules/feature_selection.html" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "# 便利機能その3 joblib.dump/load\n", "externalsはsklearn以外のライブラリでjoblibとsixが使える。 \n", "joblib自体が便利。 \n", "http://postd.cc/my-top-5-new-python-modules-of-2015/ \n", "http://blog.kzfmix.com/entry/1460182592 " ] }, { "cell_type": "code", "execution_count": 19, "metadata": { "collapsed": true, "slideshow": { "slide_type": "slide" } }, "outputs": [], "source": [ "from sklearn.externals import joblib" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "joblibのdumpとloadは、pickleよりも効率的に永続化できるらしいので、sklearnではモデルのsave/loadはこれを使う。" ] }, { "cell_type": "code", "execution_count": 20, "metadata": { "collapsed": false }, "outputs": [], "source": [ "joblib.dump(selector, 'selector.pkl', compress=True) \n", "selector_2 = joblib.load('selector.pkl')" ] }, { "cell_type": "code", "execution_count": 21, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "SelectKBest(k=3, score_func=)" ] }, "execution_count": 21, "metadata": {}, "output_type": "execute_result" } ], "source": [ "selector_2" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "# 便利機能その4 preprocessing" ] }, { "cell_type": "code", "execution_count": 22, "metadata": { "collapsed": true }, "outputs": [], "source": [ "from sklearn import preprocessing" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "preprocessもきりがないので、簡単なのだけ。 \n", "preprocessはfitとtransformを一緒にやることがほとんどなので、fit_transformというメソッドがある。" ] }, { "cell_type": "code", "execution_count": 23, "metadata": { "collapsed": true }, "outputs": [], "source": [ "# mean=0, std=1にスケーリング\n", "data_st=preprocessing.StandardScaler().fit_transform(data)" ] }, { "cell_type": "code", "execution_count": 24, "metadata": { "collapsed": false, "scrolled": false, "slideshow": { "slide_type": "subslide" } }, "outputs": [ { "data": { "image/png": "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\nubbUbjOTyQSTyYSvv/4aqampePvtt5GUlORy/GpJSS11UPvJqZK+yNWIWu5uP0CqGfgAAAJ2SURB\nVC0+FVYSU25c6xlTbszqGVNuXOsZ0/7bCDU1NQAg1E9nROeexsZG2/O++uorjBgxwmkckZpRu+8Q\niels//f4449rEtOeqzlPST9F4unZR6Vzp5bvpdI5Vmk/RXLp7eNKNKaafvrKuBKZ4/TspzvHgiL1\nQ0SuaXPVNSdyc3OxePFi7N69G8OGDcOaNWsAWM/7W758OYqLi+Hv74/ly5cjJycHkiRh2rRpiImJ\nAQB89NFHaG9vR2pqKvz9/fHyyy8jJiYGn332GQwGA55//nkkJCTg0KFDmDRpEvr164eCggIAcNru\nqFGjOsVR0lZTUxMWLFgAg8GA9vZ2pKend9lWU1MTjEYjWlpa4Ofnh9LSUuzfvx9BQUFu5yXXlsVi\n6ZRXfHy80+1p396GDRtw/fp1rFy5EpIkISAgALt27VK1zeTaUrPNDhw4gPLycgQGBqJPnz628aIm\nL7m2nOWlZJvJcTV+u7uWAOC1117D0aNH0dzcjGeeeQYLFy6E0WhUFEOuL0pqRC0lMV3Vkl4x5ca1\nnv2UG7N6xtSa0n5u374dAQEB6Nu3L4qKijTPQ3TuWb16Nc6dOwc/Pz8MGzYM7777rur+ujNHKdl3\niMR0tv+bOHGiJjHdmfO66qdIPGfzolZ9dGfu1Oq9dGeOVdJPkVx6+7gSjalmbPnKuBKZ4/TspzvH\ngiL1Q0SuGSRPn0RKRERERERERF5Ft9MoiIiIiIiIiMg3cbGBiIiIiIiIiDTFxQYiIiIiIiIi0hQX\nG4iIiIiIiIhIU1xsICIiIiIiIiJNcbGBiIiIiIiIiDTFxQYiIiIiIiIi0hQXG4iIiIiIiIhIU/8P\neshsOSL/xJMAAAAASUVORK5CYII=\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "plt.figure(figsize=(18, 6))\n", "for i in range(0,9):\n", " plt.subplot(251+i)\n", " plt.scatter(data[:,i],data_st[:,i])" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "標準正規分布にスケーリング" ] }, { "cell_type": "code", "execution_count": 25, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/html": [ "
\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
0123456789...20212223242526272829
01.097064-2.0733351.2699340.9843751.5684663.2835152.6528742.5324752.2175152.255747...1.886690-1.3592932.3036012.0012371.3076862.6166652.1095262.2960762.7506221.937015
11.829821-0.3536321.6859551.908708-0.826962-0.487072-0.0238460.5481440.001392-0.868652...1.805927-0.3692031.5351261.890489-0.375612-0.430444-0.1467491.087084-0.2438900.281190
21.5798880.4561871.5665031.5588840.9422101.0529261.3634782.0372310.939685-0.398008...1.511870-0.0239741.3474751.4562850.5274071.0829320.8549741.9550001.1522550.201391
3-0.7689090.253732-0.592687-0.7644643.2835533.4029091.9158971.4517072.8673834.910919...-0.2814640.133984-0.249939-0.5500213.3942753.8933971.9895882.1757866.0460414.935010
41.750297-1.1518161.7765731.8262290.2803720.5393401.3710111.428493-0.009560-0.562450...1.298575-1.4667701.3385391.2207240.220556-0.3133950.6131790.729259-0.868353-0.397100
\n", "

5 rows × 30 columns

\n", "
" ], "text/plain": [ " 0 1 2 3 4 5 6 \\\n", "0 1.097064 -2.073335 1.269934 0.984375 1.568466 3.283515 2.652874 \n", "1 1.829821 -0.353632 1.685955 1.908708 -0.826962 -0.487072 -0.023846 \n", "2 1.579888 0.456187 1.566503 1.558884 0.942210 1.052926 1.363478 \n", "3 -0.768909 0.253732 -0.592687 -0.764464 3.283553 3.402909 1.915897 \n", "4 1.750297 -1.151816 1.776573 1.826229 0.280372 0.539340 1.371011 \n", "\n", " 7 8 9 ... 20 21 22 \\\n", "0 2.532475 2.217515 2.255747 ... 1.886690 -1.359293 2.303601 \n", "1 0.548144 0.001392 -0.868652 ... 1.805927 -0.369203 1.535126 \n", "2 2.037231 0.939685 -0.398008 ... 1.511870 -0.023974 1.347475 \n", "3 1.451707 2.867383 4.910919 ... -0.281464 0.133984 -0.249939 \n", "4 1.428493 -0.009560 -0.562450 ... 1.298575 -1.466770 1.338539 \n", "\n", " 23 24 25 26 27 28 29 \n", "0 2.001237 1.307686 2.616665 2.109526 2.296076 2.750622 1.937015 \n", "1 1.890489 -0.375612 -0.430444 -0.146749 1.087084 -0.243890 0.281190 \n", "2 1.456285 0.527407 1.082932 0.854974 1.955000 1.152255 0.201391 \n", "3 -0.550021 3.394275 3.893397 1.989588 2.175786 6.046041 4.935010 \n", "4 1.220724 0.220556 -0.313395 0.613179 0.729259 -0.868353 -0.397100 \n", "\n", "[5 rows x 30 columns]" ] }, "execution_count": 25, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# これだけ問答無用で変換されてしまう\n", "pd.DataFrame(preprocessing.scale(data)).head()" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "ベクトルのノルムを正規化" ] }, { "cell_type": "code", "execution_count": 26, "metadata": { "collapsed": false, "scrolled": true }, "outputs": [ { "data": { "text/html": [ "
\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
0123456789...20212223242526272829
00.0050450.0029110.0344350.2806930.0000330.0000780.0000840.0000410.0000680.000022...0.0071170.0048600.0517640.5661520.0000450.0001870.0002000.0000740.0001290.000033
10.0054990.0047500.0355260.3544580.0000230.0000210.0000230.0000190.0000480.000015...0.0066800.0062580.0424490.5228660.0000330.0000500.0000650.0000500.0000740.000024
20.0058130.0062730.0383780.3551400.0000320.0000470.0000580.0000380.0000610.000018...0.0069580.0075370.0450200.5045180.0000430.0001250.0001330.0000720.0001070.000026
30.0092100.0164350.0625640.3113710.0001150.0002290.0001950.0000850.0002090.000079...0.0120240.0213710.0797340.4578220.0001690.0006990.0005540.0002080.0005350.000140
40.0060810.0042980.0404890.3887090.0000300.0000400.0000590.0000310.0000540.000018...0.0067550.0049960.0456140.4720250.0000410.0000610.0001200.0000490.0000710.000023
\n", "

5 rows × 30 columns

\n", "
" ], "text/plain": [ " 0 1 2 3 4 5 6 \\\n", "0 0.005045 0.002911 0.034435 0.280693 0.000033 0.000078 0.000084 \n", "1 0.005499 0.004750 0.035526 0.354458 0.000023 0.000021 0.000023 \n", "2 0.005813 0.006273 0.038378 0.355140 0.000032 0.000047 0.000058 \n", "3 0.009210 0.016435 0.062564 0.311371 0.000115 0.000229 0.000195 \n", "4 0.006081 0.004298 0.040489 0.388709 0.000030 0.000040 0.000059 \n", "\n", " 7 8 9 ... 20 21 22 \\\n", "0 0.000041 0.000068 0.000022 ... 0.007117 0.004860 0.051764 \n", "1 0.000019 0.000048 0.000015 ... 0.006680 0.006258 0.042449 \n", "2 0.000038 0.000061 0.000018 ... 0.006958 0.007537 0.045020 \n", "3 0.000085 0.000209 0.000079 ... 0.012024 0.021371 0.079734 \n", "4 0.000031 0.000054 0.000018 ... 0.006755 0.004996 0.045614 \n", "\n", " 23 24 25 26 27 28 29 \n", "0 0.566152 0.000045 0.000187 0.000200 0.000074 0.000129 0.000033 \n", "1 0.522866 0.000033 0.000050 0.000065 0.000050 0.000074 0.000024 \n", "2 0.504518 0.000043 0.000125 0.000133 0.000072 0.000107 0.000026 \n", "3 0.457822 0.000169 0.000699 0.000554 0.000208 0.000535 0.000140 \n", "4 0.472025 0.000041 0.000061 0.000120 0.000049 0.000071 0.000023 \n", "\n", "[5 rows x 30 columns]" ] }, "execution_count": 26, "metadata": {}, "output_type": "execute_result" } ], "source": [ "pd.DataFrame(preprocessing.Normalizer(norm=\"l1\").fit_transform(data)).head()" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "# おしまい\n", "@y__sama" ] } ], "metadata": { "celltoolbar": "Slideshow", "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.5.1" } }, "nbformat": 4, "nbformat_minor": 0 }