Python関連のことを調べてみた2021年10月09日

Python関連のことを調べてみた2021年10月09日

【環境構築】32bit C++からPythonを利用する(VisualStudio)

## はじめに
– 本記事では、Boostライブラリを利用し、C++からPythonを呼び出す方法をまとめる
– x86 ビルド(32bit)での環境構築に限定し、x64 ビルド(64bit)の解説は行わない
– 64bit版は、[こちらの記事](https://qiita.com/yusa0827/items/ebc0e606b31604d45712)へ。
– 32bit版での環境構築の際は、64bit版Python, Anacondaを全て削除することをおすすめします。(ハマるポイントが少なくなります)

## 何を実現したいのか?
– VisualStudioのC++プロジェクトから、Pythonクラスを利用したい
– 速度の求められる処理をC++で実行し、一部の複雑な処理はPythonを利用したい
– 32bitマシンを制御する必要がある(シーケンサ、マイコン、ロボットなど)
コンピュータとオセロ対戦15 ~強化学習~

https://qiita.com/tt_and_tk/items/068f2afde6db637e189f

[前回](https://qiita.com/tt_and_tk/items/353e369e3a2b888c038c)

# 今回の目標
今までこのシリーズで「カスタムスコア」と呼んでいたものですが、調べたところこの概念は既にあり、一般に「評価値」と呼ぶようです。なので以降の記事では、これまで「カスタムスコア」と呼んでいたものを「評価値」と呼び改めます。

さて、この評価値ですが、ネットで調べたところ有用とされるパターンがすでにいくつかあるようです。しかし私の感覚とは少し違う気がするので、いくつかの記事を使って評価値の検証をしていきたいと思います。
今回は[前回](https://qiita.com/tt_and_tk/items/353e369e3a2b888c038c)作成したプログラムを改造して遺伝的アルゴリズム(っぽいこと)を行い、最適な評価値を探し出します。

# ここから本編
今回のアルゴリズムは以下に示すとおりです。

1. 評価値をランダムで初期化したものを

元記事を表示

【AtCoder】ABC221をPython3で解説(ABCD

ABCのA-D問題の解説。

https://atcoder.jp/contests/abc221

## 目次
[A – Seismic magnitude scales](#a—seismic-magnitude-scales)
[B – typo](#b—typo)
[C – Select Mul](#c—select-mul)
[D – Online games](#d—online-games)

## A – Seismic magnitude scales

https://atcoder.jp/contests/abc221/tasks/abc221_a

### 解説

マグニチュード`A`の地震のエネルギーの大きさはマグニチュード`B`の自身のエネルギーの大きさの何倍かを求める問題。

このとき`A`は`B`以上であることがわかっているので、`A`から`B`を引いてあげた値分、32倍してあげるとよい。

### コード
“`python
def main():
a, b = map(int, input().split())

元記事を表示

Pythonのデータ検証ライブラリCerberusを使ってみよう

# はじめに

この資料はデータ検証用ライブラリ Cerberus のドキュメントを抄訳したものです。
コミュニティーで Hands-On を行うときの資料として作成したため、
Cerberus の変更履歴などについては触れていません。

また、ソースコードの例示と実行には、IPython を使っています。

“`bash
$ ipython
Python 3.9.7 | packaged by conda-forge | (default, Sep 29 2021, 19:23:19)
Type ‘copyright’, ‘credits’ or ‘license’ for more information
IPython 7.28.0 — An enhanced Interactive Python. Type ‘?’ for help.

In [1]:
“`

* IPython の `%load` コマンドでソースコードを読み込んで実行させています。
* 実行した結果と期待する出力を assert 文を使って記述しています。
* 実行してみて欲しいコ

元記事を表示

球面調和関数の値をPython3/matplotlibで3D表示する

2次元の調和関数の値を、r=1の円上で均等にスキャンして合計するとゼロになるらしい。
3次元の調和関数の値を、r=1の球面上で均等にスキャンして合計するとゼロになるかPythonで試してみた。
その前に、値を3次元でmatplotlibを使い表示させてみた。

3次元調和関数

“`math
{{\displaystyle {\partial ^{2} \over \partial x^{2}}\phi (x,y,z)+{\partial ^{2} \over \partial y^{2}}\phi (x,y,z)+{\partial ^{2} \over \partial z^{2}}\phi (x,y,z)=0.}
}
“`

これ満たす式で、一番簡単なのをネットで見つける。

“`math
f(x,y,z) = – xy – yz – zx
“`

この式の値を r=1 の球面上の点で値を取り、色付けをしてプロットする。普通に、緯度、経度で分割すると極部の点が多くなるので、経線の長さに応じて点の数を調整している。真ん中の白い部分は、極です。

![Screen Shot

元記事を表示

プログラミング学習Day3(変数・演算子、条件分岐、文字列変換)

# 変数、演算子
– 変数 1文字以上の名前を持っていて値が変わるもの
– プログラムは上から下に実行される
– プログラミングは英語でエラーが表示されるのでなんとなく英語でエラーの意味が分かるように。例えばEOL=End Of Line(最後の行)
– 比較演算子
– >  より大きい
– <  より小さい - >=  以上
– =<  以下 - ==  等値 - !=  非等値 - 論理演算子 - and 左右の条件がTrueであればTrueになる - or  左右の条件のどちらかがTrueであればTruenになる - not True,Falseのを逆にする - ちっちゃすぎす少数は無視? 論理演算子 == で下記の事を発見しました。 ```python a = 1 b = 1.000000000000001 c = 1.0000000000000001 d = 1.0000000000000011 e = 1.0000000000000002 print(a == b) print(a == c) pr

元記事を表示

高精度気圧センサーモジュール – DPS310 をPythonで動くようにした

よく調べようという教訓が得られます。

# 初めに
Raspberry Piで気圧ロガーを作るためにセンサーモジュールを買ったが、販売元のページにはArduino用のCライブラリしか無かったので、仕方なくPythonのドライバを書いたら、実はチップメーカーのGithubにすでにPythonのコードが公開されていた。というオチの記録です。

## 目標

– 気圧センサを使用したデータロガーを作る。

## 環境

– Raspberry Pi 4 model B 4GB(Raspberry Pi OS arm64 Release:10 Codename:buster )
– [この記事](https://qiita.com/emguse42/items/1c14d1dca662f16ff394)で作成したDockerコンテナ
– Python 3.9.2
– RPi.GPIO, i2c-tools, smbus :などが利用可能
– grove.py :Grove Base Hat for Raspberry PiとGroveシステムのセンサ類のライブ

元記事を表示

Herokuの使い方を勉強した。【HerokuでPythonを定期実行したい】

Pythonを定期実行したかったので、Herokuの使い方を勉強してみました!
 
具体的には、Herokuの公式チュートリアル
「Getting Started on Heroku with Python(PythonでHerokuをはじめよう)」

https://devcenter.heroku.com/articles/getting-started-with-python#set-up

を日本語に翻訳しつつ、勉強した内容をまとめました。

#Herokuの公式チュートリアルを勉強する

##セットアップ

###Gitを使えるようにする。
まず、Heroku CLIを使うには、バージョン管理システムであるGitが必要です。
まだインストールしていない場合は、インストールして設定をします。

https://git-scm.com/book/en/v2/Getting-Started-Installing-Git

https://git-scm.com/book/en/v2/Getting-Started-First-Time-Git-Setup

###Heroku C

元記事を表示

【Python】HTTP通信でGETを直接書く(proxy経由)

# はじめに

前の投稿に続いて、今回はproxy を通すところを試してみました。これがやりたかった。

https://qiita.com/XPT60/items/da1cece630e7548186c6

# 内容

まず、適当なサーバに対してGET を送り、レスポンス(短いのがいいな)が返ってくるの確認します。

“`
$ curl http://google.com

301 Moved

301 Moved


The document has moved
here.

“`

これをproxy経由にしてみます。

### 無料のproxy server

Google 先生に free proxy サーバと問い合わせてみると、いろいろなサイトを

元記事を表示

【AI・機械学習入門】よく使うWindowsショートカットキー

## はじめに
今回は、Windowsの**ショートカットキー**についてです。
いきなり多くの**ショートカットキー**を詰め込んでも、最初は大変なので、**よく使うショートカットキー**に絞りこんで説明させていただきます。

:::note warn
Word, Excelといったアプリケーションのショートカットキーはこちらでは紹介しませんので、ご注意ください。
:::

## 環境
今回紹介するショートカットキーの動作環境は以下の通りです。
**Windows 10**

## ショートカットキーとは
メニューからコマンドを選択するような操作の代わりに、キー入力で行う場合の、キーの組み合わせのことです。
これを使ったキー入力を**ショートカット入力**や**キーボードショートカット**とよびます。

## Windowsのショートカットキー一覧
ショートカットキーの一覧については、
`Windows10 ショートカットキー 一覧`などで検索するとたくさん出てきますので、そちらをご参照ください。

以下に、Microsoftが紹介しているリンク先を添付させていただきます。
[Mic

元記事を表示

ABC204 A~D問題 ものすごく丁寧でわかりやすい解説 python 灰色~茶色コーダー向け #AtCoder

ABC204(AtCoder Beginner Contest 204) A~D問題の解説記事です。
灰色~茶色コーダーの方向けに解説しています。

その他のABC解説、動画などは以下です。

https://qiita.com/sano192/items/54accd04df62242b70f0

##A – Rock-paper-scissors

https://atcoder.jp/contests/abc204/tasks/abc204_a

x,yがそれぞれ0,1,2の3パターンあるので全てのパターン数は3×3で9パターンです。
それぞれのパターンについてif文で場合分けし、答えを出力します。

入力の受け取り、出力がわからない方は以下の記事を参考にしてください。

https://qiita.com/sano192/items/eb2c9cbee6ec4dc79aaf

**【提出】**

“`python:
# 入力の受け取り
x,y=map(int, input().split())

# x,yの値で場合分け
if x==0 and y==0:
print

元記事を表示

個人的pythonまとめ

#1.1 np.newaxisで新たな次元を追加
下のようなtrain_Xを行ごとにユークリッドノルムで正規化したい

pixel1 pixel2 pixel3 pixel4 pixel5

GPUを活用した機械学習ツールNVIDIA RAPIDSをArch Linux + CUDA11.4 でビルドした(Ver21.10版) (2) CUML, CUSIGNAL

#前置き
GPUを活用した機械学習ツールNVIDIA RAPIDSのビルド方法。今回は最新版=21.08)での構築方法を紹介。Arch Linux の環境では、CUDA11.4.2 + GCC11 となっているのですが、一応ビルドできて、テストも数値エラーやメモリエラーは起きるが一応最後までまわる。

# やったこと=RAPIDS のビルド
データ処理、機械学習のフレームワーク[RAPIDS](https://rapids.ai/)を [Arch Linux](https://www.archlinux.org/) でビルドした。ただし、ビルドまでにエライ手間がかかったので、皆さんへの共有も兼ねて
0. **基本構成その0** ・・・ Cupyのビルド方法については[こちらの記事](https://qiita.com/daisuzu_/items/971ff080bb8e16d7c815)で紹介してます。
1. **基本構成その1** ・・・ [こちら](https://qiita.com/daisuzu_/items/6b2564450c75f25cc882)。RMM, cuD

【Python】HTTP通信でGETを直接書く

# はじめに

HTTP 1.1 の通信でGETするのをsocket 通信として実装したいと思いました。
で「どんなメッセージを送ればよいのか」を調べたのですが、意外と良く分かりませんでした。
なのですが、それが簡単にわかる方法を見つけたので、ここにメモリます。

行ったこと:

– HTTP GETリクエストを送られるデータを確認した
– HTTPサーバにpython でGET を送ってみた

# 実験

## GET request とその response を見る

ローカルにHTTPサーバを立てます。
まず、何か書いたテキストファイルを用意します。

“`
.
└── hello.txt
“`

このディレクトリでHTTP サーバを立てます。http.server については、[こちら](https://docs.python.org/ja/3/library/http.server.html)に使い方の説明がありますが、bind するアドレス、listen するport、ディレクトリなど指定できます。

“`
$ python3 -m http.server
“`

【py2exe】NameError: name ‘WinDLL’ is not defined

MacやUbuntuで

“`
pip install py2exe
“`

したり、import py2exeすると

“`
NameError: name ‘WinDLL’ is not defined
“`

などたくさんエラーがでる。これはpy2exeはWindows上で動かすことのみを前提としているからである。
つまり、MacやUbuntu上ではpy2exeは動かない。
WindowsのPowerShell上なら動いた。

考えてみると、Windows実行アプリがWindowsが必要なのも納得はいく

seabornでページ遷移などを可視化する

# はじめに
ウェブサービスのユーザがどのページからどのページに移っていっているのかとか、どの工程からどの工程に仕掛品が流れていったのかなどをPythonで可視化したい。
ここでは仮に以下のようなどのページからどのページに移っていったのかについて集計したデータがあったとする。

Pytorch Lightningを使用したEfficientNetのファインチューニング

# はじめに
EfficientNetをファインチューニングするコードをPyTorch Lightningで実装しました。
画像分類モデルを作成する際の初手として使用することを想定し、ある程度使い回しが効くように実装したつもりですので、ちょっと長いですが最後まで目を通して頂けますと幸いです。

なお、Google Colaboratoryで実行できるnotebookもgitで公開しているので、間違っている点などあれば是非ご指摘いただけますと幸いです。
[pytorch_lightning_image_classification.ipynb](https://github.com/tchih11/qiita/blob/main/notebooks/pytorch_lightning_image_classification/pytorch_lightning_image_classification.ipynb)

### Efficient-Netとは
2019年当時SoTAを達成した画像認識モデルです。転移学習にも適しているということで、今回はEfficientNetのファインチュ

ABC189 C – Mandarin Orange に痺れた

https://atcoder.jp/contests/abc189/tasks/abc189_c

![abc189_1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/737344/3ca2869b-b55d-b0be-69f0-e63c95a8e2f7.png)
![abc189_2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/737344/6f58f7a5-98c0-6ca4-39cb-1358f6b43fe9.png)
![abc189_3.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/737344/70cd445b-1061-b9d8-f1f4-21801e382878.png)

わ、わからん。
解答 please

うーん、わかったの

特徴量エンジニアリング

# 特徴量エンジニアリング
特徴量とは、モデルにインプットする変数のことを言います。
特徴量エンジニアリングとは、手持ちのデータからドメイン知識などを駆使し、新たな特徴量を生成する取り組みのことです。
なぜ特徴量エンジニアリングが必要なのか、それはデータの質を向上させ、より無駄がなく、より意味のあるデータを機械学習のモデルに学習させることで、予測モデルの予測性能(汎化性能)を向上させることができるからです。

# ドメイン
ドメインとは、手持ちのデータが属する業界や事業等、その領域における専門知識・知見・トレンドなどを表す概念です。
なぜドメイン知識がデータサイエンスで必要となるのか、それはそのデータが生み出される仕組みや背景・経緯を知っていることで、データの構造、特徴や傾向をより深く・広く把握することができるためです。
例えば、IT事業会社のtoCの人材紹介会社のレコメンドシステムのデータを例に取ってみましょう。
マーケティングの基礎知識でもあるCT(CTR)、CPC、CPM、CV(CVR)などの概念を理解していれば、それぞれの数値の関係性を理解することができるでしょう。
またそれに

unitest/jinja2のそれぞれで呼び出される特殊メソッドについて

#目的

– unittestでは「プログラムが期待通りの構造でデータを返す」を確認する。
– そのオブジェクトを識別できる文字列でOK
– 実際の利用場面(Jinja2)では指定した書式の文字列を渡す。
– HTMLタグを使った複雑な文字列
– この機能については別途テストケースを用意することで対応したい。

#結果

– unittest
– テスト時は “__eq__“ が利用される。
– テストが失敗した時は “__repr__“ の情報を見せる。
– jinja2
– “__str__“ が利用される。

#確認

サンプル

“`python
#!/usr/bin/python
import unittest
from jinja2 import Template

class aclass(object):
def __str__(self):
return “__str__”
def __repr__(self):
return “__repr__”
d

from