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

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

OpenPyXL の問題点と解決策について(Ver 3.0 版)

#はじめに

この記事は Ver 3.0.2 以前のものを対象としています。OpenPyXL は日々改良されていますので、今後、ここで書かれた問題が解決されていることもあります。

#OpenPyXL(2.6, 3.0) の問題について

OpenPyXL は、まっさらの新規ブックの状態から Python コードだけで Excel シートを力技で作成することもできますが、一から作成するとコードの記述が増えて見づらくなりますし、コードとデザインを分離しているほうがメンテナンス上も有利ですので、ある程度デザインされた雛形 Excel ブックを OpenPyXL で読み取んで、必要なデータを設定していくのが定石かと思います。

しかし、OpenPyXL は Excel とは全く異なる仕組みで動作するものですので、Excel VBA では簡単にできるのに OpenPyXL ではできない・難しいこともあります。

以下の条件を満たすもの以外については、雛形 Excel ブックを使った処理は現在の OpenPyXL だけでは実装するのは難しいことが多いです。

– 画像やシェイプを持たないもの

元記事を表示

Pythonistaが伝える「ここがヘンだよGo言語」

[VISITS Advent Calendar](https://qiita.com/advent-calendar/2019/visits)も残りついに一週間を切ってしまいました。

見返してみると、とても幅広い分野の記事が書かれていて、社内の人間であっても「この人、こんな技術を持ってたんだ」のように驚かされることが多い毎日でした。

私にとっては2019年Advent Calendarの締めの記事となります!

# TL; DR

弊社のいくつかのプロダクトで **Go言語** でAPIサーバが実装されています。

昔からPythonばかり触ってきた筆者が、Go言語を一ヶ月半ほどですが業務でみっちり書いてわかった **Go言語とPythonの違い**について記事にしてみることにします。

題して、

**Pythonistaが伝える「ここがヘンだよGo言語」**

とりあえず某番組のタイトルを~~パクt(ry~~ リスペクトしてキャッチーなタイトルにしてみました(何

対象読者は次のように設定しています。

– **Pythonはよく使うけど、Go言語を書いたことがない人**

元記事を表示

データ収集からAI開発、Webアプリ公開まで全てPythonで済ませた話(3.AI開発編)

# はじめに
今回の記事はシリーズ物です。他の記事はこちら↓
[0.設計編(キーを判別するAIとは?)](https://qiita.com/hanata/items/38163b6dddbc2ec8812e)
[1.データ収集(クローリング)](https://qiita.com/hanata/items/cbc6cc377321a2880f5b)
[2.データ整形(スクレイピング)](https://qiita.com/hanata/items/692f98ee83295614599f)
[4.Djangoを用いたWebアプリ開発](https://qiita.com/hanata/items/968040a366c9bb1dbc93)

開発から3-4ヶ月経ってしまいました。
開発当時はデプロイすることが目的になっていて、肝心のモデル選びに関してはあまり時間を割いていませんでした。

というわけで今回は様々なアプローチを試して、精度の比較を行いたいと思います。機械学習を使わず、ルールベースでの精度も求めてみます。

# タスク確認
今回のタスクは、楽曲のコード進行からキーを判

元記事を表示

Kaggleの特徴量管理をPostgreSQLでやったら思ったより捗ったので,Dockerで誰でも使えるディレクトリを作ってみた

この記事は [Kaggle Advent Calendar 2019](https://qiita.com/advent-calendar/2019/kaggle) の 19 日目の記事です。

どうもこんにちは、[kiccho1101](https://github.com/kiccho1101)と申します!
人生で初めて記事を書きます!よろしくお願いします!

## はじめに

今回は、Kaggleの特徴量管理をPostgreSQLでやってみたら思ったよりも捗ったので、紹介したいと思います。

作ったディレクトリはこちら: [https://github.com/kiccho1101/datascience-template](https://github.com/kiccho1101/datascience-template)
↑READMEには[Titanicコンペ](https://www.kaggle.com/c/titanic)のデータを使った使用例が書いてあります。

## 特徴量管理とは?

Kaggleコンペでは、(以前の)僕のように何も考えずにコードを書きまくっ

元記事を表示

Kaggleのハローワールド、タイタニック号の生存者をロジスティック回帰で予測してみるーモデリング編ー

# 0. はじめに
– 背景:ついにKaggleに登録したので、とりあえずやってみた。(遅い)
– 主旨:データを準備して、分析して、モデリングして、予測して、結果評価の一連の流れを紹介する(この記事はモデリングまで^^;)。数学的な細かいところとか、妥当性とか厳密なところは一旦スルーします。(そのうちロジスティック回帰の解説は書きます)
– 環境:Kaggle Kernel Notebook

# 1. データ分析の準備
– タイタニックの生存者データを入手する
– Kaggleを始めたらとりあえずやる[例のコンペ](https://www.kaggle.com/c/titanic)からデータを入手する
– Kaggle KernalでNotebookを作成する
![kernel.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/468508/ddb495c0-2e1d-2b33-516c-d7f9adcb18ba.png)

– データを読み込む
– コンペのページからNotebo

元記事を表示

学習記録 その7(11日目)

#学習記録(10日目)
勉強開始:12/7(土)〜
使用書籍:大重美幸『詳細! Python3 入門ノート』(ソーテック社、2017年)

【手書き文字の分類(Ch.16 / p.396)】 から再開(10日目)、
【ボストンの住宅価格分析(Ch.16 / p.408)】 まで終了(11日目)【読了】

###アヤメの分類
・hold out(学習データをある比率で分割し、訓練データとテストデータに分けること。)
 ただし、データの並びが均一でない場合はよい学習成果が出ない。
 その場合は shufflesplit を用いると、分割に合わせて要素のシャッフルが行われる。
・shufflesplitを用いて行う分析方法の1つに crossvalidation がある。
 手元のデータ数が十分でない時に、学習に使用するデータを毎回分割、違う塊を選択し、繰り返す方法

###ボストンの住宅価格分析
・相関関係を予想する「回帰」処理を実施。
・書籍通りに進めていくと、どうもエラーが出る場所を発見。
 モジュールがインポートされていないことによる関数の未定義だった。
 最後のまとめにはちゃんと記

元記事を表示

svmモジュールのSVCについて(数学は抜く。)

皆さんこんばんわ。
12/19の文を書いていきます。
今日は用事があって遅くなりましたね。。。

今日は昨日勉強した直線SVCモデルの分類をまとめていこうと思います。

#分類の目的
![2019_12_19_blog.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/255565/087e7f8f-1192-d5ba-2dd1-59b5410065a3.png)

上の写真を見てください。
分類とはこの青の点とオレンジのバツを分ける線を自動的に見つけることです。
2次元だと人間にとってとても簡単ですよね?
SVCモデルは高次元の場合でも分ける為の式を求めれられるらしいので凄いですよね。
さぁ、これが何に役に立つの?と思った方も多いでしょう。
下の画像はいかがでしょうか?

![2019_12_19_picpng.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/255565/01665bdd-ebeb-09d0-1164-08

元記事を表示

この処理Perlでどう書く?

[この処理Pythonでどう書く?](https://www.m3tech.blog/entry/python-snippets) の二番煎じです。

実際perlだったらどう書くかなと考えながら練習がてら。できる限りCOREモジュール縛り。

# この処理Perlでどう書く?

## 標準出力・標準エラー出力

“`bash
# 標準出力にメッセージ
echo ‘HELLO’

# 標準エラーにメッセージ
echo ‘ERROR!’ >&2
“`

“`perl
use strict;
use warnings;

# 標準出力にメッセージ
print “HELLO\n”;
# もしくは v5.10 以上を use した上で say
use v5.10;
say “HELLO”;

# 標準エラーにメッセージ。
print {*STDERR} “ERROR!\n”;
# もしくは warn を使う。最後に改行がなければ警告の位置も教えてくれる。
warn “ERROR!\n”;
“`

## ファイル関係

### パス操作

“`bash
name=”$(basename

元記事を表示

NHKから国民を守る党から国民からNHKを守る党を守る党からNHKを守る党は矛盾しているか?

# お前は何を言ってるんだ
先に[この記事](https://qiita.com/MirrgieRiana/items/da7dade622770a04d8f7)をお読みください。

本記事では、元記事で問われていた「政党名を与えたとき、世界が矛盾しているか否かを判定するアルゴリズム」を Python で実装していきます。

# 数学的に定式化する

NHKを`0`, 国民を`1`とすると、「NHKから国民を守る党」は「0から1を守る党」と表すことができます。

それを更に省略してリスト`[0, 1]`で表すことにすると、全政党が長さ2のリストで表現できます。

例えば、「国民からNHKを守る党から国民を守る党」は`[[1, 0], 1]`で表現され、
「NHKから国民を守る党から国民からNHKを守る党を守る党からNHKを守る党」は`[[[0,1],[1,0]],0]`と簡潔に表すことができます。

そして考えうる全ての政党(矛盾するものも含め)がこのように表記できます。

# 友好性の公理

一般に、政党`[x, y]`が実在するとき次が成り立っていることが期待されます。

1. 政

元記事を表示

pygameで風船割りゲーム

##はじめに
[前回の投稿](https://qiita.com/TN0321/items/d0ba918eefa5d9c7e587)では、tkinterを使ったターン制の三目並べを作成したので、今回はpygameを使った常に画面が更新されるものを作ってみました。
タイトルで風船割りゲームと書きましたがそこまでのゲーム性はありません。笑
ただ、今後ゲームを作る際に使えそう?な処理は学べたかなぁ。。。と思います。
例によって、欲しい機能を寄せ集めたキメラティックコードなので読みやすさは今後の課題ですね。

|今回の完成品|
|:—:|
|balloon_game.gif|
一番最後に今回のコード全体像を載せてあります。

##表示画面作成
まずは基盤となる画面作成からですね。

“`python
import

元記事を表示

Alpine Linux 3.10.3 Python3 NLTKを実行する

# 実行環境

docker-compose 1.23.2
VirtualBox 5.2.20
NLTK 3.4.5

# ディレクトリ構造

“`
/
├docker/
└ Dockerfile
├src/
└ test.py
└docker-compose-yml
“`

## Dcokerfile

“`
FROM python:3.7.5-alpine

# https://www.nltk.org/data.html
# > The downloader will search for an existing nltk_data directory to install NLTK data.
RUN mkdir /usr/share/nltk_data

RUN pip3 install nltk && python3 -m nltk.downloader all
“`

`python3 -m nltk.downloader all` を実行してダウンロードするライブラリを `/usr/share/nltk_data` に保存します。

元記事を表示

Numpy (n,)と(n,1)表記の違いについて【横ベクトルか縦ベクトルかの違い】

## はじめに

Numpyのndarray配列のshapeを見ると、(n,1)や(n,)といった表記を目にします。「1次元配列なら【,】も【1】も不要なのでは?」と思って調べてみました。
##結論
### (n,1)は横ベクトルの配列(ただの1次元配列)
###(n,)は縦ベクトルの配列
![コメント 2019-12-19 191200.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/526723/8c19ab7f-63ef-6305-4dc1-5d395d6737d7.png)
※1次元の配列は.Tでは転置に変換することができないので、reshapeを用いる必要があります。

元記事を表示

光彦「ボクなら自己紹介で犯人わかりますよ!」

# プロローグ
みなさんこんにちは。
今日は、ボクが考えた事件解決の助けとなる画期的な発明を紹介したいと思います。
それは…事件が起きる前の容疑者たちの会話を集めて、犯人と被害者を予測するシステムです!
AIについてはまだよくわからないけど、少年探偵団に不可能はありません!

# 目的
* 事件が起きる前に犯人と被害者を予測する

# 条件
* 対象とする事件は殺人事件
* ストーリー開始から事件が起きる前までの会話から犯人と被害者を予測する

# システム概要
* 言語はPython
* 機械学習に使うライブラリはkeras
* 形態素解析エンジンはjanome

# 実装の流れ
システム作成の手順を簡単に説明します。

* データ収集
コナンの単行本からひたすらデータを収集します。
事件が起きるまでの会話を全部拾うのはきつかったので、吹き出し10個分を学習データとして利用することにしました。
また、会話に登場する人物名が判定に影響を与えないように、全ての人物名を「田中」に変換しました。

* 形態素解析
収集したデータは日本語の文章となりますが、このままでは学習データとして使えない

元記事を表示

手認識が実用レベルに到達した件

MediaPipe(Google)のHandTrackingで、Issueで話題になっているジェスチャー実装について書きます。

# こんな感じで動きました

百聞は一見にしかずということで先に検証結果です。
![output.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/35973/c3a119b0-364d-c5ea-dca4-52d3242c34f0.gif)

# MediaPipe

今年6月のCVPR2019でMediaPipeの発表があり、
そのアプリケーションのひとつとしてHandTrackingが公開されました。
MediaPipeはMLパイプラインと呼ばれるコードを書かなくても
ビジュアライズツールだけでMLアプリケーションを構築するフレームワークです。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/35973/96f2923d-9881-e53c-1faa-9d0ecb177cd0

元記事を表示

pythonっぽいコードを書く

Youtubeで[Raymond Hettingerさん](https://twitter.com/raymondh)(python core developper)がpythonでよくあるミスと正しい書き方を解説する[動画](https://www.youtube.com/watch?v=OSGv2VnC0go)を見つけたので、まとめます。
動画では、主にpython2を例に挙げてますが(2013年の動画なので)、ここではできるだけpython3に変換しました。今ではすでに古い書き方になっている場合があるので適宜調べながら使ってください。

## Loop

– できるだけiteratorを使う

#### シンプルなloop

“`python:だめな例
for i in [0, 1, 2, 3, 4, 5]:
print(i**2)
“`
リスト全体をメモリにおいてしまう。

“`python:良い例
for i in range(6):
print(i**2)
“`
`range`がiteratorとして一つずつ生成するので、メモリを無駄に使わない。

>

元記事を表示

【Python】*args **kwrgs って何だろう

## 01.本記事に書くこと
– 関数のパラメータに定義する`*`や`**`の意味と、その使い方

時間が経ってしまっても素早く思い出せるように、ここに整理したいと思います。

## 02.`*`と`**`は可変長引数を受け取るパラメータにつけるものである
関数のパラメータに`*args`や`**kwargs`と書いてあるコードを見かけた。
これは可変長引数を受け取るパラメータに記述されるもので、関数呼び出し時にパラメータに渡す引数の数を、固定ではなく任意の数にできるようになる。

可変長引数とは、通常1つしか引数が指定できないところ、任意数の引数を指定できるようにしたもの。

*〜普通はダンボール1つにつき1つの品物しか入れられない。
しかし、可変長引数ならば1つのダンボールにつき、いくらでも品物を入れることができる上に、それらは1枚のプチプチでパックされる。〜*

“`python:例
def kansu(*args):
print(f'{args}を受け取った!’)

kansu(‘Apple’, ‘Banana’, 100)
# (‘Apple’, ‘Bana

元記事を表示

Pythonで入力された整数を素因数分解 ver.1

#はじめに
 以前作成した「[Pythonで入力された数字が素数か判定するプログラム](https://qiita.com/totusuna/items/9ae6ada058fa4e9cd6f9)」に、合成数だった場合に素因数分解を行ってくれる機能を追加してみました。

#プログラムの原理
 小学生の時に習った素因数分解のやり方を思い出して、小さい素数から順に割り続ける方針にしました。
 具体的には、SymPyのprimerangeを用いて素数リストを作成し、そのリストから割り切れる数で割り続けます。そして、素数リストの最後まで割り算を行ったら終了としました。

#実際のプログラム
“`Python
from sympy import primerange
inn = n = int(input(“素数か確かめたい数を入力してください。>> “))
primlist = list(primerange(2,(inn+1) / 2)) #1
yaku = []

for i in primlist:
while n % i == 0: #2
n /= i

元記事を表示

PythonでCSV,TSVファイルをSQLiteにインポートする方法

# はじめに
![sqlite-183454_640.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/550851/ff378a8a-eec7-fc35-5ef5-790b2b515490.png)

PythonでSQLiteのDBにCSVやTSVデータをインポートしたい!
そんな方のための、スクリプト一発でインポートする方法の解説です。

SQLiteとはなにか、どうやってセットアップするのか等は以下の記事を参考にしてください。
[PythonとSQLiteで実現するローカルでお手軽SQL環境作成術](https://qiita.com/mu-tech/items/4cfb22670232b671700d)

# インポート方法
使い方はこの下の「解説」にて。
## スクリプト

“`import_data_to_sqlite.py
import sqlite3
import csv
import os

#######↓ここのパラメータを変える↓#######
dbname = ”
targe

元記事を表示

PythonとSQLiteで実現するローカルでお手軽SQL環境作成術

# はじめに
– ローカルにあるCSV(or TSV)ファイル、キー列でJOINしたり重複確認とかしたいなぁ…
– でも自由気ままに使えるDBなんてないし…
– そこまででかいデータでもないんだから、お手軽な方法ないかしら…

このようなことでお悩みのあなたへ、SQLiteというDBを使って、ローカルで簡単にDBを立ててデータをインポートしSQLを発行できる方法をご案内します。

**※テキストファイルをインポートする方法については以下の記事にてご紹介!**
[PythonでCSV,TSVファイルをSQLiteにインポートする方法](https://qiita.com/mu-tech/items/4deacbd844cda61fa9e6)

# SQLiteってなに?
![sqlite-183454_640.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/550851/ff378a8a-eec7-fc35-5ef5-790b2b515490.png)

– インストールも簡単で軽量なDBMS

元記事を表示

東京大学大学院情報理工学系研究科 創造情報学専攻 2007年度冬 プログラミング試験

2007年度冬の院試の解答例です
※記載の内容は筆者が個人的に解いたものであり、正答を保証するものではなく、また東京大学及び本試験内容の提供に関わる組織とは無関係です。

### 出題テーマ
– 経路問題

### 問題文
※ 東京大学側から指摘があった場合は問題文を削除いたします。
Screen Shot 2019-12-19 at 19.53.37.png
Screen Shot 2019-12-19 at 19.53.48.png

##

元記事を表示

OTHERカテゴリの最新記事