Python関連のことを調べてみた2019年12月28日

Python関連のことを調べてみた2019年12月28日
目次

【Python】グルメな人になりたくて〔Data Drivenなアプローチ〕年末年始のお店選び

# 1. モチベーション
**『スクレイピングを駆使して、食べログの点数に関係なく美味しくて実力のあるレストランを探す!』**

* 外食をする際に食べログをよく利用させてもらっているが、食べログの点数には**口コミが少ない間は点数が低く出る**という特徴がある。実際そういう記載がある。(https://tabelog.com/help/score/)

> ユーザーの皆様の声を反映させた指標として、影響度を持つユーザーからのより多くの高い評価が集まることで点数が上がる仕組みになっています。例えば、仮に同じ影響度の場合、5点の評価が2件しかないお店よりも、5点の評価が100件集まっているお店の方が高い点数になります。

* でも開店したばかりだから**口コミが少ないだけで食事もサービスも素晴らしいというお店は存在する**はず。
* ただし僕のようにランキング検索に頼ってばかりでは永遠にこのようなお店と巡り会うことはない。
* そこでスクレイピングを駆使して、開店して日の浅い実は高評価なレストランを抽出していく。
* 美味しいご飯にありつけること自体嬉しいし、~~「こんなお店知ってるのね

元記事を表示

PascalVOC形式のxmlファイルをCOCO形式のjsonファイルに変換する

#PascalVOC形式のxmlファイルをCOCO形式のjsonファイルに変換する
コードの大部分は、[Convert-Pascal-VOC-to-COCO(github)](https://github.com/soumenpramanik/Convert-Pascal-VOC-to-COCO/blob/master/convertVOC2COCO.py)を流用させていただいています。

個人的な理由になりますが、物体検出の学習にCOCO形式のデータセットを用いる必要がありまして。
だけど、今までアノテーションツールで作成してきた学習データがPascalVOC形式のxmlファイルですぐに使えない。
PascalVOC形式のデータセットをCOCO形式のデータセットに変換する際の情報って少ないんですよね。

自分がみつけられていないだけかもしれませんが。。

#Pythonコード
./annotation/ディレクトリの配下にあるxmlファイルすべてを変換し、1つのjsonファイル(train.json)に出力します。

カテゴリーの名前はracket,player,,,としてますが、デ

元記事を表示

Tweepyの使い方 ~その2~ 【フォロー、いいねなど】

#はじめに
公式ドキュメントを参考にtweepyの使い方をまとめていこうと思います。
※前回:[ Tweepyの使い方 ~その1~ 【Tweetの取得】](https://qiita.com/kitarikes/items/543ab75a379f0bf903cc#%E6%8C%87%E5%AE%9A%E3%81%97%E3%81%9F%E5%8D%98%E8%AA%9E%E3%82%92%E5%90%AB%E3%82%80%E3%83%84%E3%82%A4%E3%83%BC%E3%83%88)

事前準備

“`python
import tweepy
# 取得したAPIキー
consumer_key = ‘*********************************’
consumer_secret = ‘*************************************’
access_token = ‘*******************************************’
access_token_secret = ‘************

元記事を表示

Amsterdamに泊まりたい人のためにAirbnbのデータを分析したから

#Amserdamに泊まりたいかーー
オランダの首都アムステルダムは街並みが非常に綺麗で、とても有名な観光地です。ヨーロッパでも特に特徴的な運河がたくさんある街であり、観光客が多すぎるのが問題になっちゃうくらい観光場所として有名です。
![netherlands-happiest-coutries-2018-super-169.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/505543/6b903c1e-fc83-4b36-4a1a-dc22578454f2.jpeg)

##Airbnb
Airbnbといえば有名な民泊サービスです。Air bedとBed&BreakfastというところからAirbnbは来てます。ブライアン・チェスキーが自宅のロフトをお金のたまに貸し出したところから始まったといわれるサービスですね。海外では主流の宿泊先です。

#目的
アムステルダム観光客がAirbnbに宿泊しようとする際にAirbnbの状況を把握してほしいという目的。
今回はアムステルダムのAirbnb宿泊先データを

元記事を表示

【Python】演算子だけで切り捨て切り上げ

## 切り捨て
“`python
# 3を2で切り捨て
[in] 3 // 2
[out] 1
“`

## 切り上げ
“`python
# 3を2で切り上げ
[in] -(-3//2)
[out] 2
“`

**感想**
競プロなんかでは計算速度を気にして少しでも早くしたい時ありますよね。ライブラリをいちいち呼び出してたらTLEになってしまうなんて自体もありますが演算子だけなら高速です。
切り上げが少しわかりずらいですが、(-3//2)が-3を2で切り下げするので-2になります。

元記事を表示

プログラミング初心者がKaggle Expertになるまでの10ヵ月間を振り返る

Kaggle Expertになったので、イキってポエムを書こうと思いました。
**AIに興味あるけどプログラミングすらできないんだよね**という人向けの参考になれば幸いです。
#1. 初期スペック (2019年2月)
* 機械工学系修士卒。よくいるメカニカルエンジニア
* 線形代数も統計も正直そんなに好きじゃない。力学の方が得意。
* AI?あれでしょ。将棋超強いやつでしょ?
* パイソン?スト2のボクサーみたいなやつ?

#2. 現在のスペック (2019年12月)
* Kaggle Expert (微妙?)
* 機械学習コンペでそれなりの成績 (Kaggle Kuzushiji Recognition 7th,Signate tellus 3rd 5th)
* 機械学習:なんとなくコーディングできる。
* 深層学習:なんとなくコーディングできる。
* 関連論文読める。簡単なものは実装できる。
* 業務適用も見えてきた

#3. 機械学習を学んだきっかけ
私自身「何の成果も!得られませんでした!!」という1年があり、新しいことをやろうと一念発起しました。
実際、ちょっと**世界が広が

元記事を表示

RealSenseをLiDARのように使い、インタラクティブな壁を作った

インタラクティブな壁を作りました。

元記事を表示

言語処理100本ノック-77(scikit-learn使用):正解率の計測

[言語処理100本ノック 2015](http://www.cl.ecei.tohoku.ac.jp/nlp100/)の77本目「正解率の計測」の記録です。
ノックの設問内容は訓練データに対する正解率の計測ですが、今回は前回と同じくあえてテストデータで実施しています。
今までは基本的に[「素人の言語処理100本ノック」](https://qiita.com/segavvy/items/fb50ba8097d59475f760)とほぼ同じ内容にしていたのでブロクに投稿していなかったのですが、[「第8章: 機械学習」](http://www.cl.ecei.tohoku.ac.jp/nlp100/#ch8)については、真剣に時間をかけて取り組んでいてある程度変えているので投稿します。[scikit-learn](https://scikit-learn.org/)をメインに使用します。

※次回の78本目「5分割交差検定」はやりません。既に訓練時に`GridSearchCV`関数を使って5分割交差検定をしているため、無駄だからです(正確には5分割交差検定で適合率などを求めていないでやってい

元記事を表示

pycharmでmatplotlibが使えないとき

### matplotlibのバックエンド設定が書かれたファイルのパスをコマンドで調べる

“`$ python -c “import matplotlib;print(matplotlib.matplotlib_fname())”“`

backend: Qt4Agg で OK

### 追加でパッケージをインストール

仮想環境 (venv) を作ったディレクりに移動して、

“`$ pip install PyQt5 PyQt5-sip QtAwesome qtconsole QtPy “`


cf. https://murabitoleg.com/mac-matplotlib/

元記事を表示

コイン投げを例にベイズ推定 試行毎に事後分布をみる

# はじめに
最近ベイズ統計が熱いと聞いて、勉強せねばと思い[「完全独習 ベイズ統計学入門」](https://www.diamond.co.jp/book/9784478013328.html)を買いました。
途中まではわかりやすいのですが、数式を極力使わないで図をもって説明するスタイルなので、連続分布がでてきた途端にわかりにくく感じました。
そこで勉強のため、簡単な例としてコイン投げを題材に、1回投げるたびに事後分布を見てみようと思います。
MCMC法などはまだよく理解していないので、確率密度関数を細切れにして計算します。

# 参考
[小島寛之「完全独習 ベイズ統計学入門」ダイヤモンド社, 2015年11月](https://www.diamond.co.jp/book/9784478013328.html)

コイン投げを例題とした、上記の書籍と同様の図を用いた説明です。
[北数教 第108回数学教育実践研究会 平成31年1月26日(土)「ベイズ推定の思想」](http://izumi-math.jp/M_Matumoto/108_matsumoto.pdf)

こちらは同じ題

元記事を表示

NATゲートウェイを使ってない時に全停止して都合良く全復活させる

# VS 使ってないNATゲートウェイの課金
NATゲートウェイは使用料金が高く、使用していない時は止めたい。
ただ2019年12月の現在において停止機能は存在しておらず、停止イコール削除となる。
停止という点ではNATインスタンスを立てて停止すれば良い話だが、それでは単純に面倒。
つまり稼働中のNATゲートウェイを削除し、使いたいときに必要な情報をもって再作成するスクリプトを作成すればいい!

# やりたいことを図にしてみる
![gomi.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/558188/0b0f391e-afea-597b-dd03-da856764aea1.png)
PlantUMLは有能

# 停止(削除)スクリプト
“`
import boto3

client = boto3.client(‘ec2’)

natGateWayList = []
routeTableList = []
subnetList = []
natGateWayNameList = []
iPli

元記事を表示

OpenCVで他のどの記事よりも頑強に特徴量マッチングしてみた

先日HackDay2019というイベントに参加しました.
これはYahoo主催のハッカソンで,”24時間で何か面白いプロダクトを作ろう”というイベントなのですが,約80チームが参加した中で私たちのチームはO2O賞とHappy Hacking賞(観客投票賞)という2つの賞を獲ることができました.

【Python】super()を使ってオーバーライドする理由

# 本記事について
Djangoのソースコードを見ていたところ、クラスのオーバーライドに`super()`を用いているものがたくさんありました。`super()`とは何なのか、用いないでオーバーライドする場合と何が違うのかを整理します。

## オーバーライドとは
基底クラスと同じ名前のメソッドを派生クラス内に定義することです。基底クラスのメソッドに機能を追加・変更をすることができます。

# 基底クラスを定義する

“`python

# 基底クラス
class Coffee(object):
def __init__(self, color, fragrance, price, taste, elapsed_time):
self.color = color
self.fragrance = fragrance
self.price = price
self.satisfaction = ((taste + fragrance) * price) – elapsed_time

de

元記事を表示

【コード無し】卒論で楕円曲線とブロックチェーンについて書いたので、勉強方法をまとめてみた

# What is この記事
タイトルの通り、卒業論文でビットコイン、ブロックチェーンに使われている楕円曲線暗号について書きました。楕円曲線、ブロックチェーンそれぞれ分けて文献紹介します。
対象読者は、ブロックチェーンとか興味あるけど、勉強したことないよ、って方です。また、紹介した文献はごく一部のため、あくまで勉強時の選択肢の1つとして見ていただければと思います:relieved:
ちなみに、アフィリエイトではなくガチでわたしが利用させていただいたものしか載せてませんので、他におすすめ文献等ありましたらぜひご指摘の方お願いします!

# 誰
初投稿です。偏差値50くらいの可もなく不可もなく大学で数学やってますが、数学は全然わかりません。ただ、暗号学専攻なので書きました。一応エンジニアやってます。
わたしの拙い卒業論文が見たい方は下のURLのAbout Meからぜひ見ていただきたいです。フィードバック等もいただけると全力で感謝いたします。

こちら→ https://ishihaya.com/

# 参考文献一覧

## ブロックチェーン・ビットコイン(基礎知識)

### 【

元記事を表示

ゴリゴリの文系がAIをほぼ独学した半年

# ゴリゴリの文系(偏差値40前半)がAIを学んだ半年
どうも、ゴリゴリの~~マッチョ~~文系です。
商業高校卒業したあと、文系学部にいったので、そこらへんの文系とは格が違います。
文系界のサラブレットです。

肝心な数学力ですが、高校まで数学Aまで勉強して、大学で数学入門とっただけです。
つまり、戦闘力0.1ぐらいです。

灘高を卒業、ハーバードに入学、首席で卒業。
したかった僕が勉強してきた事、そしてこれから勉強する人に向けてポエムをつらつらと書いていきます。

## やってきたこと
実装から始めたい人はある程度参考になるかと。
理論から始めたい人は微積、線形代数、確率統計の基礎を習得してからcouseraに行くのが良いのではないでしょうか。(個人の感想です。)
独学はモチベドリブンでやんないとしんどいので自分でカスタマイズしていってください。

### 0ヶ月目 会社の研修でプログラミングの基礎を習得。
ここでJavaを勉強してそこそこ組めるようになりました。
研修が終わってから2日くらいかけて、pythonの基礎文法等を習得しました。

これ以降は会社で時間を取っていただ

元記事を表示

Raspberry Pi 3B+で起動時プログラム自動起動 systemdまとめ

#Raspberry Piで起動時プログラム起動
Raspberry Piのプログラムを実行するのに、いちいちRaspberry Piのコマンドを開いて実行するのって不便ですよね。今回は起動時にsystemdというものを使って、プログラムを自動起動する方法を簡潔にまとめます。

#systemdについて
systemdはLinuxの起動処理やシステム管理を行う仕組みです。サービスを1つのシェルスクリプトではなくUnitという単位で、ファイルとして管理します。このため処理を細分化でき個別に実行することが可能です。また処理ごとの流れを明確にすることが出来るので、並行処理も可能です。今回は起動時のプログラムの実行の設定方法を扱いますが、起動時以外にも終了時やタイマーなどのトリガーでも実行が可能です。

#設定の流れ
設定の流れですが、基本的にはserviceファイルというものを作成して、serviceファイルを使える状態にすることで可能です。

##serviceファイル作成
serviceファイルは/etc/systemd/system/のディレクトリに作成してください。よって以下のコマン

元記事を表示

Pythonのbase64エンコードにおいてjson.dumpsでハマったこと

## はじめに
APIなどの作成でbase64でエンコードしたデータを返したいことありますよね?
今回はそこでハマったので書き残しです.
思考がだらだらと書かれているため端的に書くと

“`python
data_bytes = bytes(‘アカネチャンカワイイヤッタ’, ‘utf-8’)
data_encode_bytes = base64.b64encode(data_bytes)
data_encode_str = data_encode_bytes.decode(‘utf-8’)
“`
この3行が成果です.

## 準備したデータ
PythonではDict型とJsonは同じ形をしているため,加工しやすいDict型で処理したのち最後にJsonに変換します.

“`python
akane_dict = {
‘kind’: ‘voiceroid’,
‘data’: ‘アカネチャンカワイイヤッタ’
}
“`
いろいろ詰まってますね.今回は“`’data’“`をbase64でエンコードして“`json.d

元記事を表示

純粋なインスタンスメソッドを定義するデコレータ(@pureinstansemethod)

#前置き

Pythonだとクラスメソッドや静的メソッドを`@classmethod`や`@staticmethod`などのデコレータを使って定義できる。
一方で、普通のメソッド(インスタンスメソッド)は普通に定義すれば良いが、実は二通りの呼び方ができる:

“`python
class MyClass:
def mymethod(self,x):
print(x)

x = 1
myclass = MyClass()

myclass.mymethod(x) # 普通の使いかた
MyClass(None,1) # !?!?
“`

二番目の使い方は定義した関数をそのまま使う方法(一番目の引数は`self`だが、関数中では使われないので`None`でもいい)。

しかし、インスタンスメソッドなのにもかかわらずうっかりクラスメソッドみたいに呼んでしまったりするとわかりにくいエラーの原因になる。

例えば、下のように複数引数を取る場合:

“`python
class MyClass:
def mymethod(self,*x):

元記事を表示

[Atcoder][C++]コンテスト中に使えるテスト自動化ツールを作ってみた

趣味でAtcoder(競技プログラミング)やってますが最近伸び悩んでいます。
コンテスト中のテスト作業を自動化したらいい感じになるんじゃないかと思い、
テストの自動化ツールをpythonで作ってみました。

## 1.実現したこと
* Atcoder問題ページからテストケースをサーバーに負荷を掛けない範囲で自動取得する
* 作成したコード(c++)を提出前にビルド、採点し、AC,WA,TLE等を判定する
* 自分で独自にテストケースを追加し、自動採点の対象に追加する

**ソースコード**
https://github.com/tks3210/autoJudge

**動作環境**

* OS: Windows10 / Mac(Mojave 10.14.6)
* C++コンパイラ: gcc(多分clangでも動く)
* Python:3.7.1
* requests, bs4, lxmlを使用

## 2.動作例

* 自動テスト
* 正誤判定(WA,TLE,CE)
* 自動認証(コンテスト中のログイン自動化)
* テストケース追加

### 2.1 自動テスト

**>pyt

元記事を表示

OTHERカテゴリの最新記事