pipenv環境でのpyside2。pipfileの記録。

※python2を使うことは今後ないと思うので、pyenvは不要。

.zprofileの内容

export PIPENV_VENV_IN_PROJECT=TRUE

# Setting PATH for Python 3.8
# The original version is saved in .zprofile.pysave
PATH="/Library/Frameworks/Python.framework/Versions/3.8/bin:${PATH}"
export PATH

pipenv環境を作る目的ディレクトリ下にて

pipenv --python 3.8.2
pipenv shell
pipenv install pandas
pipenv install pyside2
pipenv install numpy
pipenv install matplotlib
pipenv install opencv-python && pipenv install pillow
pipenv install git+https://github.com/pyqtgraph/pyqtgraph.git@develop#egg=pyqtgraph

pipfileの内容

[[source]]
name = "pypi"
url = "https://pypi.org/simple"
verify_ssl = true

[dev-packages]

[packages]
pandas = "*"
pyside2 = "*"
numpy = "*"
matplotlib = "*"
opencv-python = "*"
pillow = "*"
pyqtgraph = {git = "https://github.com/pyqtgraph/pyqtgraph.git",ref = "develop"}

[requires]
python_version = "3.8" 

pipfile.lockの内容

{
    "_meta": {
        "hash": {
            "sha256": "44f31aa29ee23503a0edb07203e44d6c9010e878dacb6a2d500e7ed472a1fceb"
        },
        "pipfile-spec": 6,
        "requires": {
            "python_version": "3.8"
        },
        "sources": [
            {
                "name": "pypi",
                "url": "https://pypi.org/simple",
                "verify_ssl": true
            }
        ]
    },
    "default": {
        "cycler": {
            "hashes": [
                "sha256:1d8a5ae1ff6c5cf9b93e8811e581232ad8920aeec647c37316ceac982b08cb2d",
                "sha256:cd7b2d1018258d7247a71425e9f26463dfb444d411c39569972f4ce586b0c9d8"
            ],
            "version": "==0.10.0"
        },
        "kiwisolver": {
            "hashes": [
                "sha256:03662cbd3e6729f341a97dd2690b271e51a67a68322affab12a5b011344b973c",
                "sha256:18d749f3e56c0480dccd1714230da0f328e6e4accf188dd4e6884bdd06bf02dd",
                "sha256:247800260cd38160c362d211dcaf4ed0f7816afb5efe56544748b21d6ad6d17f",
                "sha256:443c2320520eda0a5b930b2725b26f6175ca4453c61f739fef7a5847bd262f74",
                "sha256:4eadb361baf3069f278b055e3bb53fa189cea2fd02cb2c353b7a99ebb4477ef1",
                "sha256:556da0a5f60f6486ec4969abbc1dd83cf9b5c2deadc8288508e55c0f5f87d29c",
                "sha256:603162139684ee56bcd57acc74035fceed7dd8d732f38c0959c8bd157f913fec",
                "sha256:60a78858580761fe611d22127868f3dc9f98871e6fdf0a15cc4203ed9ba6179b",
                "sha256:7cc095a4661bdd8a5742aaf7c10ea9fac142d76ff1770a0f84394038126d8fc7",
                "sha256:c31bc3c8e903d60a1ea31a754c72559398d91b5929fcb329b1c3a3d3f6e72113",
                "sha256:c955791d80e464da3b471ab41eb65cf5a40c15ce9b001fdc5bbc241170de58ec",
                "sha256:d069ef4b20b1e6b19f790d00097a5d5d2c50871b66d10075dab78938dc2ee2cf",
                "sha256:d52b989dc23cdaa92582ceb4af8d5bcc94d74b2c3e64cd6785558ec6a879793e",
                "sha256:e586b28354d7b6584d8973656a7954b1c69c93f708c0c07b77884f91640b7657",
                "sha256:efcf3397ae1e3c3a4a0a0636542bcad5adad3b1dd3e8e629d0b6e201347176c8",
                "sha256:fccefc0d36a38c57b7bd233a9b485e2f1eb71903ca7ad7adacad6c28a56d62d2"
            ],
            "version": "==1.2.0"
        },
        "matplotlib": {
            "hashes": [
                "sha256:2466d4dddeb0f5666fd1e6736cc5287a4f9f7ae6c1a9e0779deff798b28e1d35",
                "sha256:282b3fc8023c4365bad924d1bb442ddc565c2d1635f210b700722776da466ca3",
                "sha256:4bb50ee4755271a2017b070984bcb788d483a8ce3132fab68393d1555b62d4ba",
                "sha256:56d3147714da5c7ac4bc452d041e70e0e0b07c763f604110bd4e2527f320b86d",
                "sha256:7a9baefad265907c6f0b037c8c35a10cf437f7708c27415a5513cf09ac6d6ddd",
                "sha256:aae7d107dc37b4bb72dcc45f70394e6df2e5e92ac4079761aacd0e2ad1d3b1f7",
                "sha256:af14e77829c5b5d5be11858d042d6f2459878f8e296228c7ea13ec1fd308eb68",
                "sha256:c1cf735970b7cd424502719b44288b21089863aaaab099f55e0283a721aaf781",
                "sha256:ce378047902b7a05546b6485b14df77b2ff207a0054e60c10b5680132090c8ee",
                "sha256:d35891a86a4388b6965c2d527b9a9f9e657d9e110b0575ca8a24ba0d4e34b8fc",
                "sha256:e06304686209331f99640642dee08781a9d55c6e32abb45ed54f021f46ccae47",
                "sha256:e20ba7fb37d4647ac38f3c6d8672dd8b62451ee16173a0711b37ba0ce42bf37d",
                "sha256:f4412241e32d0f8d3713b68d3ca6430190a5e8a7c070f1c07d7833d8c5264398",
                "sha256:ffe2f9cdcea1086fc414e82f42271ecf1976700b8edd16ca9d376189c6d93aee"
            ],
            "index": "pypi",
            "version": "==3.2.1"
        },
        "numpy": {
            "hashes": [
                "sha256:1598a6de323508cfeed6b7cd6c4efb43324f4692e20d1f76e1feec7f59013448",
                "sha256:1b0ece94018ae21163d1f651b527156e1f03943b986188dd81bc7e066eae9d1c",
                "sha256:2e40be731ad618cb4974d5ba60d373cdf4f1b8dcbf1dcf4d9dff5e212baf69c5",
                "sha256:4ba59db1fcc27ea31368af524dcf874d9277f21fd2e1f7f1e2e0c75ee61419ed",
                "sha256:59ca9c6592da581a03d42cc4e270732552243dc45e87248aa8d636d53812f6a5",
                "sha256:5e0feb76849ca3e83dd396254e47c7dba65b3fa9ed3df67c2556293ae3e16de3",
                "sha256:6d205249a0293e62bbb3898c4c2e1ff8a22f98375a34775a259a0523111a8f6c",
                "sha256:6fcc5a3990e269f86d388f165a089259893851437b904f422d301cdce4ff25c8",
                "sha256:82847f2765835c8e5308f136bc34018d09b49037ec23ecc42b246424c767056b",
                "sha256:87902e5c03355335fc5992a74ba0247a70d937f326d852fc613b7f53516c0963",
                "sha256:9ab21d1cb156a620d3999dd92f7d1c86824c622873841d6b080ca5495fa10fef",
                "sha256:a1baa1dc8ecd88fb2d2a651671a84b9938461e8a8eed13e2f0a812a94084d1fa",
                "sha256:a244f7af80dacf21054386539699ce29bcc64796ed9850c99a34b41305630286",
                "sha256:a35af656a7ba1d3decdd4fae5322b87277de8ac98b7d9da657d9e212ece76a61",
                "sha256:b1fe1a6f3a6f355f6c29789b5927f8bd4f134a4bd9a781099a7c4f66af8850f5",
                "sha256:b5ad0adb51b2dee7d0ee75a69e9871e2ddfb061c73ea8bc439376298141f77f5",
                "sha256:ba3c7a2814ec8a176bb71f91478293d633c08582119e713a0c5351c0f77698da",
                "sha256:cd77d58fb2acf57c1d1ee2835567cd70e6f1835e32090538f17f8a3a99e5e34b",
                "sha256:cdb3a70285e8220875e4d2bc394e49b4988bdb1298ffa4e0bd81b2f613be397c",
                "sha256:deb529c40c3f1e38d53d5ae6cd077c21f1d49e13afc7936f7f868455e16b64a0",
                "sha256:e7894793e6e8540dbeac77c87b489e331947813511108ae097f1715c018b8f3d"
            ],
            "index": "pypi",
            "version": "==1.18.2"
        },
        "opencv-python": {
            "hashes": [
                "sha256:068928b9907b3d3acd53b129062557d6b0b8b324bfade77f028dbe4dfe482bf2",
                "sha256:0e7c91718351449877c2d4141abd64eee1f9c8701bcfaf4e8627bd023e303368",
                "sha256:1ab92d807427641ec45d28d5907426aa06b4ffd19c5b794729c74d91cd95090e",
                "sha256:31d634dea1b47c231b88d384f90605c598214d0c596443c9bb808e11761829f5",
                "sha256:5fdfc0bed37315f27d30ae5ae9bad47ec0a0a28c323739d39c8177b7e0929238",
                "sha256:6fa8fac14dd5af4819d475f74af12d65fbbfa391d3110c3a972934a5e6507c24",
                "sha256:78cc89ebc808886eb190626ee71ab65e47f374121975f86e4d5f7c0e3ce6bed9",
                "sha256:7c7ba11720d01cb572b4b6945d115cb103462c0a28996b44d4e540d06e6a90fd",
                "sha256:a37ee82f1b8ed4b4645619c504311e71ce845b78f40055e78d71add5fab7da82",
                "sha256:aa3ca1f54054e1c6439fdf1edafa2a2b940a9eaac04a7b422a1cba9b2d7b9690",
                "sha256:b9de3dd956574662712da8e285f0f54327959a4e95b96a2847d3c3f5ee7b96e2",
                "sha256:c0087b428cef9a32d977390656d91b02245e0e91f909870492df7e39202645dd",
                "sha256:d87e506ab205799727f0efa34b3888949bf029a3ada5eb000ff632606370ca6e",
                "sha256:d8a55585631f9c9eca4b1a996e9732ae023169cf2f46f69e4518d67d96198226",
                "sha256:dcb8da8c5ebaa6360c8555547a4c7beb6cd983dd95ba895bb78b86cc8cf3de2b",
                "sha256:e2206bb8c17c0f212f1f356d82d72dd090ff4651994034416da9bf0c29732825",
                "sha256:e3c57d6579e5bf85f564d6d48d8ee89868b92879a9232b9975d072c346625e92",
                "sha256:ef89cbf332b9a735d8a82e9ff79cc743eeeb775ad1cd7100bc2aa2429b496f07",
                "sha256:f45c1c3cdda1857bedd4dfe0bbd49c9419af0cc57f33490341edeae97d18f037",
                "sha256:fb3c855347310788e4286b867997be354c55535597966ed5dac876d9166013a4"
            ],
            "index": "pypi",
            "version": "==4.2.0.34"
        },
        "pandas": {
            "hashes": [
                "sha256:07c1b58936b80eafdfe694ce964ac21567b80a48d972879a359b3ebb2ea76835",
                "sha256:0ebe327fb088df4d06145227a4aa0998e4f80a9e6aed4b61c1f303bdfdf7c722",
                "sha256:11c7cb654cd3a0e9c54d81761b5920cdc86b373510d829461d8f2ed6d5905266",
                "sha256:12f492dd840e9db1688126216706aa2d1fcd3f4df68a195f9479272d50054645",
                "sha256:167a1315367cea6ec6a5e11e791d9604f8e03f95b57ad227409de35cf850c9c5",
                "sha256:1a7c56f1df8d5ad8571fa251b864231f26b47b59cbe41aa5c0983d17dbb7a8e4",
                "sha256:1fa4bae1a6784aa550a1c9e168422798104a85bf9c77a1063ea77ee6f8452e3a",
                "sha256:32f42e322fb903d0e189a4c10b75ba70d90958cc4f66a1781ed027f1a1d14586",
                "sha256:387dc7b3c0424327fe3218f81e05fc27832772a5dffbed385013161be58df90b",
                "sha256:6597df07ea361231e60c00692d8a8099b519ed741c04e65821e632bc9ccb924c",
                "sha256:743bba36e99d4440403beb45a6f4f3a667c090c00394c176092b0b910666189b",
                "sha256:858a0d890d957ae62338624e4aeaf1de436dba2c2c0772570a686eaca8b4fc85",
                "sha256:863c3e4b7ae550749a0bb77fa22e601a36df9d2905afef34a6965bed092ba9e5",
                "sha256:a210c91a02ec5ff05617a298ad6f137b9f6f5771bf31f2d6b6367d7f71486639",
                "sha256:ca84a44cf727f211752e91eab2d1c6c1ab0f0540d5636a8382a3af428542826e",
                "sha256:d234bcf669e8b4d6cbcd99e3ce7a8918414520aeb113e2a81aeb02d0a533d7f7"
            ],
            "index": "pypi",
            "version": "==1.0.3"
        },
        "pillow": {
            "hashes": [
                "sha256:04a10558320eba9137d6a78ca6fc8f4a5801f1b971152938851dc4629d903579",
                "sha256:0f89ddc77cf421b8cd34ae852309501458942bf370831b4a9b406156b599a14e",
                "sha256:251e5618125ec12ac800265d7048f5857a8f8f1979db9ea3e11382e159d17f68",
                "sha256:291bad7097b06d648222b769bbfcd61e40d0abdfe10df686d20ede36eb8162b6",
                "sha256:2f0b52a08d175f10c8ea36685115681a484c55d24d0933f9fd911e4111c04144",
                "sha256:3713386d1e9e79cea1c5e6aaac042841d7eef838cc577a3ca153c8bedf570287",
                "sha256:433bbc2469a2351bea53666d97bb1eb30f0d56461735be02ea6b27654569f80f",
                "sha256:4510c6b33277970b1af83c987277f9a08ec2b02cc20ac0f9234e4026136bb137",
                "sha256:50a10b048f4dd81c092adad99fa5f7ba941edaf2f9590510109ac2a15e706695",
                "sha256:670e58d3643971f4afd79191abd21623761c2ebe61db1c2cb4797d817c4ba1a7",
                "sha256:6c1924ed7dbc6ad0636907693bbbdd3fdae1d73072963e71f5644b864bb10b4d",
                "sha256:721c04d3c77c38086f1f95d1cd8df87f2f9a505a780acf8575912b3206479da1",
                "sha256:8d5799243050c2833c2662b824dfb16aa98e408d2092805edea4300a408490e7",
                "sha256:90cd441a1638ae176eab4d8b6b94ab4ec24b212ed4c3fbee2a6e74672481d4f8",
                "sha256:a5dc9f28c0239ec2742d4273bd85b2aa84655be2564db7ad1eb8f64b1efcdc4c",
                "sha256:b2f3e8cc52ecd259b94ca880fea0d15f4ebc6da2cd3db515389bb878d800270f",
                "sha256:b7453750cf911785009423789d2e4e5393aae9cbb8b3f471dab854b85a26cb89",
                "sha256:b99b2607b6cd58396f363b448cbe71d3c35e28f03e442ab00806463439629c2c",
                "sha256:cd47793f7bc9285a88c2b5551d3f16a2ddd005789614a34c5f4a598c2a162383",
                "sha256:d6bf085f6f9ec6a1724c187083b37b58a8048f86036d42d21802ed5d1fae4853",
                "sha256:da737ab273f4d60ae552f82ad83f7cbd0e173ca30ca20b160f708c92742ee212",
                "sha256:eb84e7e5b07ff3725ab05977ac56d5eeb0c510795aeb48e8b691491be3c5745b"
            ],
            "index": "pypi",
            "version": "==7.1.1"
        },
        "pyparsing": {
            "hashes": [
                "sha256:c203ec8783bf771a155b207279b9bccb8dea02d8f0c9e5f8ead507bc3246ecc1",
                "sha256:ef9d7589ef3c200abe66653d3f1ab1033c3c419ae9b9bdb1240a85b024efc88b"
            ],
            "version": "==2.4.7"
        },
        "pyqtgraph": {
            "git": "https://github.com/pyqtgraph/pyqtgraph.git",
            "ref": "a2053b13d0234e210561a73fa044625fd972e910"
        },
        "pyside2": {
            "hashes": [
                "sha256:307e58c1f327c9215d276fc7d312b3c537c72446af06230b4f130c2cc6980735",
                "sha256:692fc35171ef3b58226f5ba7bc75a00b641709f94e39b98ce22f3705d478372b",
                "sha256:80efed294ad4f7a5fa2c7d2707ce25d5afb60269825dce21034937056edb1754",
                "sha256:a7c5c94f925186f7cee5755477662cac40f59a27c2f9d6163c5ab4f89b1fa56a",
                "sha256:d2ada2f2236a7f1393a4e6657c4421cd99411cb99739d80dd1522e861ac1308a",
                "sha256:dc43c593800ba67d8081eb26deef83c893dd7b52680bfd5193e76e3efaf4f186"
            ],
            "index": "pypi",
            "version": "==5.14.2"
        },
        "python-dateutil": {
            "hashes": [
                "sha256:73ebfe9dbf22e832286dafa60473e4cd239f8592f699aa5adaf10050e6e1823c",
                "sha256:75bb3f31ea686f1197762692a9ee6a7550b59fc6ca3a1f4b5d7e32fb98e2da2a"
            ],
            "version": "==2.8.1"
        },
        "pytz": {
            "hashes": [
                "sha256:1c557d7d0e871de1f5ccd5833f60fb2550652da6be2693c1e02300743d21500d",
                "sha256:b02c06db6cf09c12dd25137e563b31700d3b80fcc4ad23abb7a315f2789819be"
            ],
            "version": "==2019.3"
        },
        "shiboken2": {
            "hashes": [
                "sha256:1ab673cab00ac787f055f5859c6ad1e03e294c3a12247545f3b516860363b076",
                "sha256:32fa77f9464b1fa055f2d8c1511e624dbd39a8ad13053acc08c330d5631a7788",
                "sha256:4a1be8396c748b850d2b0bddc9ef3d277873d14503c83efbc34be7148c3c92fc",
                "sha256:6eda654156bdcabf14dd366f7da5ab2ffcf4d3099eb437f9a22742fd3f828f6a",
                "sha256:77b9bac57f7524c21a0711466dea43d4b45543f7d4ec1fc54acff9349d8296e3",
                "sha256:e887fccaa60dbf2b6f9ce46c32fb0d36434796ef3468d742e0bdad9cfc5b0c02"
            ],
            "version": "==5.14.2"
        },
        "six": {
            "hashes": [
                "sha256:236bdbdce46e6e6a3d61a337c0f8b763ca1e8717c03b369e87a7ec7ce1319c0a",
                "sha256:8f3cd2e254d8f793e7f3d6d9df77b92252b52637291d0f0da013c76ea2724b6c"
            ],
            "version": "==1.14.0"
        }
    },
    "develop": {}
}

pyside2が使えるようになるまでの記録

pyside2 のインストール

本家サイト  Qt for Python - Qt Wiki

pipenv install pyside2

Qt designerのダウンロード

build-system.fman.io

pyside2-uicの場所

仮想環境ディレクトリの中にある。

/Users/`USERNAME`/.local/share/virtualenvs/pipenv_dir-C96IXUAR/bin/pyside2-uic
pyside2-uic -o test.ui test.py

pyside2-uicが使えない問題

pyside2-uic -o source.ui source.py

何の問題かわからないがこれではfailure。source.uiも消えてしまうので注意!!

/Users/owner/.local/share/virtualenvs/pipenv_dir-C96IXUAR/bin/pyside2-uic mainwindow.ui

この形にすると標準出力にコードが排出されるので、これを直接pyファイルに落とし込んだらOK。

pyqtgraph (pyside2で使えるのはdevelop treeのもの)

公式リファレンス  http://www.pyqtgraph.org/documentation/index.html

pipenv install git+https://github.com/pyqtgraph/pyqtgraph.git@develop#egg=pyqtgraph

pillow

https://note.nkmk.me/python-pillow-basic/

pipenv install pillow

上記インストール終了後の流れで参考にしたサイトたち

Python3とPySide2でGUI作成 - Qiita

Pythonスクリプトの書き方(4パターン) | ガンマソフト株式会社

pipenvでgithubにあるライブラリをインストールする時の説明

python - "pipenv requires an #egg fragment for version controlled dependencies" warning when installing the BlueJeans meeting API client - Stack Overflow

menubarが表示されない

menubar.setNativeMenuBar(False) https://stackoverflow.com/questions/39574105/missing-menubar-in-pyqt5

環境をpyenv+pipenvに変更するため、インストール。ただの記録。

Mac上のPython仮想環境をpipenv+pyenvへ移行してみた | Developers.IO より

環境をpyenv+pipenvに変更するため、インストール。ただの記録。

sho-pro:~ owner$ brew install pipenv Updating Homebrew... ==> Auto-updated Homebrew! Updated 1 tap (homebrew/cask). No changes to formulae.

==> Installing dependencies for pipenv: sqlite and python@3.8 ==> Installing pipenv dependency: sqlite ==> Downloading https://homebrew.bintray.com/bottles/sqlite-3.31.1.catalina.bottle.tar.gz ==> Downloading from https://akamai.bintray.com/e0/e09e8c96db88178e4f47b0cdab6477c46fa582326900ec9309c3ce1b9f7ff9aa?gda=ex

################################################################## 100.0%

==> Pouring sqlite-3.31.1.catalina.bottle.tar.gz ==> Caveats sqlite is keg-only, which means it was not symlinked into /usr/local, because macOS provides an older sqlite3.

If you need to have sqlite first in your PATH run: echo 'export PATH="/usr/local/opt/sqlite/bin:$PATH"' >> ~/.bash_profile

For compilers to find sqlite you may need to set: export LDFLAGS="-L/usr/local/opt/sqlite/lib" export CPPFLAGS="-I/usr/local/opt/sqlite/include"

For pkg-config to find sqlite you may need to set: export PKG_CONFIG_PATH="/usr/local/opt/sqlite/lib/pkgconfig"

==> Summary 🍺 /usr/local/Cellar/sqlite/3.31.1: 11 files, 4MB ==> Installing pipenv dependency: python@3.8 ==> Downloading https://homebrew.bintray.com/bottles/python@3.8-3.8.1.catalina.bottle.tar.gz ==> Downloading from https://akamai.bintray.com/f7/f7150810ab3337f74d8cd5c4d39e3e62e37242f041a45ae01bcba641a3467de8?gda=ex

################################################################## 100.0%

==> Pouring python@3.8-3.8.1.catalina.bottle.tar.gz ==> /usr/local/Cellar/python@3.8/3.8.1/bin/python3 -s setup.py --no-user-cfg install --force --verbose --install-scripts=/usr/ ==> /usr/local/Cellar/python@3.8/3.8.1/bin/python3 -s setup.py --no-user-cfg install --force --verbose --install-scripts=/usr/ ==> /usr/local/Cellar/python@3.8/3.8.1/bin/python3 -s setup.py --no-user-cfg install --force --verbose --install-scripts=/usr/ ==> Caveats Python has been installed as /usr/local/opt/python@3.8/bin/python3

You can install Python packages with /usr/local/opt/python@3.8/bin/pip3 install They will install into the site-package directory /usr/local/opt/python@3.8/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages

See: https://docs.brew.sh/Homebrew-and-Python

python@3.8 is keg-only, which means it was not symlinked into /usr/local, because this is an alternate version of another formula.

If you need to have python@3.8 first in your PATH run: echo 'export PATH="/usr/local/opt/python@3.8/bin:$PATH"' >> ~/.bash_profile

For compilers to find python@3.8 you may need to set: export LDFLAGS="-L/usr/local/opt/python@3.8/lib"

For pkg-config to find python@3.8 you may need to set: export PKG_CONFIG_PATH="/usr/local/opt/python@3.8/lib/pkgconfig"

sho-pro:~ owner$ echo 'eval "$(pipenv --completion)"' >> ~/.bash_profile sho-pro:~ owner$ exec $SHELL -l

簡単な使い方

初期化: 目的のディレクトリにて

% pipenv --python /usr/local/opt/python@3.8/bin/python3

インストールした仮想環境に入る

% pipenv shell

ライブラリを追加インストールする

% pipenv install % pipenv install --dev flake8 #開発環境のみで使うライブラリの場合は--devフラグをつける

依存ライブラリのアップデート確認

% pipenv update --outdated

依存ライブラリのアップデート

% pipenv update % pipenv update

セキュリティの脆弱性を確認する

% pipenv check

仮想環境を終了させる

% exit

これがあった方がディレクトリ管理がしやすい。

echo 'export PIPENV_VENV_IN_PROJECT=TRUE' >> ~/.bash_profile

QtDesignerの入手

build-system.fman.io

sklearnのrandom forestの性能チェック

ランダムフォレストの性能がどの程度のものなのかを知りたかったので、scikit-learnからRandomForestClassifierとLogisticRegressionを読み込んで試してみた。 どういう評価方法が正しいのかよく分からないけれど、ひとまず混同行列での評価を行ってみることにした。
誰か正しい性能評価の方法を教えて下さい・・・

# ランダムフォレスト
import pandas as pd
import numpy as np
from matplotlib import pyplot as plt
from sklearn.metrics import accuracy_score
from sklearn.metrics import precision_score
from sklearn.metrics import recall_score
from sklearn.metrics import f1_score
from sklearn.metrics import confusion_matrix

# X, Y データ
X = df.example
Y = df.example

train_X, test_X, train_Y, test_Y = train_test_split(X, Y, random_state = 0)
p_score_array_testdata = []
p_score_array_traindata = []
for i in range(300):
    train_X, test_X, train_Y, test_Y = train_test_split(X, Y, random_state = i)
    rf = RandomForestClassifier(n_estimators=30)
    rf.fit(train_X, train_Y)
    pred_X = rf.predict(test_X)
    pred_X_t = rf.predict(train_X)
    accuracy_s = accuracy_score(pred_X, test_Y)
    precision_s = precision_score(pred_X, test_Y)
    recall_s = recall_score(pred_X, test_Y)
    f1_s = f1_score(pred_X, test_Y)
    accuracy_s_t = accuracy_score(pred_X_t, train_Y)
    precision_s_t = precision_score(pred_X_t, train_Y)
    recall_s_t = recall_score(pred_X_t, train_Y)
    f1_s_t = f1_score(pred_X_t, train_Y)
    true_positive, false_negative, false_positive, true_negative = confusion_matrix(pred_X, test_Y).ravel()
    true_positive_t, false_negative_t, false_positive_t, true_negative_t = confusion_matrix(pred_X_t, train_Y).ravel()
    p_score_array_testdata.append([accuracy_s, precision_s, recall_s, f1_s])
    p_score_array_traindata.append([accuracy_s_t, precision_s_t, recall_s_t, f1_s_t])
# testセットに対するconfusion matrix
p_score_df = pd.DataFrame(p_score_array_testdata, columns=["accuracy", "precision", "racall", "F_value"])
p_score_df.plot()
p_score_df.describe()

# In[]:
trainセットに対するconfusion matrix
p_score_df_t = pd.DataFrame(p_score_array_traindata, columns=["accuracy", "precision", "racall", "F_value"])
p_score_df_t.plot()
p_score_df_t.describe()


# In[]:
# ロジスティック回帰分析
from sklearn.linear_model import LogisticRegression

# X, Y データ
X = df.example
Y = df.example

train_X, test_X, train_Y, test_Y = train_test_split(X, Y, random_state = 0)
p_score_array_testdata = []
p_score_array_traindata = []
for i in range(300):
    train_X, test_X, train_Y, test_Y = train_test_split(X, Y, random_state = i)
    rf = LogisticRegression()
    rf.fit(train_X, train_Y)
    pred_X = rf.predict(test_X)
    pred_X_t = rf.predict(train_X)
    accuracy_s = accuracy_score(pred_X, test_Y)
    precision_s = precision_score(pred_X, test_Y)
    recall_s = recall_score(pred_X, test_Y)
    f1_s = f1_score(pred_X, test_Y)
    accuracy_s_t = accuracy_score(pred_X_t, train_Y)
    precision_s_t = precision_score(pred_X_t, train_Y)
    recall_s_t = recall_score(pred_X_t, train_Y)
    f1_s_t = f1_score(pred_X_t, train_Y)
    true_positive, false_negative, false_positive, true_negative = confusion_matrix(pred_X, test_Y).ravel()
    true_positive_t, false_negative_t, false_positive_t, true_negative_t = confusion_matrix(pred_X_t, train_Y).ravel()
    p_score_array_testdata.append([accuracy_s, precision_s, recall_s, f1_s])
    p_score_array_traindata.append([accuracy_s_t, precision_s_t, recall_s_t, f1_s_t])
p_score_df = pd.DataFrame(p_score_array_testdata, columns=["accuracy", "precision", "racall", "F_value"])
p_score_df.plot()
p_score_df.describe()

# In[]:
p_score_df_t = pd.DataFrame(p_score_array_traindata, columns=["accuracy", "precision", "racall", "F_value"])
p_score_df_t.plot()
p_score_df_t.describe()

OpenCVのインストール

紙ベースのデータを取り込むのに有用かも知れないと思い、画像内のバーコードをpythonで読めないか調べてみた。
pyzbarとopenCVを使えばいける様子。

OpenCVはanacondaでつくった"keras"環境に入れることにした。
conda install opencv
ではエラーが出でインストール出来なかったが、一旦condaをupdateすると上手くいった。
conda update conda

ただし、一旦
activate hogehoge/keras
で入ったkeras環境からではなく、新しく開いたターミナルウィンドウからホームディレクトリにいる状態でcondaのアップデートを行った。
keras環境に入っている状態ではcondaが見つからずupdateはできなかった。

アプリケーションと画面を対応させて頭をすっきりさせる。

日頃、macのmission contorlを使用していくつかの画面を切り替えて使っているのですが、atomやterminalやらブラウザやらを開いている内にどこに何があるか訳がわからなくなることが多々ありました。 実験結果を指導教官に提示するときにもたつくのも嫌だし、実際に解析や記録をしている時でもアプリを毎回探すのが生産性の低下を来している様な気がしたので、一旦環境を整理することにした。

目的は各アプリケーションをある画面に固定して使用することで頭を混乱させずにパソコンを使うことが出来るようにすること。 * macでは最近のOSでは勝手に画面の順番が切り替わっていることがあるため、それをoffに。具体的には、mission controlを開き、「最新の使用状況に基づいて操作スペースを自動的に切り替える」の項目をoffに。 これで環境を自分で制御できるようになった。 * 各画面にショートカットを割り当てる。システム環境設定→キーボードから設定可能。 * 目的の画面に移動し各アプリを起動した状態でdock→オプション→このディスプレイに割り当てを設定。

以上でOK

自分の場合は

画面1: ブラウザ
画面2: good notes(実験ノートはこれで記録していることが多い)やテキストエディタなど
画面3: papers(大学院生なので読まないと何かと動けません)、leaf(RSSリーダー)
画面4: atom(主にpython用。hydrogenを使うことで、atomからpythonを走らせ結果を表示することが可能になるのを最近しりました)
画面5: terminal
画面6-8: フリー
画面9: メールソフト、Slack、LINE等々のコミュニケーションツール
画面10: 息抜き用。netflixgoogle chromeで開いてたりする。

これが以外と良い