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

Python関連のことを調べてみた2022年08月01日
目次

PyG (PyTorch Geometric) で Node2Vec

グラフ構造を深層学習する PyG (PyTorch Geometric) を Google Colaboratory 上で使ってみました。今回は、Node2Vec を使うことがテーマです。

# PyG (PyTorch Geometric) インストール

PyG (PyTorch Geometric) のレポジトリは https://github.com/pyg-team/pytorch_geometric にあります。また、コードはチュートリアルドキュメント https://pytorch-geometric.readthedocs.io/en/latest/index.html を参考にしています。

“`python
import os
import torch

torch.manual_seed(53)
os.environ[‘TORCH’] = torch.__version__
print(torch.__version__)

!pip install -q torch-scatter -f https://data.pyg.org/whl/torch-${TO

元記事を表示

[PyTorch / 深層学習] 重みパラメータの初期値が原因で学習が収束しない現象を体験した

# 1. 概要

## 1-1. 経緯

深層学習論文の再現実装をしたいと思っており、中でもVGGの論文はまぁまぁ簡単だと聞いて、VGGの再現実装に挑戦していたのですが、以下のような経緯で問題にぶつかりました。

1. ネットワークモデルを、 `torchvision` の提供する `torchvision.models.vgg16` と完全に同じ状態にした。
※モデルの状態は、以下の[実装したネットワークモデル]を参照
1. torchvisionの`vgg16`と、自作したVGG16をそれぞれ学習させたところ、**自作のVGG16のみ、学習が全然収束しなかった**。
1. 何回学習させても、「2.」の問題が解消せず。

[実装したネットワークモデル]
“`python:VGG
VGG(
(features): Sequential(
(0): Conv2d(3, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
(1

元記事を表示

【Twitter API×Python】指定したハッシュタグのツイートをまとめてLINEへ送信してみた

## 指定したハッシュタグのツイートを一括で取得したい!
突然ですが、私は最近まで植物に関するクラウドファンディングを実施していました。
その際に、フォロワーを増やそうと **#植物**のツイートをしている、かつ **フォロワーが100人以上**の場合にフォローをするという活動を定期的にしていましたがこれが結構大変なのです。(全然増えませんでした。。。)
ですので、この活動がもっと簡単にできないかと思い **LINEへ指定した条件のツイートをまとめて送信しする**やり方を考えました。
フォロワーを増やしたい方やツイートの分析をしたい方は是非ご覧になってください!

基本的に↓の記事を参考にしていますが、自分がより使いやすいように改変をしています。
リンクから直でツイートに飛べるのでフォローが簡単にできます!

https://3pysci.com/twitterapi-17/

**↓コードを実行したときの結果↓**
![Tweet取得.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2618860/0c

元記事を表示

「きれいなPythonプログラミング」を読んで

# はじめに
書籍[「きれいなPythonプログラミング」](https://book.mynavi.jp/ec/products/detail/id=127578)を読みました。非常に参考にり、そして「感動」した書籍でしたので、面白かったトピックを記載します

# 作者
Al Sweigart(アル・スウェイガート)さんという方で、この書籍以外にも[「退屈なことはPythonにやらせよう」](https://www.oreilly.co.jp/books/9784873117782/)なども書いている方です。また、「きれいなPythonプログラミング」も含め無料の英語版をクリエイティブ・コモンズ・ライセンスのもと[www.inventwithpython.com](https://www.inventwithpython.com/)で公開されています。

# 基本的なことは理解したが、次は何をしようと考えている人向け
原題は「Python で基本的なことを超えて(Beyond the Basic Stuff with Python)」となっており、書籍の「はじめに」の部分にもありま

元記事を表示

JavaScriptで描画されたページをSplashとBeautifulSoupで取得する

BeautifulSoupではJavaScriptで描画される動的な要素を取得できない。
しかし、Splashサーバを経由することでJavaScript実行済みのレスポンスを取得できるようになる。

## BeautifulSoupを使った通常のパターン

“`python:code1.py
import requests
from bs4 import BeautifulSoup

if __name__ == “__main__”:
# 取得元サイト
url = “https://www.travel.co.jp/stay/city/kusatsu-100020271”
# リクエスト送信
res = requests.get(url)
# HTML解析
soup = BeautifulSoup(res.content, “html.parser”)

# 取得できた要素0件
result_items = soup.select(“div.result > div”)
print(f”{len(r

元記事を表示

【Python】 HPLCの分析プログラム

高速液体クロマトグラフィー(HPLC)のデータ分析プログラムをPythonで作成しました。

# 分析のステップ

## 検量線を作成する
まず含まれている物質の濃度がわかっている標準サンプルを、濃度を変えていくつか作りデータをとります。このデータから、「物質Aが濃度Cのときこんなデータになる」というのがわかります。以下の表は標準サンプルにどの物質がどの濃度で含まれているかを示します。

| | STD1.txt | STD2.txt | STD3.txt | STD4.txt | STD5.txt |
|:-:|:-:|:-:|:-:|:-:|:-:|
|Maleic Acid|50|25|12.5|6.25|3.125|
|Glucose|100|50|25|12.5|6.25|
|Xylose|50|25|12.5|6.25|3.125|
|Glycerol|50|25|12.5|6.25|3.125|
|Acetic Acid|50|25|12.5|6.25|3.125|
|Ethanol|30|15|7.5|3.75|1.875|
|n-Buthanol|30|15|7.

元記事を表示

【初めてのAPI】短縮URLを発行するAPIの開発【Flask + SQLite】

# 概要
短縮URLを発行するAPIサーバを、FlaskとSQLiteを使って実装しました。ハッシュ値の生成には、さまざまな言語に使えるライブラリ「[Hashids](https://hashids.org/)」を使っています。

今回が初めてのAPI開発だったので、この記事では私と同じように初学者の方に向けて、実際にやってみたAPI開発の手順を中心に紹介します。

コードは[GitHub](https://github.com/lily-engine/short_URL)にアップしました。そしてこのバージョンでは、**短縮URLを発行できる外部サービスやAPIを使用していません**。

## 「APIサーバ」とは?
初学者にとって重要なのは、概念を理解することだとつくづく感じています。例えば「APIサーバ」を開発してください、と言われたのに、勘違いして「APIサービス」を開発してしまうと後から慌てて修正する必要があるわけです(実体験です)。

というわけで、今回のお題である「APIサーバ」とは何なのかを理解してみましょう。

まず「API」とは**A**pplication **P*

元記事を表示

python-pptxでパワポ作成自動化1

パワーポイントを自動的に作成するための初歩的な関数。
大まかなところは分かった。
あとはシェイプ同士を接続する線を入力する方法が分かれば自動でネットワーク図がかけそう。

“`py
from pptx import Presentation
from pptx.enum.shapes import MSO_SHAPE
from pptx.dml.color import RGBColor
from pptx.util import Pt

WHITE = RGBColor(255, 255, 255)
OLIVE = RGBColor(128, 128, 0)
YELLOW = RGBColor(255, 255, 0)
FUCHSIA = RGBColor(255, 0, 255)
SILVER = RGBColor(192, 192, 192)
AQUA = RGBColor(0, 255, 255)
LIME = RGBColor(0, 255, 0)
RED = RGBColor(255, 0, 0)
GRAY = RGBColor(128, 128, 128)
BLUE =

元記事を表示

GANの訓練ループでよく見るdetachは何をしている?

# どんな記事?

以下は[“Inside Deep Learning”](https://github.com/EdwardRaff/Inside-Deep-Learning/blob/main/Chapter_9.ipynb)という本に載っているGANの訓練ループの一部です.(見やすいように一部編集しています)

“`python
optimizerD = torch.optim.AdamW(D.parameters())
optimizerG = torch.optim.AdamW(G.parameters())

G_losses = []
D_losses = []

for epoch in tqdm(range(num_epochs)):
for data, class_label in tqdm(train_loader, leave=False):
real_data = data.to(device)
y_real = torch.full((batch_size,1), real_label, dtype=torch.fl

元記事を表示

【プログラミング不要】オススメのノーコードAI開発ツール ベスト3を紹介【最新版】

ノーコードやローコードのAI開発ツールが近年増えてきていますが、それぞれどのような特徴があるのでしょうか?
プログラミング無しで素早くAIを開発したい人のために、実際に私が試したことのあるノーコードAI開発ツールの中で、個人的なオススメを3つ厳選して紹介します!

ちなみに、[前回投稿した記事](https://qiita.com/umapyoi/items/7c3e9b42388d576057b1)が「[Qiita Engineer Festa 2022](https://blog.qiita.com/qiitaengineerfesta-2022-presents/)」で「Qiita優秀賞」と「Top Contributor賞」の両方に選ばれました!この場を借りて感謝申し上げます。ありがとうございました!

# 1位 [ADFI](https://adfi.jp/ja/)

URL: [https://adfi.jp/ja/](https://adfi.jp/ja/)

画像異常検知AIの開発とテストをノーコードで行えるクラウドサービスです。AIモデルの開発とテストだけなら無料で

元記事を表示

WSLでMagentaを使ったピアノ耳コピの自動化

# はじめに
**耳コピがしたい!** でも **絶対音感なんてない!** そんなあなたに…

Googleさんがピアノ演奏の音源(.wav)をMIDIファイル(.mid)に変換してくれるツールを用意してくれています。実際に使ってみて精度の高さに驚いたので紹介します。

# Magentaって?
作曲、音楽の解析、音楽制作の支援などを目的とした、Googleの機械学習プロジェクト

## Onsets and Frames モデル
Magentaには複数のモデルが含まれている。
その中でもピアノ演奏の音源を解析し、MIDIに変換するモデル。

# 環境
MagentaのOnsets and Frames モデルはローカルで動かす他、Web版、Colab版が用意されています。以下にリンクを貼っておきます。
[Web版](https://piano-scribe.glitch.me/)
[Colab版](https://colab.research.google.com/notebooks/magenta/onsets_frames_transcription/onsets_fram

元記事を表示

Python pygame Art-net受信

## Windows10 Art-net モニターが pygameで手軽に作れるようになりました。

## RaspberryPi4 Python Art-net 受信 モニター試験 反応早く使えます。

![python-Raspberry-mon.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/378482/71c64d98-c85e-706c-a07f-bfb6858c5ede.png)

元記事を表示

Pythonで Art-net 出力

## Pythonで Art-net 出力が 出来ました

![python-Raspberry-out.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/378482/d72f20b1-367b-4fd0-0939-a04c24d9b7a9.png)

まだ全ソース公開出来るほど整理できていませんが、一部だけ公開します。
(参考サイトも調べて、追記予定です)

“`
def pack_put():
#player.note_on(64, 127)
#1 ID[8] Int8 – Array of 8 characters, the final character is a null termination.
# Value = puthon ‘A’ ‘r’ ‘t’ ‘-‘ ‘N’ ‘e’ ‘t’ 0x00
packet.extend(map(ord, “Art-Net

元記事を表示

PythonでSeleniumライブラリーを使って、Webブラウザー操作を自動化!

# はじめに
Pythonプログラムで即業務に役立つサンプルプログラムとして、Webブラウザーの操作をPythonのSeleniumライブラリーを使って自動化する方法をご紹介します。
これによって、いわゆるRPA(Robotics Process Automation)を無料で構築できます。

# 動作環境
Visual Studio Code
Python3.8.8

# 各種利用ライブラリー
Selenium 3.141.0
chromedriver.exe ※
※実行環境のパソコンにインストールされているGoogleChromeのバージョンにマッチしたchromedriver.exeをダウンロードしてPythonプログラムと同一フォルダに保存する必要があります。(詳しくはYouTube動画で解説しています)

# 処理概要:
PythonでSeleniumを使って、YahooのホームページやGoogle検索、GoogleMapから住所や地図の自動取得ができるサンプルをご紹介します。

![PythonでWeb画面を自動化_040.png](https://qiita-image-

元記事を表示

Pythonで楽にテーブルを作成

## Pythonで楽にログファイルをテーブルへINSERTしたい!

ログファイルをDB(データベース)へ挿入する際、各行が1つのデータになっていて、各値はスペースやカンマ等で区切られている事が多いです。
DBとテーブルを作成し、ログファイルを読み取り1行から必要な値を正規表現で抜き取り、テーブルへINSERTするが大まかな流れです。

対象ログファイルが1種類だけなら
**cur.execute(‘INSERT INTO テーブル名 VALUES ?, ?, ?・・・, column_tuple)**
※「column_tuple」は、【res = re.search(正規表現, 対象ログファイルの1行)】→【column_tuple = res.groups()】 でレコードをカラム毎に配列(タプル)へ格納した値を指します
※curはカーソルオブジェクト

をスクリプトファイル毎に記載すれば良いです。

ただ対象ログファイルが複数ある場合、スクリプトファイルを作成するたびにカラム数はいくつかなと数えて?の数を変更していくのは大変手間だし、?の数を間違えてエラーの原因になったり、な

元記事を表示

KerasでTypeError: You are passing KerasTensor…が出た時の対処法(になるかも)

概要

最近TensorFlow/Kerasで機械学習を始めようとAuto Encoderを試してみたのですがfitの際に下の感じのエラーが出てその解決法が探してもなかなか見つからなかったため記事にしました。
著者の環境はMac OS Monterey 12.5 Python 3.8.3 tensorflow 2.9.1です。

“`python
raise TypeError(
f’You are passing KerasTensor(…), an intermediate Keras symbolic input/output, ‘
‘to a TF API that does not allow registering custom dispatchers, such ‘
‘as `tf.cond`, `tf.function`, gradient tapes, or `tf.map_fn`. ‘
‘Keras Functional model construction only

元記事を表示

もうStatcastデータには困らない!?pybaseballの紹介

## 簡単に自己紹介:writing_hand:
はじめまして。とみーです。
野球×データ分析というテーマには長年興味があったので、構想はいろいろ練っていたのですが、この度記事を初めて書くことにしました。
とはいえ、初めてなので…まずは簡単に自己紹介だけ。。
– アラサー男。一応データサイエンティストやってます:computer:
– 野球沼の住人:baseball: (巨人ファン歴20年目。今年はプロ野球ファンクラブ完全制覇。書き出したら止まらないのでこの辺にとどめておきます)

ということで、Qiitaで野球×データ分析のテーマでいろいろ書いていけたら、と思っていますが、
今日はその第1歩として、野球に関するPythonライブラリを少し触ってみようと思います。

## 概要
“Baseball Libraries Python”と調べると、pybaseballpyballの2つがヒットしました。
調べる限り、2つの違いは出力結果の違いが主(※) なようなので、この記事では、より文献が多そうなpybase

numpy.bincount()で配列の非負整数をカウント

`numpy.bincount()`関数で一次元配列の中で非負整数が何回登場したかを整数ごとにカウントできる。オプション引数`weights`、`minlenghth`についても触れる。
```python
import numpy as np
x = np.tile([0, 1], 3)
print(x)
# 実行結果 
# [0 1 0 1 0 1]

print(np.bincount(x))
# 実行結果
# [3 3]

y = np.array([1, 2])
z = np.hstack((x,y))
print(z)
# 実行結果
# [0 1 0 1 0 1 1 2]

print(np.bincount(z))
# 実行結果
# [3 4 1]

# 値が連続していない場合 
a = np.array([1, 5, 5])
print(np.bincount(a))
# 実行結果 
# [0 1 0 0 0 2]
```
配列aの`np.amax(a)`の返り値がnだったとすると`np.bincount(a)`の返り値の配列の長さは0を含めてデフォルトでn+

Webスクレイピング ハンズオン

# 概要
Webスクレイピングとは、Webサイトにあるテキスト情報やデータをプログラムを活用して自動でデータ収集ができるコンピュータソフトウェア技術です。今回、Webスクレイピングを0から開発するフローについて実際のコードを活用して説明します。

# こんな方に読んで欲しい
・プログラミング未経験だけど何か作れるようになりたい
・RPAに興味がある
・Webスクレイピングのスキルを身に付けたい

# 開発環境
開発は「Jupyter Notebook」を活用して説明します。また、Python環境であれば開発は可能なので、その他開発ツールでも問題ないです。最低限のライブラリのダウンロードができるので事前に「Anaconda」をインストールしておくことをオススメします。なお、本記事では事前の環境構築が済んでいることを前提にしております。また、Webスクレイピングはhtmlのコードを解析しデータ収集を行います。従って、最低限のhtmlの前知識がある前提にしております。

# 注意事項
Webスクレイピングは対象のWebサイトに自動でアクセスしデータを収集します。そのため、大量のリクエストや連

Pythonフルスクラッチで開発したサイトテンプレートに対してTypescriptを導入しフロントエンドを徐々にVueのコンポーネントにしていく話

# サイトテンプレートの開発をさらに進化させていく話

以前こちらの記事ではバックエンドをPythonメインでフルスクラッチでサイトのテンプレートを開発してみようという試みでWebアプリケーションの全体を開発することができました。

次は応用ということで少しjavascriptを使用している部分があるためその部分や今度javascriptで簡易的なアプリケーションを実装していくためその際にTypeScriptを使ってみようと思います。

### 自己課題の共有
https://qiita.com/noss08327439/items/93fc49d095c07bec2020

### 全体的な実装後のイメージと簡易設計の内容について
https://qiita.com/noss08327439/items/b6c3db2d271c6c1ea92f

### デザイン変更後

https://qiita.com/noss08327439/items/33f68bc86efe08911ad2

# 今後の目標

- フロントエンドをVueCLIを利用してコンポーネント化してみる。
-