Python関連のことを調べてみた2020年02月11日

Python関連のことを調べてみた2020年02月11日

PySimpleGUIでグラフを描く

# この記事を読んでできるもの
![graph_example.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/11002/8cd9bcf0-b8df-170e-b058-4912040d8052.jpeg)

PySimpleGUIで以下のことができるようになります。

– 棒グラフ、折れ線グラフなどが描画できるようになります。
– 定期的に表示を更新するグラフ

# 概要
Pythonの利用方法としてデータ解析を行う人は多いと思います。
また解析した結果を折れ線グラフや棒グラフなどで可視化したいという人もいるかと思います。

PySimpleGUIでグラフを利用する場合は大まかに言って2通りあります

– [graph-element](https://pysimplegui.readthedocs.io/en/latest/#graph-element)を使って描画する
– matplotlibを埋め込んで描画する

今回はgraph-elementを使って作成する方法を説明します。

# grap

元記事を表示

シールド言語上でのusingとimportの違い

#シールド言語上でのusingとimportの違い
using->既にリンクされているもの。
import->リンクされていないもの。

“`ex.shie
using Sys
using Os
using Collection
“`
<-標準モジュールはusing ```ex.shie import WindowsAPI import ABC ``` <-非標準モジュール(サードパーティー製や自作モジュール)はimport ```ex.udml [module1](WindowsAPI.so) [module2](MyShield\ABC.a) [module3](MyShield\MyLib.so) define Entry EntryPoint eq ex.Start_Up.Main @exだとグローバル空間から開始  define Link Linking eq (module1,module2,module3) out of !My_Shield_File.jcp where #Entry #Link open build 'ex.shie' ``` ```ex.s

元記事を表示

pandasのprintで省略を防ぐ

# pandasのprintで省略されて嫌な時

## rowをちゃんと見たい時

例えば、irisのデータは150rowsあるので、
そんな時は

“`
pd.set_option(‘display.max_rows’, 150)
“`
を入れてあげる。

“`
import pandas as pd
from sklearn import datasets

pd.set_option(‘display.max_rows’, 150)
iris = datasets.load_iris()
df1 = pd.DataFrame(iris[‘data’])
print(df1)
“`

## columnをちゃんと見たい時

例えば、olivetti_facesのデータは4096columnsあるので、
そんな時は

“`
pd.set_option(‘display.max_columns’, 4096)
“`

を入れてあげる。

“`
import pandas as pd
from sklearn import datasets

pd.set_opti

元記事を表示

企業内環境でのpythonのpipのためのproxy設定がうまくいかない(例えば、Python 3.7.5ではOKなのに、3.7.6でNG)

#何についてか
表題の通り。

#どういう人向けの記事か

企業内からだから、pipでproxy設定がいると認識して、
proxyを設定したのに、意外や意外、エラーに出会った人。

具体的には、以下のようなエラー。

“`
ip._vendor.urllib3.exceptions.ProxySchemeUnknown: Not supported proxy scheme
“`

“`
raise ProxySchemeUnknown
“`

以下、無理やり自宅で再現させたエラーなので、
厳密ではないかも。。。

“`
conn = self.get_connection(request.url, proxies)
File “C:\Users\XYZZZ\AppData\Local\Programs\Python\Python37\lib\site-packages\pip\_vendor\requests\adapters.py”, line 309, in get_connection
proxy_manager = self.proxy_mana

元記事を表示

WindowsでNEologd辞書を比較的簡単に入れる方法-システム辞書編

#はじめに
MeCabの形態素解析用の辞書のNEologd辞書を導入にWSL(Windows Subsystem for Linux)+Ubuntuを使っていたのですが、git for Windowsと7-zipで比較的簡単に導入できました。

先の記事↓でユーザー辞書について記載したので今回はシステム辞書編です。
https://qiita.com/zincjp/items/c61c441426b9482b5a48

#環境
Windows10 64bit 言語:日本語
MeCab 0.996-32bit
#導入するもの
git for Windows 2.20.1 64-bit
7-Zip 18.06 64-bit
#導入手順
##MeCabにPATHを通す
MeCabの実行ファイルのある以下のフォルダを環境変数を設定しPATHを通す。
C:\Program Files (x86)\MeCab\bin
##7-zipのインストールと環境変数への設定
###7-zipのインストール
ダウンロードしてきたNEologd辞書はxz形式で圧縮されているので、展開するために7-zipを使い

元記事を表示

機械学習の分類

機械学習を勉強するにあたって、どういう順番で手をつけていこうか。これは自分にとっても非常に悩ましかった。なにしろ基礎知識すらあまりなかったわけで、いろいろあさっていくなかで、なんとなく方向性みたいなのが見えてきたのでまとめてみることにした。万人に参考になるかはなぞである。

# ライブラリあるんだから使えばいいじゃん
それは実に正しい。エンジンの仕組みなんて知らなくても車の運転はできる。大事なのは車を使ってどういう価値を生み出すかだ、車輪の再発明をやっている時間はないのだよ。機械学習ならscikit-learn、ディープラーニングをやるならtensorflowを使えばナウでヤングなAIなんてあっという間ですよ!

確かにそうですけどね、ベースにある理論とか知識とかがあったほうがより適切かつ効果的に道具を選択できるようになると思うんです。あーこのケースならこういう風に解いていけばいいなというのが感覚的にわかるようになるのはとても大事だと思います。

# ではどのようにして
結局行き着いたのは、[scikit-learnのチートシート](https://scikit-learn.org/s

元記事を表示

Pythonでもジェネレーターで関数モナドとStateモナドを模倣してみた

ジェネレーターを DSL のように使って関数モナドと State モナドを模倣してみました。記述をそれっぽく見せることに重点を置いたため、bind や return を正確に実装したわけではありません。

この記事は次の記事の Python 版です。同じことが出来るはずなので確認したくなりました。

* [ジェネレーターで関数モナドとStateモナドを模倣してみた](https://qiita.com/7shi/items/e5365885fb53c015630c)

結果的に、ジェネレーターの `return` の仕様の変遷や、デコレーターが有用なことなどが分かりました。

# 実装

実装を並べると、関数モナドと State モナドの差分が分かりやすいです。

関数モナド State モナド
def function_monad(g):
def f(state):
it = g()
value = None
try:

For Else文

```python:for-else.py
for fruit in ['banana','apple','orange']:
print(fruit)
else:
print('break文で抜けた場合は実行されない')
```

while else

```python:while-else.py
count=0

while count<5: if count ==1: break print(count) count+=1 else: print('breakで抜けた場合は実行されない') ```

Blenderのアドオン開発をするときに地味に便利な「ソース編集」

Blenderのアドオン開発をするときに地味に便利な機能が「ソース編集」です。

たとえば自作アドオンをシェイプキーのこの部分に登録したければここを右クリックして「ソース編集」をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/165205/a8a276a1-76bf-7871-99ef-f2661223ac38.png)![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/165205/a4df50b0-b150-6be1-8924-084a35799284.png)

するとTextEditorにこのメニューを登録している部分のソースが表示されます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/165205/1639cc3a-e309-6a82-711f-7e167997f33c

今更Webスクレイピングを試してロト6のデータを取得

サーバーいらずで無料でWebスクレイピングが出来ると聞いて試してみた。
題材が無いとどうしてもやる気が出ないので、少しでもやる気の出るように今回はロト6のデータを取得して
本当にランダムなの?って検証を行った。

#colab
まずは[colab](https://colab.research.google.com/notebooks/welcome.ipynb?hl=ja)に登録して、`ファイル`→`Python3のノートブック`を選択
ハードウェアをGPUに変更

colabは毎回閉じると全部入れた物が無くなるので、毎回インストールが必要

```
!apt-get update
!apt install chromium-chromedriver
!cp /usr/lib/chromium-browser/chromedriver /usr/bin

!pip install selenium
!pip install beautifulsoup4
```

#スクレイピング部分

いろいろ調べたけど、しっかり動かなかったので
[ここ](http://www.toshioblo

UMAP 0.4の新機能で遊ぶ(プロット、非ユークリッド空間への埋め込み、逆変換)

UMAPがバージョンアップしてv0.4が公開された。

2020/02/10現在では、```pip install --pre umap-learn```でバージョンを上げることができる。

疎行列をそのまま入力できたりいろんな機能が追加されているらしいけど、ここではプロット機能、非ユークリッド空間への埋め込み、逆変換を試してみる。

データだけ変えてほぼドキュメントに書いてあるコード例そのままやってるだけなので、それぞれについて詳しくは[UMAPドキュメント](https://umap-learn.readthedocs.io)へ。

## データ

[PARC](https://github.com/ShobiStassen/PARC)のレポジトリに置いてあったscRNA-seqのデータセットとアノテーション(Zheng et al., 2017, 10X PBMC)を使って実験する。68,579細胞、事前にPCAで50次元に圧縮済み。気軽にやるにはちょっと大きすぎるデータなので適当に1万細胞くらいに落として使う。

```python
import numpy as np
im

ポケモンGOのポケモンのデータや技データを取り出す

私事で恐縮なのですが、昨年の1月頃よりポケモンGoを再開いたしました。そこから1年間続けているのですがポケモンGo側にも大きな機能追加がありました。それは待望のオンラインでの対戦です。興味が無かったのですが、やってみると思いの外楽しく自分でもシミュレーションや効率的な戦いを考えてみたくなります。
それならそのポケモンデータや技データはどうやって集める?という話です。

#### 概要
* ポケモンGoのGAME_MASTER.jsonファイルの公開元を発見
* そのファイルから必要なデータをPythonにて抽出
* 生データであり追加の加工が必要

#### 1.データ収集方法の検討
最初に思いついたのはこの方法でした。海外サイトや国内サイト含め、ポケモンGoにおけるステータスや技データなど全て公開されています。ただし、二次利用を想定しているものではないためウェブ上からスクレイピング等で取り出す方法が必要となります。

案1. Webサイト上からの収集
攻略サイト等で公開されているページからスクレイピングする方法です。

Pythonista(iPhone)からプログラミング・フォロを操作する

#目的
iPhone上でPythonのプログラムを書いて実行できるPythonista3上でBluetoothを使ったプログラムが作れるのが分かったので、プログラミング・フォロを操作するプログラムを作ってみた。
##Pythonista3
iPhone(iOS)上で動作するPythonの統合環境です。
有料で少し高いんですが、iPhoneのカメラや加速度センサーやBluetoothも扱うことも出来るし、NumPyやMatplotlibなどの一般的なライブラリも使えるので、いろいろ遊べる環境です。
なんと言ってもiPhone上で作って実行できるので、ネイティブなプログラム開発に必要なMacがなくてもアプリが作れるのが魅力です。
追加でstashをインストールすると、ssh/scpとかgitも使えます。
##プログラム
[プログラムはgithubに置いてます](https://github.com/roxa-delphi/microbit/blob/master/iphone_ctrl_folo_2.py)
Bluetoothの操作にはcbライブラリを利用してます。
UI上でボタンの押しっ

QGISでベクタータイルをレイヤーとして追加する

## はじめに
最近、[MapTilerの日本向けサービス開始](https://internet.watch.impress.co.jp/docs/column/chizu3/1232026.html)が話題になりましたが、従来のサービスと何が違うかと言えば、ラスタータイルに加え、ベクタータイルが配信された点です。ベクタータイルが何かという説明は省きますが、昨今の地図配信で外せない要素と感じ、色々いじっています。FOSS4Gっ子ならやっぱりQGISでベクタータイル、表示したいですよね?この記事で、表示する方法(プラグイン)を紹介します。

## 目標
以下のように、ベクタータイルをQGISレイヤーとして読み込む。
こうなれば、欲しいレイヤーを外部ファイルに出力も出来ます、夢が広がりますね!
![スクリーンショット 2020-02-10 23.15.18.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/73197/94d3d5be-1c8d-345d-175d-66ee94710790.png)
© Ma

COTOHA API 使ってみた(GitHubにコードもあるよ)

## 0. 関連記事

* [自然言語処理を簡単に扱えると噂のCOTOHA APIをPythonで使ってみた](https://qiita.com/gossy5454/items/83072418fb0c5f3e269f)
* [「メントスと囲碁の思い出」をCOTOHAさんに要約してもらった結果。COTOHA最速チュートリアル付き](https://qiita.com/youwht/items/16e67f4ada666e679875)

n番煎じ

## 1. 背景

~~[プレゼント企画](https://zine.qiita.com/event/collaboration-cotoha-api/) を知ったため.~~

個人的にテキスト解析を前々からやろうとは思っていたため, これを機に決意.
とはいえ, 調べてみると公式からの各種言語に対応したAPIは出されていなかった.([この記事](https://qiita.com/gossy5454/items/83072418fb0c5f3e269f) の作者さんの所属がNTTっぽいのでもしかしたらこれが公式説はあったりする)

書籍「15Stepで踏破 自然言語処理アプリケーション開発入門」をやってみる - 4章Step14メモ「ハイパーパラメータ探索」

# 内容
[15stepで踏破 自然言語処理アプリケーション入門](https://www.amazon.co.jp/dp/4865941320) を読み進めていくにあたっての自分用のメモです。
今回は4章Step14で、自分なりのポイントをメモります。

# 準備
- 個人用MacPC:MacOS Mojave バージョン10.14.6
- docker version:Client, Server共にバージョン19.03.2

# 章の概要
この章では機械学習システムに外部から与えるべき適切なパラメータ(学習するパラメータではない)の値を見つけることを目指す。

- グリッドサーチ
- Hyperopt
- 確率分布

# 14.1 ハイパーパラメータ
学習によって調整、獲得されるパラメータではなく、学習の前に設計者やプログラマが設定する一段階メタなパラメータ。

- 特徴抽出器
- 識別器
- NN
- 層の種類
- 層の数
- 層ごとのユニット数
- dropoutの有無と係数
- optimizerの種類と各種引数
-

深層学習/活性化関数たち

#1.はじめに
 簡単に言うと、ニューラルネットワークの豊かな表現力は、シンプルな活性化関数を入れ子にして深い階層にすることによってもたらされます。

 今回は、ニューラルネットワークで使われる活性化関数について勉強したことをまとめます。

#2.Sigmoid関数

```python
# シグモイド関数
def sigmoid(x):
return 1 / (1 + np.exp(-x))

# シグモイド関数の微分
def sigmoid_d(x):
return (1 / (1 + np.exp(-x))) * ( 1- (1 / (1 + np.exp(-x))))

# グラフ表示
x = np.arange(-5.0, 5.0, 0.01)
plt.plot(x, sigmoid(x), label='sigmoid')
plt.plot(x, sigmoid_d(x), label='sigmoid_d')
plt.ylim(-1.1, 1.1)
plt.legend()
plt.grid()
plt.show()
```
![スクリーンシ

Macにpipenvをインストールするまでのメモ

Homebrewをインストールしたあとに・・・。

### Python3.8.1のインストール

- pyenvでインストールします。(確定)

```shell
$ brew update
$ brew install pyenv
$ pyenv install --list
インストール可能なversionの中で最新のものを選んでください。(今回は、"3.8.1"にします)
$ pyenv install 3.8.1
```

- デフォルトで使用されるpythonのversionを確認する。(まだ`3.7.4`なので)

```shell
$ pyenv versions
system
* 3.7.4 (set by /Users/myname/.pyenv/version)
3.8.1
```

- インストールした`3.8.1`を使用するように`pyenv global`コマンドで切り替えます。

```shell
$ pyenv global 3.8.1
$ pyenv versions
system
3.7.4
* 3.8.1 (set by /Use

量子情報理論の基本:量子誤り訂正(Shorの符号)

$$
\def\bra#1{\mathinner{\left\langle{#1}\right|}}
\def\ket#1{\mathinner{\left|{#1}\right\rangle}}
\def\braket#1#2{\mathinner{\left\langle{#1}\middle|#2\right\rangle}}
$$

## はじめに

1980年代に量子計算の原理が明らかになった当初、古典的なデジタル処理で使われるような誤り訂正の理論がない、もしくはその理論確立が極めて困難なため、量子コンピュータなんていうものは現実的に実現不可能と考える人もいたらしいです。古典ビットの場合、ビットが反転するエラーだけを考えれば良いのに対し、量子ビットの場合、その変化は無限の自由度を持つので、無限のパターンのエラーを相手にする必要があります。ブロッホ球をイメージすると、量子状態のズレ方は無限にありますよね。そのズレた状態からもとの状態を正確に復元させることを考えないといけないです。さらに、量子状態は古典情報のように無邪気に複製できませんし、測定したら壊れてしまう代物です。といった