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

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

pythonの基礎: 条件と繰り返し

次は条件や繰り返しについて

# if文
日本語でもしという意味
プログラミングに置いてかなり重要な位置になります

“`python
# フォーマット
if # 第一条件

elif # 第二〜n条件

else # 第n条件まで以外
“`

“`python
# 使用例
#条件の後の「:」と、出力のインデントを忘れないように

n = 3
if n == 1:
print(“1番処理”)
elif n == 2:
print(“2番処理”)
elif n == 3:
print(“3番処理”)
else: # 上記条件式が全て成立しない場合
print(“上記以外の処理”)

# 出力: 3番処理
“`

## 比較演算子
基本条件嵌ればtrue
出なければfalsaを返します。

| コード | 内容 |
|:-:|:-:|
| a==b | 等しい |
| a!=b | 等しくない |
| a>b | aはbより大きい |
| a>=b | aはbと同じかそれ以上 |
| a

pythonの基礎: 出力編

思うところがあったので内容は改造して
再投稿しています。

# 基本

## 出力

“`python
print(“Hello World”)
# 文字列は””か”で囲む必要あり
“`

## コメントアウト

“`python
# 一行コメント

“””
複数行
コメントアウト
“””
“`

## 計算
|数式|コード|
|:-:|:-:|
| 足し算 | + |
| 引き算 | – |
| 掛け算 | * |
| 割り算 | / |
| 割った余り | % |
| 乗算 | ** |

# 変数

“`python
n=1
print(n)
# 出力: 1
print(n+2)
# 出力: 3
“`

## 使える変数名

“`
① 半角アルファベット(大文字、小文字)
② 半角数字
③ _(アンダースコア)
“`

## 注意点

“`
①先頭文字に数字不可
②printなどの関数名不可
③予約後(forなどのコード)不可
④日本語は好まれない
“`

## 削除
動作後の都合による削除

“`python
del 変数名

GPSマルチユニットSORACOM Edition で位置情報(Googleマップ)をLINEに通知する

#やったこと
GPSマルチユニットSORACOM Editionのデータを、SORACOM Funk経由でAWS Lambdaに送り、位置情報をLINE Notifyを使用して通知する。位置情報はGoogleマップのリンクで。使用する言語は、Python。

#GPS マルチユニット SORACOM Edition とは
以下、[公式サイト](https://dev.soracom.io/jp/gps_multiunit/what-is-gps_multiunit/)より引用
>GPS マルチユニット SORACOM Editionは、「位置情報(GPS)」「温度」「湿度」「加速度」の4つのセンサーと充電式バッテリーを内蔵し、 セルラーLPWAであるLTE-M通信がご利用可能なデバイスです。

詳細については、以下を参照ください。
[(公式)GPS マルチユニット SORACOM Edition とは](https://dev.soracom.io/jp/gps_multiunit/what-is-gps_multiunit/)
[GPSマルチユニット SORACOM Editionで

2020年における各Python処理系の状況

2020年1月1日をもってPython2系列のサポートが終了しました(一部の長期サポート環境を除く)。Pythonは完全にPython3時代に移行し、安定期を迎えているように思います。しかしながら、Pythonは何もCPythonだけではありません。JythonやIronPythonといった他の処理系の現状はいったいどうなっているのでしょうか。気になったので少しだけ調べてみました。

## CPython

![python-logo.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/235258/f987f941-25bc-0dff-f29a-60122f020d83.png)

[公式サイト](https://www.python.org/)
[リポジトリ](https://github.com/python/cpython)

言わずと知れた、オリジナルにして最も有名Python処理系です。C言語で実装されています。

2020年1月1日にPython2系列のサポート終了(EOL)を行いました。
2

アルキメデスが求めた円周率:√3を何故 265/153 で近似したのか?

#はじめに
アルキメデスが円周率の近似値を求める際に√3の近似値として265/153を使っていたとのことです。
[Wikipedia:円周率の歴史](https://ja.wikipedia.org/wiki/%E5%86%86%E5%91%A8%E7%8E%87%E3%81%AE%E6%AD%B4%E5%8F%B2)
何故、265/153を用いたのかは今や分かりませんが、265/153がどれくらい√3を近似できるかを調べる事でその必然性を探ってみました。
#√3≒265/153の求め方
アルキメデスは以下の不等式を使って段階的に√3を求めたと考えられているそうです。
[アルキメデスによる円周率の計算(平成12年)](http://cakravala.in.coocan.jp/verificationofpi.pdf)

“`math
a±\frac{b}{2a±1} < \sqrt{a^2+b} < a±\frac{b}{2a}\\ ``` 最初に $\sqrt{3}=\sqrt{2^2-1}$と置いて計算すると以下が得られます。 ```math \frac{5}{3} < \s

世界一売れている”Python Crash Course”って、どんな本?

# Table of Contents

1. [はじめに](#orgf45f314)
2. [Python Crash Courseの紹介](#orge0b0a69)
1. [結論](#org98c548b)
2. [本書の構成](#org187ab0b)
1. [Part I: BASICS](#org4b44223)
2. [Part II: PROJECTS](#org0154958)
3. [優れている点](#org4a3530e)
1. [説明がわかりやすい](#orgd793aef)
2. [豊富なハンズオン](#org86f5ab1)
3. [実践的なプロジェクト](#org87ed0e7)
3. [英語で技術書を読む](#orgd83e58a)
4. [終わりに](#orgbb3c216)

# はじめに

Pythonの推薦本を英語で検索すると、どのWebサイトでも大抵紹介されている[

StyleGAN2で未知のポケモンを生み出す[後編]

[前回](https://qiita.com/Takuya-Shuto-engineer/items/1e2750905f22a0b07287)は概要や生成結果を示しました.今回は実際にGTX1070で動かすためにStyleGAN2の公式実装から変更した点などを紹介します.

諸事情で学習済みモデルが吹っ飛んだので,その辺の注意も含めてかいておきます!

[StyleGAN2の公式実装](https://github.com/NVlabs/stylegan2)

# 公式実装の変更点

実際にいじったのは主にrun_training.pyとtraining/dataset.pyです.

モデルのデータはだいたい300MBくらいあってかなり重いので,保存頻度を考えないと容量が尽きて学習が終わります.僕の場合,途中で学習が止まった上にモデルを上書きする設定にしていたため空上書きされて二日分の学習済みモデルが吹っ飛びました.定期的に複数のモデルで保存することをお勧めします.

“`python:run_training.py
def run(…):

# 生成サンプルはt

pyenvで入れたjupyter notebookのフォント幅を等幅にする方法

jupyter使っててだんだんイライラしてくるのがフォント幅だと思います。

頑張って等幅にすることができたのでメモっておきます。
OSはMacです。

## ~/.jupyter/custom/custom.cssを編集する

ぐぐったらまず最初にここを編集しろって言われたんですよ。
でもだめだったんですよ。

で考えたんですよ。
「pyenvで入れてるからここじゃないんじゃね?」
って。

で、そこからハマったわけです。

色々試してみたんですけどね。。。

その結果。

最終的にいじるのは`~/.jupyter/custom/custom.css`でした!!

ただここに行き着くまでに僕は、

“`
pip install jupyterthemes
pip install –upgrade jupyterthemes
jt -t onedork -f inconsolata -T -N -cellw 90% -tfs 11
“`

とか叩いてたんです。(ググったらこれでいい感じなるって書いてあったんだもん)

これだけでいけると思ったんです。

実際テーマも変わって見た目

【機械学習】カーネル密度推定を使った教師あり学習 その3

# カーネル密度推定を使った教師あり学習

この記事は機械学習の初心者が書いています。
予めご了承ください。

1つ目の記事は[こちら](https://qiita.com/sorax/items/8663906fae41798a00b8)。
2つ目の記事は[こちら](https://qiita.com/sorax/items/644dbba1016af1a7ede5)。

この記事では、着想の背景を数式を用いて説明します。

## 確率密度と確率

カーネル密度推定はカーネル関数で確率密度関数を推定することでした。
それでは確率密度関数とは、一体なんだったでしょうか?

確率密度関数は***出やすさの分布***を表しています。
***事象Aについて、値xで確率密度が高い***とは***事象Aが起きたとき、そのときの値がxである確率が相対的に高い***ということです。
「事象A」を「ラベル0」と置き換えてみましょう。
「値xでは、ラベル0である確率密度が高い」とは「あるデータがラベル0だったとき、そのデータが値xである確率が相対的に高い」という意味になります。

ここで、確率密度≠確率

【Python】データサイエンス100本ノック(構造化データ加工編) 020 解説

##Youtube
[動画解説](https://youtu.be/ql3yHmorK1k)もしています。

##問題
P-020: レシート明細データフレーム(df_receipt)に対し、1件あたりの売上金額(amount)が高い順にランクを付与し、先頭10件を抽出せよ。項目は顧客ID(customer_id)、売上金額(amount)、付与したランクを表示させること。なお、売上金額(amount)が等しい場合でも別順位を付与すること。

##解答
“`:コード
df_amount_rank = pd.concat([df_receipt[[‘customer_id’, ‘amount’]] \
,df_receipt[‘amount’].rank(method=’first’, ascending=False)], axis=1)

df_amount_rank.columns = [‘customer_id’, ‘amount’, ‘amount_ranking’]

df_amount_rank.sort_values(‘amount_ranking’, ascending

アルゴリズム 体操21 LinkedList Cycle

# LinkedList Cycle

Screen Shot 2020-08-04 at 23.00.15.png

上の画像のように、LinkedListが、サイクルであるかどうかを判別する関数を記述します。

## Solution
LinkedListを走査するためのslowおよびfastポインターを利用します。 各反復で、slowポインターは1ステップ移動し、fastポインターは2ステップ移動します。

サイクルがない場合は、2つの結果が得られます。

1. LinkedListにサイクルがない場合、fastポインターはslowポインターの前にLinkedListの末尾に到達し、LinkedListにサイクルがないことを示します。
2. LinkedListにサイクルがない場合、slowポインターはf

女子プロゴルファーの顔診断AIを作ってみた③

#1. はじめに
[前回](https://qiita.com/ProgramWataru/items/58fe9370097107cc4150)学習モデルの作成まで行いました。

今回は、学習モデルを用いて実際のWebアプリケーションを作成してデプロイまで行います。

完成イメージはこんな感じ
スクリーンショット 2020-08-04 21.01.56.png

#2. Flaskを用いて作成

“`python:main.py
# モジュールをインポートする
import cv2
import os
from flask import Flask, request, redirect, url_for, render_template, flash
from werkzeug.utils import sec

Subprocessに標準入力できない…

# 問題

pythonの標準ライブラリであるsubprocessなるものが存在する。
これは、複数の実行ファイルを同時に実行できる代物だが、今回は実行ファイルへの標準入力で詰まった。

例えば以下のようなC++のファイルを作成し、exeにしたとする。

“`c++:sample.cpp

include
using namespace std;

int main(){

while(true){
int a;
cout << "input" cin >>a;
cout << a * 2; return 0; } } ``` まぁ、数字を受け取ってそれを2倍した数を表示するだけなのだが、これを常にwhileで実行し続けいちいち起動せずにpythonから実行したい。 これをするときにどうしたらいいかわからなかった...。 # 解決策 先ほどのコードをsample.exeとして実行形式にした。 その後、以下のコードでうまくいった。 ```python imp

【Python】Pythonスクリプトで(自分が)よく使うフレーズのメモ

# 今回の内容
Pythonスクリプトで(自分が)よく使うフレーズのメモです。

## スクリプト先頭の記述
“`
#!/usr/bin/env python3
“`
Unix系の環境で直接実行できる。

[追記訂正]
`#coding: utf-8`文字コードの指定は必要ないらしい。

## 引数をリストとして取得
“`
import sys

argv_list = [sys.argv[i] for i in range(1,len(sys.argv))]
“`

## スクリプトとして実行したときのみ実行
“`
if __name__ == ‘__main__’:
“`

## 拡張子なしのファイル名を取得
“`
import os

basename_without_ext = os.path.splitext(os.path.basename(filepath))[0]
“`

論文Deep Self-Learning From Noisy Labelsを読んで

# 記事の概要
ここでは,論文Deep Self-Learning From Noisy Labels[1]を紹介します.この論文はICCV2019にて採択されているものです.また,Pytorchによる実装を[GitHub](https://github.com/hatiparallel/DSLFNL)で公開しています.ただ,精度はそれほど出ておらず,この原因の考察はこの記事の最後に述べています.

# 論文の内容
## 概要
本論文で取り組んでいるのは,深層学習による画像クラス分類のタスクにおける,ノイズの含まれるデータセットを用いた学習の精度の向上です.ここでの「ノイズを含む」というのは,データセットのクラスラベルが誤って付加されているという状況を示すものです.深層学習ではモデルの学習のために一般に大きなデータセットが必要とされますが,ラベルの整備された巨大なデータセットを準備するのはかなり面倒です.加えて,厳密なデータセットを作るときには人間が手動でアノテーションを行うのが一般的ですが,その際にミスが起こることも考えられます.一方で,Webからクローリングしてきたデータをそのまま

KerasでGAN作ってみたので学習過程を動画にしてみた。

# はじめに
[以前の記事](https://qiita.com/ozora/items/28b9ae219492ffb62812)でGanによる手書き文字認識をKerasで実装しました。
その際にGanの学習過程がどのようになっているのか気になったので動画にしてみました。

今回は比較も行いたかったため、GanとCGanの二つで行いました。

動画を見てみると、Ganがどのように手書き文字の特徴を捉えているのかが動画内で確認できます。
二つの動画を見比べてみるとGGanとGanでは学習の様子が全く違い、CGanは畳み込み層による特徴がしっかりとででいることがわかるかと思います
動画はYoutube上にアップしてあります。

GAN : https://www.youtube.com/watch?v=ORVZVZqYYqU
CGAN : https://www.youtube.com/watch?v=ByicWghi-iw

## GanとCGanの違い
二つの違いはネットワークに用いている層の種類の違いだけです。
Ganは全結合層、CGanは畳み込み層でネットワークが構築されて

SageMakerを使って機械学習に入門してみる

# はじめに

AWS公式の[Amazon SageMaker の開始方法](https://docs.aws.amazon.com/ja_jp/sagemaker/latest/dg/gs.html)の手順に沿って、機械学習モデルを構築してデプロイするまでの流れを実践してみる事にしました。

本記事は自身のハンズオン学習メモとして投稿します。

# 目次
– [機械学習とは](#機械学習とは)
– [SageMakerの概要](#SageMakerの概要)
– [チュートリアル](#チュートリアル)
– [おわりに](#おわりに)

# 機械学習とは

ここでは割愛。概要を把握するには以下を参照。

[一から始める機械学習(機械学習概要)](https://qiita.com/taki_tflare/items/42a40119d3d8e622edd2)

# SageMakerの概要

詳しくはAWS公式の[Amazon SageMaker のドキュメント](https://docs.aws.amazon.com/sagemaker/index.html)を参照。

>Amaz

【TitanCraft】マインクラフトに巨人を召喚するためのツール作った

# TitanCraft is 何?
スマホなどで撮影した1枚の全身画像から、3Dオブジェクトを経由してしてマインクラフトの`.schematic`ファイルを生成します。
生成された`.schematic`ファイルを[WorldEdit](https://www.curseforge.com/minecraft/mc-mods/worldedit)などの`mod`を使ってマイクラのワールドに読み込ませると巨人を召喚できます。

ソースコードは[ここ](https://github.com/takecx/TitanCraft)で公開しています

# こんなことができます

![titan1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/245628/bfe57905-3ee6-5130-9ecf-e797edebe5c4.png)

> *その日 人類は思い出した*
*ヤツらに支配されていた恐怖を…*
*鳥籠の中に囚われていた屈辱を…*

![titan2.png](https://qiita-image

PythonとSeleniumとChromedriverでスクレイピング

# やりたいこと
Science DirectのあるJournalに掲載されているすべての論文の書誌情報+アブストラクトを収集したい。

# まずはスクレイピングの基礎を学ぶ
(参考:https://codezine.jp/article/detail/12230)
requestsパッケージとBeautifulSoup4パッケージを使ってやるのが基本らしい。
ということで、まずはこいつらをインストール

“`shell
pip install requests, beautifulsoup4
“`
んで、こんなことをしてみた。

“`python
import request
from bs4 import BeautifulSoup

# スクレイピング対象の URL にリクエストを送り HTML を取得する
res = requests.get(‘https://www.ymori.com/books/python2nen/test1.html’)

# レスポンスの HTML から BeautifulSoup オブジェクトを作る
soup = BeautifulSoup

WindowsでPIP Install するとSSLエラーになるのを解消する。

#発生したエラー
“`
(ptoe) D:\MyFile\arc\pyenv\ptoe>pip install pprint
WARNING: Retrying (Retry(total=4, connect=None, read=None, redirect=None, status=None)) after connection broken by ‘SSLError(SSLCertVerificationError(1, ‘[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: unable to get local issuer certificate (_ssl.c:1108)’))’: /simple/pprint/
WARNING: Retrying (Retry(total=3, connect=None, read=None, redirect=None, status=None)) after connection broken by ‘SSLError(SSLCertVerificationErro