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

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

プログラミング初心者の俺がGeoDjangoで業務効率化地図アプリを作りきった話

# はじめに
本記事はPythonを使った開発フレームワーク、Djangoを使ってウェブアプリPublic Mappingをプログラミング初心者の私が開発した、開発記録のうち「経緯編」です。

アプリの構成、開発プロセスの詳細については[「開発後記編」](https://qiita.com/hiro-ishi/items/823a4301272348f835cb)をご参照ください。
[アプリはこちらから](http://hiroshi55.pythonanywhere.com)
[公開リポジトリはこちら](https://github.com/hiro-ishi/publicmapdeploy)

# コンセプト:どんなアプリ作ったの??
– 位置情報とメモを地図上で簡単に記録できて
– どこからでも参照・編集ができる(webアプリ)
– 印刷しても一目でわかる

少人数チームでの運用を想定した地域の情報共有メモアプリを作成しました。
![app_overview.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.

元記事を表示

多層パーセプトロンでMNIST(手書き数字)の画像分類を行う

#はじめに

 koshian2さんが書かれた「モザイク除去から学ぶ 最先端のディープラーニング」内の演習問題として、多層パーセプトロンによるMNIST分類がありました。今回、自身の理解を深めるためにまとめたいと思います。
https://qiita.com/koshian2/items/aefbe4b26a7a235b5a5e

要点としては下記になります。

+ 多層パーセプトロンでのMNISTの分類
+ 画像分類での説明変数の意味
+ 中間層での活性化関数
+ タスクによる損失関数の違い

#多層パーセプトロンとは

 多層パーセプトロンとは、入力層と出力層の間に**中間層**と呼ばれる層があるネットワークのことです。

![002.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/567823/546afebb-e52d-8e31-1fd1-8b77b0f5d396.png)

 回帰を行う際は最小二乗法、分類を行う際はロジスティク回帰という手法が知られています。これら手法はデータ数を増やしたと

元記事を表示

discord.py入門(2)

# はじめに
discord.pyの非公式のサーバーを運用しています(開発者の方もいますが)。
ここでは質問も受け付けています。また、**長期的にサポートが欲しい方**向けに、個人チャンネルを作成しそこでサポートを受けることもできます。
個人サポートを受けたい方は、下の招待urlから入り、`@すみどら#8931`にDMをお願いします。
https://discord.gg/KPp2Wsu **この記事についての質問もこちらにお願いします**

# この記事について
この記事はdiscord.pyについて段階を踏んで勉強していくための記事になります。
まず始めに基本の書き方を学び、次に発展的な内容を学びます。
**【シリーズ】**

[discord.py入門(1)](https://qiita.com/sizumita/items/9d44ae7d1ce007391699)
[discord.py入門(2)](https://qiita.com/sizumita/items/b37e74fca41d98077a18)

# 注意
**この記事は少しでもPythonができる人向けになり

元記事を表示

discord.py入門(1)

# はじめに
discord.pyの非公式のサーバーを運用しています(開発者の方もいますが)。
ここでは質問も受け付けています。また、**長期的にサポートが欲しい方**向けに、個人チャンネルを作成しそこでサポートを受けることもできます。
個人サポートを受けたい方は、下の招待urlから入り、`@すみどら#8931`にDMをお願いします。
https://discord.gg/KPp2Wsu **この記事についての質問もこちらにお願いします**

# この記事について
この記事はdiscord.pyについて段階を踏んで勉強していくための記事になります。
まず始めに基本の書き方を学び、次に発展的な内容を学びます。
**【シリーズ】**

[discord.py入門(1)](https://qiita.com/sizumita/items/9d44ae7d1ce007391699)
[discord.py入門(2)](https://qiita.com/sizumita/items/b37e74fca41d98077a18)

# 注意
**この記事は少しでもPythonができる人向けに

元記事を表示

一番簡単なマルチラベル文書分類の方法やってみた

## 文書分類とは
NLPのタスクの中に文書分類というものがあります。
これは、ラベル付けされた文書に対し、そのラベルを推定するものです。

文書分類は文書に付けられたラベルの性質によって以下の2つに大きく分けられます。

– トピック分類 (topic classification)
– 文書にそのトピックについてのラベリングがされたもの
– ニュース記事に政治・スポーツ・エンタメなどのラベル付けされたものをよくみる
– 2分類のものもあるし、マルチラベルのものもある(マルチラベルの方が多そう)
– ニュース記事のリコメンドなどに応用される

– 感情分析 (sentiment analysis)
– その文書が肯定的であるか否定的であるかについてのラベリングされたもの
– 2値分類もあるし、それ以上の数に分類されたりもする(positive, neutral, negativeの3ラベルなど)
– マーケティングリサーチとかに使われたりもする

## 文書分類のモデル
これらの文書分類問題を解こうとするとき、その方法

元記事を表示

MariaDB Connector/Python を Ubuntu 19.10 Eoan Ermine で使う

## 概要
– Ubuntu 19.10 Eoan Ermine に MariaDB Connector/Python をインストールする
– Python による MariaDB Connector/Python を使用したサンプルコードを示す

## 今回の環境

– Ubuntu 19.10 Eoan Ermine
– MariaDB 10.3.22
– Python 3.7.5
– MariaDB Connector/Python 0.9.54-beta

## MariaDB Connector/Python とは

MariaDB Connector/Python は MariaDB や MySQL にアクセスするための MariaDB 公式ライブラリ。 Python DB API 2.0 (PEP-249) に準拠している。

[Python \- MariaDB Knowledge Base](https://mariadb.com/kb/en/mariadb-connector-python/)

> MariaDB Connector/Python enables

元記事を表示

[Python] pyaudioでsin波をバックグラウンド再生するクラスを作った

(20/03/07 11:29編集)
ご指摘を受けて、変数の宣言を変更しました。他に、createData関数内でエラーメッセージを一度のみ表示するよう変更しました。

# はじめに
Pythonで、ほかのタスクを実行しながらsin波を再生しようとしたのですが、そのようなライブラリが見当たらなかったので、threadingを使って作ってみました。
マイクインプットを返す関数もオマケとして入ってます笑
# Pythonコード
“`Python:sinwave.py
# -*- coding: utf-8 -*-
import threading
import time
import pyaudio
import numpy as np
import struct

class SinWave():
# settings
INPUT = True
OUT_FORMAT = pyaudio.paInt16
IN_FORMAT = pyaudio.paFloat32
RATE = 44100
CHUNK = 1024

L = 1

元記事を表示

新型コロナウイルス対策としての休業の効果をSEIRモデルで検証

# はじめに
 新型コロナウイルス(COVID-19)に対する日本の状況は2020年3月5日現在、諸外国から入国規制がなされるなど、かなり深刻に受け止められています。政府による全国小中高校の一斉休業要請がなされ、一部でその効果が疑問視される声があるものの、一方で、科学的な根拠を示すことが難しいことに政治判断が必要なことも理解できます。
 この記事は、感染症数理モデルの一つであるSEIRモデルを使って、ある学校・事業所(1000人規模とする)を一定期間休業することによる感染のピーク制御が果たして可能なのか検証したものです。
 ただし、この記事はあくまで限定的な仮定のもとでのシミュレーションであり、科学的な確証を与えるものでも、学術的なエビデンスを与えるものでもありません。あくまで、参考になるかもしれないし、間違っているかもしれないものですので、一切の責任は負いかねます。
 なお、大部分のプログラムは[こちらの記事] (https://qiita.com/Student-M/items/4e3e286bf08b7320b665)を参考にさせて頂きました。
# 前提条件
SEIRモデルの詳細

元記事を表示

学習記録#2

#やったこと
Udemy「PythonによるWebスクレイピング〜入門編〜【業務効率化への第一歩】」の14−16(§5の終わりまで)

– formatの使い方
– url末尾が/?page=1とか2となっているページの情報をまとめて取得する方法
– スクレイピングした情報はstr型
– 2次元の表を作るのにPandasが便利

.format()で波かっこで囲まれた部分に引数を埋め込める。→下みたいにすると、page=1, page=2, page=3ってなる。

“`Python:.formatの使い道
for page in range(1,4):
‘page={}’.format(page)
“`
これをbrowser.get()の引数に使えば連番ページの情報を取得できる。
#読んだもの
https://qiita.com/thesugar/items/1cd91eb3f5de7d390490
環境構築するときに読めばよかったかも
#その他
倍速で動画を見て内容を掴む→同じ動画を等速で見ながらエディタを叩くで勉強した。

元記事を表示

MariaDB を Ubuntu 19.10 Eoan Ermine に インストールして Python でデータ操作

## 概要
– Ubuntu 19.10 Eoan Ermine に MariaDB をインストールする
– データベースを作成する
– データベースの管理者アカウントとアプリケーション用アカウントを作成する
– Python スクリプトを作成してデータを操作する

## 今回の環境

– Ubuntu 19.10 Eoan Ermine
– MariaDB 10.3.22
– Python 3.7.5 + MariaDB Connector/Python 0.9.54-beta

“`
$ uname -mrsv
Linux 5.3.0-40-generic #32-Ubuntu SMP Fri Jan 31 20:24:34 UTC 2020 x86_64
“`

## MariaDB のインストール

mariadb-server と mariadb-client パッケージをインストールする。
mariadb-server をインストールすれば mariadb-client は依存関係により一緒にインストールされる。

参考: [Ubuntu – eoan の mariad

元記事を表示

MATLAB歴3年の私が、新しくPythonを勉強した話

#1. Pythonを学ぶ経緯
私は、今年の4月に就職を控えた理系の大学院生です。
研究室生活の3年間、MATLABを使って、シミュレーションを行ってきました。

これまでは、大学がライセンスを保有するMATLABを使ってきましたが、
社会人になると、MATLABを利用できなくなってしまうので、
フリーで利用できるPythonを、先日、新しく学ぶことを決めました。

まず初めに横浜の有隣堂に行き、Pythonの参考書を全て手にとって、
自分に合っていそうな参考書を選びました。

そうして選んだのが、西晃生先生が書いた
[『これ以上やさしく説明できない!Pythonはじめの一歩』](https://www.natsume.co.jp/books/e/10575)
です。分かりやすいのでオススメです!

#2. Pythonを学んで思ったこと
実際に、Pythonを学んで私が思ったことを書いていきます。

率直に言うと、MATLABと似ていて学びやすいなと思いました。
インタプリタ型で、且つ、それほど難しい概念が出てきませんでした。

ただその中でも、苦戦したことが2つ程あり、それらを紹介

元記事を表示

PythonでSlackに気圧情報(BeautifulSoupで取得)をグラフ付きで送りたい(+Google Spread Sheetで管理したい)2

## 第一話

[PythonでSlackに気圧情報(BeautifulSoupで取得)をグラフ付きで送りたい(+Google Spread Sheetで管理したい)](https://qiita.com/hungrykirby/items/a4b945ed5770aea223c0)

## 今回やること

– [直近の気圧を取得](https://qiita.com/hungrykirby/items/a4b945ed5770aea223c0)
– Slackに通知 <= この記事 - Google Spread Sheetに保存 ## 気圧をSlackに送信する `Slack API` の導入の記事はたくさんあるので割愛しますが、なんかけっこうUIが変わっていてしばらくはまったので、メモしておきます。くだらないのでQiitaの記事にはしていません…。

元記事を表示

将来の売上予測への挑戦:⑤Prophetによる時系列分析

# はじめに

前回まで、時系列分析のARIMAモデル等を用いて、将来の売上予測を行ってきました。
色々工夫をしているつもりなのですが、調整できるパラメータが限られていて、中々精度が上がりません。

– [将来の売上予測への挑戦:①時系列分析って何?](https://qiita.com/CraveOwl/items/e5c2dc81af7ae702424c)
– [将来の売上予測への挑戦:②PyFluxを用いた時系列分析](https://qiita.com/CraveOwl/items/5cc03855ca801d5657c9)
– [将来の売上予測への挑戦:③PyFluxのパラメーターチューニング](https://qiita.com/CraveOwl/items/dfbd159e2def1a25051b)
– [将来の売上予測への挑戦:④StatsModelsによる季節性を考慮した時系列分析](https://qiita.com/CraveOwl/items/b2a6f06983b8e0319e24)

そこで、ARIMAモデルではなく、今流行りのDeep Learningでも

元記事を表示

Python 時系列 質問です

時系列の価格表で
高 安
1●年月日 時間 高値 安値
2●年月日 時間 高値 安値
3●年月日 時間 高値 安値
4●年月日 時間 高値 安値
5

1が一番古く、2,3,4…は1分毎の高安値データとして、以下をしたい場合のプログラミング方法をご教授願えますでしょうか

①1の高安値をまず、高1,安1と定義

②時系列順に追って最初に高値<高1、安値<安1になる高安値を高2、安2と定義

③―1)②が出現したあと
もし、高1>高値>安2,安2>安値になる高安値が出現した場合、その高値を『は』、安値を『に』、高1を『い』、安2を『ろ』と定義し、別の1つのシート(★)に『い』『ろ』『は』『に』に該当する日時(もしくは元データの行番号)と値の抽出

例えば

『い』『ろ』『は』『に』
年月日時間 高1(数字) 年月日時間 安2(数字) 年月日時間 高値(数字) 年月日時間 安値(数字)

③―2)②が出現したあと
もし、高値>高1>安2>安値になる高安値が出現した場合、高値を『い』と定義し、
上記③―1)で作成したシートとは別の

元記事を表示

DCGANによるMNIST画像生成プログラム作成(tensorflowチュートリアル)

# GAN及びDCGANとは

 深層学習の分野で無くてはならなくなっているアルゴリズムであるGAN(Generative adversarial networks)について今回学びました。
 GANとは、2014年にlan Goodfellowというアメリカの研究者によって生み出された技術で、2つのネットワークを敵対的に訓練させていくことで、本物と見分けがつかないようなデータを生成していくネットワークのことです。
 日本語では敵対性生成ネットワークと直訳されていますが、**名前が厨2っぽさがあり、カッコよくて好きです。**

 tensorflowのURLでチュートリアルとして挙げられているDCGANについて私なりに解釈したものを今回まとめました。
https://www.tensorflow.org/tutorials/generative/dcgan?hl=ja
 このチュートリアルでは、DCGAN(Deep Convolutional GAN)という手法でMNIST(手書き数字)を生成させるアルゴリズムを取り扱っています。

 DCGANとはICLR2016(AI分野の会議)

元記事を表示

クラスのインスタンス変数のグローバル変数化

クラスのインスタンス変数をグローバル変数と同じように使えるように、PythonのSingletonパターンで作成してみます。
***
“`python:singleton01.py
class MySingleton(object):
__obj = None
__init_flg = True

def __new__(cls, *args, **kwargs):
if cls.__obj is None:
cls.__obj = super().__new__(cls, *args)
return cls.__obj

def __init__(self):
if self.__init_flg:
self._x = 0
self.__init_flg = False # 2回目以後初期化されないように

@property
def x(self):
return self._x

@x.

元記事を表示

いますぐにPythonを始めたい人のためのモダンな環境構築手順

## はじめに
– Pythonの環境構築は選択肢がいろいろあって何がなんだかわからない
– Anacondaをインストールすれば速いが、いろいろデメリットもあり、Anacondaを使わずにプロジェクトごとにバージョン管理、パッケージ管理をしたい場合もある
– 特にPythonの場合、Google Colaboratoryや外部の学習教材など環境構築不要で始められる機会も多いぶん、いざ自分で環境構築しようとなると「・・・あれ?どうすればいいんだっけ?」となることも(私がそうなった)
– また、例えばパッケージ管理についても、以前は requirements.txt という、使用するパッケージ名とそのバージョンを列挙したファイルを作成して管理するような方法が取られていたが現在はレガシーなやり方とみなされている
– みたいな状況も勘案し、なるべく最近の動向も踏まえて環境を構築したい
– 具体的には、最近アツいとされている poetry というパッケージマネージャを使う

## この記事の前提
– 対象は **Mac**。
– Python のバージョンマネージャとパッケージマネージ

元記事を表示

競プロはPyPyとPythonのどっちが良いの?

PythonでTLEになった時PyPyでACを取れたり、逆にPyPyでTLEになった時PythonでACが取れたりします。

# PythonでAC、PyPyでTLEになる例

[AtCoder Typical Contest 001のA問題](https://atcoder.jp/contests/atc001/tasks/dfs_a)では、深さ優先探索の問題があります。

そこで、以下のようなコードを書きました。

“`test.py
import sys

sys.setrecursionlimit(500*500)
def dfs(px,py):
if px < 0 or py < 0 or px > w-1 or py > h-1:
return False

if c[py][px] == ‘#’:
return False
if c[py][px] == ‘g’:
return True

c[py][px] = ‘#’

if dfs(px-1,py):
return True
if dfs(px,py-1):
return True

元記事を表示

打倒、Pythonのグローバル宣言

#global宣言
テーマはPython3のglabal宣言のスコープについて。
定義の部分が曖昧な理解だったため数時間無駄にしてしまったが、いろいろ調べて勉強になったので記録に残しておきます。

#失敗した例
すごく簡単に書くとこんなコード。あくまでサンプルです。

“`Python:sample.py
def func():
global x
x = 20
print(f’funcのx={x}’)

def main():
x = 10
func()
print(f’mainのx={x}’)

if __name__ == ‘__main__’:
main()
“`

どちらも20が出力されるかと思いきや。

“`text:bash
$ python3 sample1.py
funcのx=20
mainのx=10
“`
なんで??!!global宣言しとるやんけ!!とか思い数時間あれこれ調べたが解決。↓↓の通り。

###大事なのはスコープ
`global x`での宣言は下記2つを意味する。

– グローバルスコー

元記事を表示

複数の関数で状態を共有する方法まとめ

プログラミングをしていると、「複数の関数で状態を共有」したくなることがよくある。

このとき、何も考えずにグローバル変数を使ったり、ポインタをバケツリレーしたりするよりも、いろんな解法からベストを選べた方がよい。

そこで、複数の関数で状態を共有する方法を、メリット&デメリットとともに、思いつく限りまとめてみる。

サンプルコードとしてはPythonを使い、Pythonで書けないときにRacket(Schemeの一種)を使う。好きだから。

## グローバル変数

“`python
state = “initial state”

def fuga0():
# 状態を参照したのち変化させる
global state
print(f”fuga0: {state}”)
state = “another state”
return “result of fuga0″

def fuga1():
# 状態を参照する
print(f”fuga1: {state}”)

def hoge():
print(fuga0())

元記事を表示

OTHERカテゴリの最新記事