- 1. Pythonのリストにおけるappendと+=の違い
- 2. Pythonでバイナリデータを扱ってみる
- 3. データベース検索(インデックス有無による処理速度の検証)
- 4. AWS LambdaのDestinationsを試してみる
- 5. 【Kivy】WindowsでKivyのインストールの仕方【Python】
- 6. RubyとPythonとmap
- 7. 機械学習で効率よく最適な重みWを得るためのミニバッチ学習について
- 8. macOS Catalina で Python 3.5.3 未満をインストールする
- 9. 【機械学習】ランダムフォレスト
- 10. Raspberry Pi ZeroのGPIOを使ってブラシレスモーターを制御する
- 11. 緯度,経度,GPS高度を三次元直交座標に変換する
- 12. wordcloudで遊んでみた!
- 13. NNablaでtensorboardを使う
- 14. 機械学習未経験の大学生が1週間でツイートの類似度を評価するシステムを作った話
- 15. 東京大学大学院情報理工学系研究科 創造情報学専攻 2018年度夏 プログラミング試験
- 16. Raspberry PiとSense Hatで漢字表示のコンパスを作る
- 17. python 継承について
- 18. ABC146 感想
- 19. 文字が入った画像をpythonで作る(日本語)
- 20. docker-composeを使って3分28秒でDjangoをデプロイ
Pythonのリストにおけるappendと+=の違い
PythonでCSVを扱っていてドハマりしたのでメモ。
## リストの結合操作
成績表のCSVを標準ライブラリで読み込んで、次のようなリストができているとする。
2人分の成績表。それぞれ数学と英語の点数が記録されている。“`python
paper1 = [
[“Math”, “90”],
[“English”, “75”]
]
paper2 = [
[“Math”, “38”],
[“English”, “100”]
]
“`このとき、成績表の束を管理するリストを作るには append と += のどちらを使えばよいだろうか?
## まずは+=
とりあえずREPLで見てみる。
“`python
>>> papers = []
>>> papers += paper1
>>> papers += paper2
>>> papers
[[‘Math’, ’90’], [‘English’, ’75’], [‘Math’, ’38’], [‘English’, ‘100’]]
“`おおっと?マージされてしまったぞ?これは期待した
Pythonでバイナリデータを扱ってみる
バイナリデータをPythonで処理する機会があったのですが、初めてバイナリデータを触ったこともあり色々調べないとわかないこともあったので、備忘録として残しておきたいと思います!
今回は「**.sl2**」という拡張子ファイルのデータを扱ったので、.sl2データを例に書いていきます!
# バイナリデータのことについて
バイナリデータは各フォーマットによってデータの構成が決まっています。
今回、.sl2という初めて見るファイルを扱うことになったのですが、その場合はまず「.sl2ファイルの構成」を何らかの方法で知る必要があります。これがわからないと、処理できません!私の場合は以下のページを参考にしましたので、この参考ページをもとに説明していきます。
(**結果的にはこのページは間違っていましたが…**)
https://wiki.openstreetmap.org/wiki/SL2## ヘッダー
ほとんどのバイナリデータにはヘッダーというものが付いているようです。
これは初めの数バイトに固定の値が入っているもので、バージョン情報などデータフォーマットについての説明が入っていま
データベース検索(インデックス有無による処理速度の検証)
# 目的
– インデックス有無が処理速度にどれだけ差を生むのか検証したい
– その過程で、B木についても少し理解したい# 対象読者
– データベースについて学んでいる方
– CSについて学び始めた学生# 始める上での準備と環境
– 今回使用した環境はGoogleが提供する[Colaboratory](https://colab.research.google.com/notebooks/welcome.ipynb?hl=ja)
– 使用言語はpython
– 使用するデータは予めcsv等にまとめておく
– 使用データは1147620行のデータ# コードについて
– [僕のgithub](https://github.com/Retsuki/indexValidation/blob/master/index.py)
– コード内容は僕が使用したデータに合わせてあるので、都度書き直して、、、# 検証結果
#### 範囲が10000~10100を検索
– インデックスなし : 0.290917145000094
– インデックスあり : 4.710936333000063
AWS LambdaのDestinationsを試してみる
AWSから割とすごい機能が発表されました。
Introducing AWS Lambda Destinations
https://aws.amazon.com/jp/blogs/compute/introducing-aws-lambda-destinations/![スクリーンショット 2019-11-27 6.51.44.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/102769/8dcc8bb4-f376-17ae-1ccf-b64739c3289b.png)
Lambdaの実行結果に従って次のアクション(AWSサービス)を指定できる、というものです。
成功/失敗の条件で流れを制御したい場合には、Step Functionsを使う必要もなく、Lambdaだけで完結することができるようになりました。早速試してみます。
# 呼び出し元のLambdaを適当に定義
こんな感じのPythonを書きます。(Python 3.7を利用)
“`python
import json
impor
【Kivy】WindowsでKivyのインストールの仕方【Python】
#結論
“`
pip install docutils pygments pypiwin32 kivy.deps.sdl2 kivy.deps.glewpip install kivy.deps.gstreamer
pip install kivy.deps.angle
pip install kivy
“`これで完了
RubyとPythonとmap
一方の言語でのイメージが邪魔して、もう一方の言語での書き方が思い出せない時がたまにあるんです。
“`python:Python
map(lambda n: str(n).rjust(3,”0″), [1,2,3])
>> [“001”, “002”, “003”]
“`“`ruby:Ruby
[1,2,3].map{|n| n.to_s.rjust(3,”0″)}
>> [“001”, “002”, “003”]
“`
機械学習で効率よく最適な重みWを得るためのミニバッチ学習について
機械学習におけるミニバッチ学習についてのメモです。
機械学習はある与えたれたデータに内在すると仮定される規則を自動的に抽出する演算装置です。
つまり、ある入力の組$\boldsymbol{x}$に対して出力$\boldsymbol{t}$が既に得られていて、そこに存在する規則を抽出することで、新たな入力の組$\boldsymbol{x}^{\prime}$に対応する$\boldsymbol{t}^{\prime}$を予想します。この**規則**なるもの(重みと呼びます)を一般に行列$W$とすると、上の話は機械学習の出力$\boldsymbol{y}$(理想的には$\boldsymbol{t}$と一致するべき)を
$$ \boldsymbol{y} = W \boldsymbol{x}\tag{1}$$
としたとき$\boldsymbol{y}$と$\boldsymbol{t}$の損失関数
$$ E = \frac{1}{2}\|\|\boldsymbol{y}(\boldsymbol{x},W)-\boldsymbol{t}\|\|^{2}\tag{2}$$
を可能な限り
macOS Catalina で Python 3.5.3 未満をインストールする
# 依存関係
* Homebrew
* pyenv(anyenv, asdf)# いそがしいぞ
“`sh
cd $(brew –prefix)/Library/Taps/homebrew/homebrew-core/Formula/
git checkout 8b9d6d688f483a0f33fcfc93d433de501b9c3513 openssl.rb
HOMEBREW_NO_AUTO_UPDATE=1 brew install openssl
pyenv install 3.5.2
“`# なにこれ
* Python 3.5.3 から OpenSSL 1.1.0 を使用しているらしい。(Python 3.5.3 未満は OpenSSL 1.1.0 でインストールできない?)
* Homebrew では、現在 OpenSSL 1.1.0 しかインストールできない。
* 無理やり Homebrew で OpenSSL 1.0.2 をインストールしている。
【機械学習】ランダムフォレスト
# ランダムフォレストとは?
ランダムフォレスト(Random Forest)は機械学習でよく使われるアンサンブルアルゴリズムです。教師あり学習モデルである[**決定木**](https://qiita.com/fumita/items/2b6fd012d32845eb6826)を結合させ精度を向上させたアンサンブル学習法です。
下の図にあるように、複数の木の結果を組み合わせた、森のような構造をしているためランダムフォレストと呼ばれています。
決定木の特徴として、**過学習をしやすい**という問題があります。ランダムフォレストでは、その決定木の過学習の影響を減少させることができます。## ランダムフォレストのアルゴリズム
1. m
Raspberry Pi ZeroのGPIOを使ってブラシレスモーターを制御する
# Raspberry Pi Zeroでブラシレスモーターを制御する
## 概要
ちょっと思うところがあって、市販のブラシレスモーターをRPi Zeroを使って制御してみました。## 構成
* Raspberry Pi Zero W
(https://www.amazon.co.jp/gp/product/B0799FCCWS/)
* 適当なブラシレスモーターとESC(スピードコントローラー)セット
(参考: https://www.amazon.co.jp/gp/product/B01MTCBO7D/)
* 適当なバッテリー![IMG_20191018_212638-01-small.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/538088/7c6c655d-befe-fcd2-b21b-561bc9f0d955.jpeg)
## 接続
1. モーターとESCを繋ぐ。3本線があるが、適当に繋いでも回転が逆になるだけなので大丈夫。
2. ESCとRPiを繋ぐ。コネクターに3本入って
緯度,経度,GPS高度を三次元直交座標に変換する
緯度経度を直交座標系における位置に変換したり,緯度経度から直線距離を出したりしたいシチュエーションって**結構ありますよね**(ない).
実際この手の記事はほかの方も多く書かれていると思います.ただこう,**用途によって使いたい座標系が違ったり**すると思うんですね.ということで,僕はこのたび**地球の重心を原点にした移動しない三次元直交座標系**に変換する方法を学んだので備忘録の意味も込めてここにまとめておきたいと思います.
ややアバウトですのでその道の方でご指摘があればお願いいたします.
#緯度経度の表現について
まず前提というか,前置きとして緯度経度の表現について触れておきます.
緯度経度の記述には主に以下の2種類の表現が使われています.混同しないように注意が必要です.###度分秒による表記
60進法による`135° 12′ 34.56″`というような形式.
よく耳にするやつですね.「135度12分34秒56」などと読みます.`135° 12′ 34″ 56`と表記したり,「135度12分34.56秒」と読んだりすることもあります.それから`1351234.56`と
wordcloudで遊んでみた!
# はじめに
wordcloudを使用することになったので備忘録として投稿
mecabを使用するので、「mecabってなんぞや?」という方は[こちら][1]をどうぞ!
wordcloudのインストールから画像出力までをまとめてみた
お品書きは下記の通り
* これは何の物語でしょう?
* wordcloud とは
* 実際に動かしてみた
* 設定いろいろ
* 日本語でやりがちな失敗
* おわりに# これは何の物語でしょう?
せっかくなので wordcloud で出力した問題を出します(笑)![wordcloud.png][a]
答えは**おわりに**で書いておきます!
# wordcloud とは
文章中で出現頻度が高い単語を複数選び出し、その頻度に応じた大きさで図示する手法のこと公式は[こちら][2]
インストールは pip などでインストールすればすぐ使える
> pip install wordcloud
# 実際に動かしてみた
画像を用いて説明したほうが早いと思うので早速動かしてみた
ここで使用した物語は「赤ずきん」### プログラム
“`
NNablaでtensorboardを使う
tensorboard は学習時にロスカーブを書いたり、ヒストグラムや画像を描画したりするのがとても便利なツールです。私は最近ソニー製のニューラルネットワークフレーム NNabla (https://nnabla.org/) を使っていますが、可視化ツールがなかったので、NNabla でも tensorboard を使えるように、python のパッケージを作りました。
https://github.com/naibo-code/nnabla_tensorboard
基本は [“tensorboardX for pytorch”](https://github.com/lanpa/tensorboardX) をベースに作りました。
## 使い方
基本的には `demp.py` を実行してもらうとどんな感じか分かるかと思います。スカラ、ヒストグラム、画像などの描画に対応しています。
“`bash
# Install
pip install ‘git+https://github.com/naibo-code/nnabla_tensorboard.git’# Demo
py
機械学習未経験の大学生が1週間でツイートの類似度を評価するシステムを作った話
#はじめまして
こんにちは。カトウです。この記事は、機械学習が気になるけど研究するほど詳しくない人が独学で成果物作るまで頑張った記録です。
そういえば、前に頭がおかしい時に書いたgo getの記事はおかげさまでSEO 4位(11/26)なので引き続き頑張ります。今回のテーマは
ツイートの類似度を評価するシステムを1週間で作ってみました!!
です!
というわけで、モデル選定から成果物を出すまでのフローを共有したいと思います。
## ツイートについて
ツイートは140字以内でテキストデータだけであると仮定しまっす。
## ツイートを分解する
ツイート(文書)は単語によって構成されています。今回は、ツイートを単語単位で分解します。
## ツイートをどうやって評価するか?
単語のベクトル(あとで説明する)を足し合わせて単語の数で割り、ベクトルの平均値をツイートのベクトルにします。
比較したい2つのツイートベクトルをコサイン類似度の式(あとで説明する)に当てはめて、ざっくり0~1の数値(たまに-0.0…や1.02…などの値も検出することもある)を得ます。
0に近ければ、ツイート間の類似度が低
東京大学大学院情報理工学系研究科 創造情報学専攻 2018年度夏 プログラミング試験
2018年度夏の院試の解答例です
※記載の内容は筆者が個人的に解いたものであり、正答を保証するものではなく、また東京大学及び本試験内容の提供に関わる組織とは無関係です。### 出題テーマ
– キャッシュミス### 問題文
※ 東京大学側から指摘があった場合は問題文を削除いたします。
Raspberry PiとSense Hatで漢字表示のコンパスを作る
# Raspberry PiとSense Hatで漢字表示のコンパスを作る
![kanjicompass.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/538088/72c31a56-a263-8937-59d3-f304577833a6.png)
## 概要
2年くらい前にラズパイとSense Hatで地磁気をどうにかする必要があって、ためしに作ったプログラムです。今はWebのエミュレーターにしか残ってませんが、当時はちゃんと実機(RPi3+Sense Hat)で動いてました。
## RPi + Sense Hat エミュレーター
https://trinket.io/library/trinkets/a50728f4daRPiエミュレーターのtrinketです。
実機と比べても遜色ない動きをしてくれます。
これが無料で使える時代素晴しすぎます。## 解説
まったく大したことはしてません。
Pythonだとライブラリでいきなり方位角がとれるので、方位角の数値によって、何度から何度ま
python 継承について
##継承
継承とはあるクラスを元にして新たなクラスを作ること
**class 新しいクラス名(元となるクラス名):**と書く事で他のクラスを継承して新しいクラスを定義することができる
このときの元となるクラスを**親クラス**、新たなクラスを**子クラス**と呼ぶ
継承すると、子クラスは親クラスのインスタンスメソッドを引き継ぐ
子クラスは「親クラス内に定義されているメソッド」と「独自に定義したメソッド」の両方が使える
親クラスと同名のメソッドを子クラスで定義するとメソッドを上書きできる。これをメソッドの**オーバーライド**という
オーバーライドすると子クラスで定義したメソッドが優先される
オーバーライドしたメソッドの中で**super()**とすることで、親クラスを呼び出すことができる
**super().メソッド名()**とすることで、親クラス内に定義されたインスタンスメソッドをそのまま利用することが可能
ABC146 感想
#AtCoder Beginner Contest 146 に参加しました
普段はコンテストに参加→復習で終わってしまいますが、コンテスト中の考察を記録に残したいと思い、記事を書くことにしました。(いつまで続くかは不明)##問題A – Can’t Wait for Holiday
愚直に実装しました。“`A.py
S = input()if S == “SUN”:
print(7)
elif S == “MON”:
print(6)
elif S == “TUE”:
print(5)
elif S == “WED”:
print(4)
elif S == “THU”:
print(3)
elif S == “FRI”:
print(2)
else:
print(1)
“`##問題B – ROT N
文字をアスキーコードに変換する方法を知らなかったので、
Google先生に聞いて`ord()`と`chr()`を知りました。対象の文字を`0~25`で表し、N回ずらすためNを加え、26で割った余りを求めます。
最
文字が入った画像をpythonで作る(日本語)
# 背景
そんなにない# 作業
– fontファイルの場所を調べる“`command
$ fc-match -f “%{file}\n” FreeMono
/System/Library/Fonts/ヒラギノ丸ゴ ProN W4.ttc
“`– 画像作る
“`python
from PIL import Image, ImageDraw, ImageFontfont = ImageFont.truetype(“/System/Library/Fonts/ヒラギノ丸ゴ ProN W4.ttc”, size=60)
def make_image(n):
im = Image.new(“RGB”,(300,100),”blue”)
draw = ImageDraw.Draw(im)# im上のImageDrawインスタンスを作る
draw.text((10,20), f”自由記述欄{n}”, font=font)
im.save(f”./freetext{n}.jpg”)for i in range(0,50):
docker-composeを使って3分28秒でDjangoをデプロイ
既に作成されたプロジェクトの場合でも対応可能な形のdocker-composeを作成しましたので、仕様を記事にまとめます。
**GitHub上にHowtoUseを書いておりますのでどうぞ→[GitHub](https://github.com/tken2039/django-nginx-gunicorn-docker)**
(DBをデフォルトのsqliteから変更してる場合はまた別の設定が必要になると思います・・・ごめんなさい)
デプロイ環境はDjango+Nginx+Gunicornとなります。
ちなみに3分28秒というのは、
`①リポジトリのクローン`
`②GitHub上のDjangoプロジェクトをクローン`
`③設定ファイル編集`
`④docker-compose`
`⑤ブラウザでの動作チェック`にかかった時間です。
## 概要
使い方は上記にリンクを用意しておりますGitHubのREADMEを参照ください。簡単なデプロイを実現させるために、次のようなディレクトリ構成で動作するDjangoデプロイ用のdocker-composeを作りました。
“`
dja