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

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

【Python】2つの区間が重なる長さ

# 問題
数直線上で、$L_1 \leq x \leq R_1$と$L_2 \leq x \leq R_2$の重なる長さを求めなさい。
ただし、端点のみ接している場合の長さは$0$とする。

元ネタは以下。

https://atcoder.jp/contests/abc261/tasks/abc261_a

# 解答

“`python
l1, r1, l2, r2 = map(int, input().split())

if r2 <= l1 or r1 <= l2: # 重ならない intersection = 0 else: intersection = min(r1, r2) - max(l1, l2) # 重なる print(intersection) ```

元記事を表示

データサイエンスを始める環境構築方法

# はじめに
昨今の人工知能ブームに影響を受けて、様々な場面で機械学習を利用する動きが活発です。
自分で高性能なGPU搭載コンピュータを準備したり、Amazon EC2のようなクラウドサービスを利用したりと、方法は人それぞれだと思いますが、いずれにせよ必要なソフトを動かしたり、プログラムを動作させるための環境構築をするのが地味に手間だったりします。
先日、データサイエンスに必要な基本ツールなどをまとめて再セットアップする機会があったので、ついでに次回以降は自動化できるようシェルスクリプトを走り書きしたので、この場を借りて紹介しておこうと思います。
具体的にインストールするソフトは[下に](#インストールされるソフトウェア)挙げています。
一つ一つは何番煎じか分からないようなメジャーなソフトなので、調べればそこら中にインストール方法の説明サイトが転がってると思いますが、個別にインストール方法を調べる手間を省くという点で需要があればいいなと思ってます。
あるいは「インストールしたいのにエラーが出て引っかかった!」なんていう方の参考にもなれば幸いです。
とくにバイオ系

元記事を表示

[Rust] 簡単なFFI実験(Rust ~ C, Python)

RustでFFI関連の練習をした。
すべてWindows MSVC環境。

FFI = Foreign Function Interface(他言語の関数を使うためのインターフェイス)。
異なる言語を組み合わせて使うための技術的仕様。
簡単に言えば「C言語の仕様に合わせる」ことで実現している。

[要点](#要点)
[Rust製ライブラリをC言語で使う](#rust製ライブラリをc言語で使う)
[Rust製ライブラリをPythonで使う](#rust製ライブラリをpythonで使う)
[C言語製ライブラリをRustで使う](#c言語製ライブラリをrustで使う)
[補足](#補足)
[参考](#参考)

# 要点

– C言語をコンパイルするには「x64 Native Tools Command Prompt」を使う。
– Rust~C言語間では静的リンク(.lib)で連携させる。
– Rust~Python間では動的リンク(.dll)で連携させる。

# Rust製ライブラリをC言語で使う

まずはRustで簡単なライブラリを作ってみる。

“`rust:rs_add.rs
#[n

元記事を表示

AtCoder Beginner Contest 復習用(随時更新)

# 2022/07/23
https://atcoder.jp/contests/abc261
## B – Tournament Result
“`python
N=int(input())
A=[input()for i in range(N)]

for i in range(N):
for j in range(N):
if i==j:continue
if A[i][j]==”W”:
if A[j][i]!=”L”:
print(“incorrect”)
exit()
elif A[i][j]==”D”:
if A[j][i]!=”D”:
print(“incorrect”)
exit()
elif A[i][j]==”L”:
if A[j][i]!=”W”:
print(“incorrect”)
exit()
print(“correct”)
“`

# AtCoder Beginner Contest

元記事を表示

Python、SeleniumによるWebスクレイピング環境構築(Windows10)

# 趣旨
PCを新調(Surface Pro 7に)したので、Webスクレイピング環境を改めて構築する。
と同時に、Windows10環境でPython、Seleniumを使用したWebスクレイピング環境の構築手順をメモとして残す。

# 1.Pythonをインストール
公式サイトよりインストーラを取得し、インストールする。
https://www.python.org/downloads/
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/459544/31e7b75a-6e13-5e8a-30d1-9a00dd401a44.png)
インストール完了時、「Disable path length limit」をクリックするかしないか迷ったが、クリックしておいた。
Windowsの従前のバージョンではパスの長さが最大260文字までという制限があったため、Windows10 でもデフォルト状態ではパスの長さの制限が掛かっているらしい。
パスの長さが260文字を超えることはたぶんないと思うが、も

元記事を表示

【Pytorch】3DのUNetを実装する

# はじめに
[【前回】UNetを実装する](https://qiita.com/gensal/items/03e9a6d0f7081e77ba37)
本記事は前回の記事の続きとなります。前回はMRIの各断面の画像から小腸・大腸・胃の領域を予測する為に2DのUNetを実装しました。
しかし、MRI画像は本質的には幅×高さ×深さの3Dの情報を有しており、2DのUNetではこれを幅×高さの2Dの画像として学習するため、深さ方向の情報を失っていると考えられます。そこで今回は3DでUNetを実装し、2Dと同様に臓器の領域を予測することが可能か調べました。

# UNet
[【参考】セグメンテーションのモデル](https://www.skillupai.com/blog/tech/segmentation1/)
[【原著論文】U-Net: Convolutional Networks for Biomedical Image Segmentation](https://arxiv.org/abs/1505.04597)

UNetはセグメンテーションと呼ばれるタスクを処理するために考案された

元記事を表示

Pythonを使用してTwitterで「いいね」した最新ツイートを日次でLineに送る

# はじめに
本記事では、Tweepy、LINE Notify、GitHub Actionsを使用します。トークン取得や使い方等の詳細は記載しないので、参考文献等を参照してください。

本記事は、以下のような流れで進んでいきます。
① Twiiter APIを使用して、「いいね」した最新のツイートを取得
② LINE Notify APIを使用して、①で取得したツイートをLINEに通知する
③ GitHub Actionsを使用して、日次で最新ツイートをLineに送る

### ① Twitter APIを使用して「いいね」した最新のツイートを取得する関数
“`python
import tweepy
import datetime

def get_api():
# TwitterAPIの認証を受けた後、取得したAPIkeyを代入
consumer_key = ‘your_consumer_key’
consumer_secret = ‘your_cons

元記事を表示

PLCからゲートウェイでデータを取得しデータベースにJSONで保存 (5)

PLCからゲートウェイでデータを取得し、データベースにJSONで保存します。複数回に分けて、サンプルを用いて解説します。
前回は、データを保存するデータベースとテーブルを準備しました。

[PLCからゲートウェイでデータを取得しデータベースにJSONで保存 (4)](https://qiita.com/COOLMAGICPRODU1/items/449f206bbdf07c8e491b)

今回は、MQTTブローカーからデータを受信するサブスクライバーを実装します。少々駆け足になりますが、サブスクライバーには、データを受信しつつデータベースに書き込むまでを実装します。
![9a527b4c96ab1ffcf8096821036def3462d966e06c6c1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2737842/a2dac1c5-e604-8e01-f7d2-44bfc1ac9c76.png)
## プログラミング
Pythonを使用して実装します。Pythonでなければならない合理的な理由

元記事を表示

PythonでQEMUモニタを操作する

# 概要
QEMUモニタの操作(メモリダンプ等)を自動化する方法を考えていたところ、Pythonの`subprocess`モジュールを使用すれば実現できそうだったので実際に試してみました。

とりあえずの目標として、QEMUモニタをインタラクティブに操作するPythonスクリプトを作成します。

# QEMUの起動
“`python:qemu_test.py
import subprocess

kernel_path = (イメージファイルへの絶対パス)
start_cmd = [‘qemu-system-aarch64’, ‘-cpu’, ‘cortex-a57’, ‘-machine’, ‘virt’,
‘-kernel’, kernel_path, ‘-monitor’, ‘stdio’, ‘-nographic’]
proc = subprocess.Popen(start_cmd, stdin=subprocess.PIPE,
stdout=subprocess.PIPE, text=True, encoding=’utf-8′)
“`
`subpr

元記事を表示

青空文庫の全小説でword2vecしてみる

# はじめに

word2vecの日本語学習済みベクトルというと,wikiやWebサイトのコメントなどの割と説明的な文章に対して作られたようなものが多い気がします.もう少し叙情的な分散表現を得られないかな(テキトー)と考えて青空文庫の文章全体を使ってやって見たのでその過程と得られた結果について書きます.

# データセット作成

データセットは以下で作ったのを用いました.

https://serenard.hatenablog.com/entry/2019/04/07/164337

# 分散表現の学習

gensim内のword2vecを使って分散表現の学習をします.

gesim.word2vec.Word2Vecには次のようなtokenizeした文を要素として持つリストを与えます.

“`
[
[…tokenizeした1文],
…,
[‘\u3000’, ‘底本’, ‘Project Gutenberg’, ‘Canada’, ‘です’, ‘。’, ‘この’, ‘翻訳’, ‘独自’, ‘行く’, ‘、’, ‘先行’, ‘する’, ‘訳’, ‘類似’, ‘する’

元記事を表示

[個人開発]映画評価サイト

# 1 初めに
映画評価サイトFilmerを開設しました。
まだまだ修正ポイントがありますが完璧であることより、まず終わらせることが重要だという
マーク・ザッカーバーグの名言を信じてみんなさんにこのアプリの改善点をください!!

https://filmer-000.herokuapp.com/

# 2 アプリケーションの概要
Filmarksのようなアプリケーションが作りたいと思い設計しました。

![Animat.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1493403/973ac233-45e3-8e37-0c5f-f08b8478acf9.gif)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1493403/710f305b-f162-215e-d44e-31a43b6a3d1a.png)

機能は単純で映画にコメントと評価を付けることができます。そして、皆さんが映画とTVの評価が平均

元記事を表示

評価行列とアイテムの説明文書を活用した推薦システム「ConvMF」を何とか実装していきたい!③NLPにおけるCNNの実装

# 1. 参考

– [元論文](https://dl.acm.org/doi/10.1145/2959100.2959165)
– [figure and table](https://www.semanticscholar.org/paper/Convolutional-Matrix-Factorization-for-Document-Kim-Park/af9c4dda90e807246a2f6fa0a922bbf8029767cf)
– nishiba様のConvMF実装例(Chainerをお使いになってました!)
– [エムスリー様のテックブログ](https://www.m3tech.blog/entry/2018/03/07/122353)
– [nishiba様のgithub](https://github.com/nishiba/convmf)
– [自然言語処理におけるEmbeddingの方法一覧とサンプルコード](https://yukoishizaki.hatenablog.com/entry/2020/01/03/175156)
– けんごのお屋敷

元記事を表示

【強化学習】AlphaZeroを解説・実装

この記事は自作した強化学習フレームワークであるSimpleDistributedRLの解説記事です。
概要は[こちら](https://qiita.com/pocokhc/items/a2f1ba993c79fdbd4b4d)です。

また、前手法に当たるMCTSに関しては[こちら](https://qiita.com/pocokhc/items/392a7f89c79f5e1e6bca)

# はじめに

モンテカルロ木探索から AlphaZero の間には AlphaGo と AlphaGoZero があります。
しかしこの2つは囲碁に特化しているのでフレームワーク上の実装としては AlphaZero からにしたいと思います。

参考
・AlphaGoZero論文 [Mastering the Game of Go without Human Knowledge](https://discovery.ucl.ac.uk/id/eprint/10045895/1/agz_unformatted_nature.pdf)
・AlphaZero論文 [A general reinfo

元記事を表示

Lambdaでpythonの外部ライブラリをレイヤーで使用する方法

# この記事で出来るようになること
#### 結論:外部ライブラリをAWS Lambdaのレイヤーに追加することで、インラインコード編集をできるようにする。

pythonを使用する際に、外部ライブラリを使用することはよくあります。
しかし、Lambda関数自体にローカルでpipしたライブラリファイルをアップロードすると
`Lambda 関数「***」のデプロイパッケージが大きすぎて、インラインコード編集を有効にできません。ただし、関数を呼び出すことはできます。`
と出てしまう。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/748917/23335e1f-2df6-2cce-8154-60eea8e17667.png)
すると、インラインコード編集が出来なくなってしまう。
インラインコード編集を使用しない人にとっては問題はないが、便利であるので使える状態にしておきたい。

# ローカルで外部ライブラリをzip化する
本記事の例ではLINE APIで使用する`line-bot-sdk`を

元記事を表示

自己教師あり学習「SimCLR」を理解、実装する

# はじめに
※このブログは東京大学大学院 情報理工学研究科の授業「映像メディア学」のレポートとして書かれたものです。

深層学習ではデータとラベルを用いてモデルを学習する、所謂データドリブンな手法が用いられています。しかし膨大なデータに対してラベルを付与する作業は非常にコストがかかるため、大規模データセットの作成は非常に困難であるのが現状です。そのため近年、ラベルを用いずにモデルの事前学習を行う**自己教師あり学習**、特に画像処理の分野では**対照学習**の研究に注目が集まっています。このブログでは対照学習手法の一つである**SimCLR**の論文を読み、再現実装を通して理解を深めるものとなります。

# 論文読み
A Simple Framework for Contrastive Learning of Visual Representations [Ting Chen+ ICML20]
https://arxiv.org/abs/2002.05709

## Introduction
人間の手を使わずに画像表現を学習することは長年の課題であり、既存のアプローチは基本的に生成的

元記事を表示

シャニマスカレンダーを自動で壁紙に設定する(Windows版)

# この記事でやること
・Python + Twitter APIでシャニマスカレンダーを自動で壁紙に設定します。
・環境はWindwos10、11です。
・Linux版は[こちら](https://qiita.com/anteip/items/fa613be621855db4c254)

# シャニマスカレンダー
毎月公式が出すシャニマスカレンダー

元記事を表示

python3 二次方程式 解の公式

二次方程式 $ax^2 + bx +c$ を解の公式$ \frac{-b\pm\sqrt{b^2-4ac}}{2a} $を使って解くにはsympyというライブラリを使うと簡単にできます。まずはpipでsympyを導入
“`
pip install sympy
“`
sympyのsolveメソッドを使って解きます
# コード
“`python
from cv2 import solve
import sympy

x = sympy.Symbol(‘x’)#文字Xを定義
a,b,c = sympy.symbols(‘a b c’)#文字abcを定義
ex = a*x**2 + b*x + c#二次方程式

print(sympy.solve(ex,x))
“`
[(-b – sqrt(-4*a*c + b**2))/(2*a), (-b + sqrt(-4*a*c + b**2))/(2*a)]と出力されていればOkです

元記事を表示

[Jetbot] road_followingで使うモデルをpytorch-gradcamで可視化してみた

# 背景
そもそもJetbotて何?という方は以下のサイト等を参考
> https://www.nvidia.com/ja-jp/autonomous-machines/embedded-systems/jetbot-ai-robot-kit/
> https://www.ogis-ri.co.jp/otc/hiroba/technical/lets-try-jetbot/part1.html

Jetbotのサンプルプログラムの1つである[road_following](https://github.com/NVIDIA-AI-IOT/jetbot/tree/master/notebooks/road_following)は、所謂ライントレースのプログラムであり、以下のような流れで進めていきます。
1. データの収集 (data_collection.ipynb)
2. 収集したデータを基に、学習済みモデルを用いて転移学習を行い、モデル作成 (train_model.ipynb)
3. 作成したモデルを使い、実際に走行させてみる (live_demo.ipynb)

しかし

元記事を表示

Python: 一行で標準入力から複数行受け取り改行を取り除いて格納する

“`python
import sys

lines = map(lambda s: s.rstrip(), sys.stdin.readlines())

## 確認用
print(“-“.join(lines))
“`

### input
“`
aaa
bbb
ccc
“`
### output
“`
aaa-bbb-ccc
“`

元記事を表示

【huggingface/transformers】Pipelinesの使い方

# Pipelinesについて
BERTをはじめとするトランスフォーマーモデルを利用する上で非常に有用なHuggingface inc.のtransformersライブラリですが、推論を実行する場合はpipelineクラスが非常に便利です。
以下は公式の使用例です。

“`python
>>> from transformers import pipeline
>>> unmasker = pipeline(‘fill-mask’, model=’bert-base-uncased’)
>>> unmasker(“Hello I’m a [MASK] model.”)

[{‘sequence’: “[CLS] hello i’m a fashion model. [SEP]”,
‘score’: 0.1073106899857521,
‘token’: 4827,
‘token_str’: ‘fashion’},
{‘sequence’: “[CLS] hello i’m a role model. [SEP]”,
‘score’: 0.0877449065446

元記事を表示

OTHERカテゴリの最新記事