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

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

RayでPypeRの処理を分散する方法

(株)日立製作所 研究開発グループ サービスコンピューティング研究部の上野です。

前回の記事では、[PypeRでPythonコードとRコードをまとめる方法]()についてご紹介しました。
今回は、PypeRとRayの組み合わせについてご紹介します。

[Ray](https://docs.ray.io/en/latest/index.html)は、スケーラブルで汎用的な分散処理のフレームワークです。
Rayのネイティブライブラリとツールにより、複雑なアプリケーションの計算ができます。
Rayは近年注目を集めているOSSで、Ray Summit 2021ではAWSがプラチナムスポンサーになっています。

大量データの分析などに分散処理は欠かせない要素ですが、Pythonだけで書こうとするコードが複雑になりやすいという問題があります。Rayが提供するライブラリを使うことによって、分散処理をシンプルに実装できます。

Rayの詳細については、[分散処理を民主化するRay](https://qiita.com/yu_nakata/items/ee9514d48eb891d61bae)でも紹介し

元記事を表示

機械学習による株価予測 KaggleのJPXコンペを終えて

# はじめに
UKIです。

Kaggleで開催された[JPX Tokyo Stock Exchange Prediction](https://www.kaggle.com/competitions/jpx-tokyo-stock-exchange-prediction)のサブミッションが終了しました。本コンペの結果が出るのは3ヶ月後ですが、記憶が鮮明なうちにコンペを終えた感想をまとめておきたいと思います。

# コンペ仕様
ざっくり要約すると、
– 日本株2000銘柄の中から、
– 毎日200銘柄ロング、200銘柄ショートし、
– 3カ月間の日次損益のシャープを競う

運ゲーになりがちなファイナンスコンペですが、以下の点で問題設定に工夫が凝らされていると感じました。

– 買い入れ銘柄数を大きくすることで異常値の影響を軽減する
例えば買い入れ銘柄が少ない場合、運よくSTOP高銘柄を引き当てたプレイヤーは大きなアドバンテージを得ることになります。買い入れ銘柄を大きくすることで異常値の影響を軽減し、予測性能の実力を可能なかぎり測れるよう配慮されています。

– 評価指標がシャープレ

元記事を表示

loggingの多重実行を防止する

# 概要
GoogleColab上でloggingを含むコードを複数回実行すると同一のログが重複して出力される。
全く同じ内容のログで不要なので出力されないようにする。

# コード(変更前)

“`Python
from logging import StreamHandler, Formatter, INFO, getLogger

handler = StreamHandler()
handler.setLevel(INFO)
handler.setFormatter(Formatter(“[%(asctime)s] [%(threadName)s] %(message)s”))
logger = getLogger()
logger.addHandler(handler)
logger.setLevel(INFO)

“`

こんな感じのコードがあったとする。
これを複数回実行すると重複して出力されてしまう。
`logger.addHandler` を実行するとハンドラが `logger.handlers` 変数に格納される。
`handlers`は、「同じハンドラは

元記事を表示

【Python】ワンライナーコッホ曲線【ネタ】

# はじめに
徒然なるままに研究室に居ると、隣で後輩が課題のコッホ曲線を描画するプログラムを書いていたので、自分も書いてみむとて書くなり。

# コッホ曲線とは
>コッホ曲線(コッホきょくせん、英: Koch curve)はフラクタル図形の一つ。スウェーデンの数学者ヘルゲ・フォン・コッホ (Helge von Koch) が考案した[1]。線分を3等分し、分割した2点を頂点とする正三角形の作図を無限に繰り返すことによって得られる図形である。  - [コッホ曲線 – Wikipedia](https://ja.wikipedia.org/wiki/%E3%82%B3%E3%83%83%E3%83%9B%E6%9B%B2%E7%B7%9A)

こんなの↓
![Koch_curve.svg.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/501281/b296d9c7-6bfd-e5ce-1cbd-989b00fe7cf1.png)

# 書くなり
“`python
koch = lambda x: np.r

元記事を表示

[dataclasses-json] Dict型のプロパティに文字列を設定しようとすると、”TypeError: Type List cannot be instantiated; use list() instead”が発生した

# 環境
* Python3.10.2
* dataclasses-json 0.5.7

# 何が起きた?
`dataclasses-json`の`from_dict`関数で、Dict型のプロパティに文字列を設定しようとすると、当たり前ですがエラーが発生します。

“`python:bar.py
from dataclasses import dataclass
from dataclasses_json import dataclass_json
from typing import List, Dict, Any

@dataclass_json
@dataclass
class Person:
name: str
type: Dict[str, Any]
“””型が間違っている。正しくは`str`型”””

@dataclass_json
@dataclass
class School:
name: str
people: List[Person]

d_person = {“name”: “Alice”, “type”

元記事を表示

Bokeh 凡例クリックにカスタムイベントを登録する

Pythonのグラフライブラリ [Bokeh](https://docs.bokeh.org/en/latest/index.html)のTIPSです。

凡例クリックで、関連するグラフを一斉に表示させたり、非表示にしたりしたいことありますよね。
ですがBokehでは、凡例にカスタムイベントを直接登録することはできなさそうでした。

解決法を探したところ、[スタックオーバーフローにありました。](https://stackoverflow.com/questions/70392754/how-to-create-working-callback-on-legenditem-in-bokeh)
プロット(Renderer)の表示非表示の状態変化には、カスタムイベントが登録できるようです。

簡単な例ですが、以下のような感じです。

“`python
from bokeh.plotting import figure, save
from bokeh.layouts import gridplot
from bokeh.models import CustomJS

p1 = figur

元記事を表示

有限要素法シミュレーションの結果をBlenderでモデル化できるようにした

# はじめに

有限要素法というものがあります。
企業の設計の紹介とかで見るカラフルな色がついてどこに力がかかっているかわかるやつです。
それを見るツールはあるのですが、これもしかしたらBlenderでも見れるのでは,
と思い、プログラムを作りました。
幸いBlenderはPythonでの操作に対応しており、以下のようにできました。
今回はそのプログラムについて解説していきたいと思います。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/993303/3580de74-7908-2cea-3f13-c05b2ac33a73.png)

入力ファイル群とプログラムは以下に置いておきます。

https://github.com/yuki-2000/Blender_FEM

# Blenderの準備

Blenderは無料で使えオープンソースで開発されている高機能3Dモデリングソフトです。

https://www.blender.org/

使い方に関しては、解説書を公開している方

元記事を表示

Flask と Electron で作るデスクトップアプリ ①「導入編」

Python でデスクトップアプリを作る際、一つの選択肢とし今回 **Flask+Electron** という構成を解説していきます。
デスクトップアプリを作る方法を知るだけで**やりたいことを形にしやすい**と思うので私の中ではWebより取っつきやすいのではと**おすすめ**です。
第1章として、最初は**最小構成**で起動するまでを確認します。

## 開発環境
* **Windows 11**(Windows10でも可)
* **Python 3.10**
* **Flask 2.1.2**
* **electron v19.0.6**

## 環境構築
### 1.Electron
以下のリンクから Node.js をインストールし、`npm`コマンドを使えるようにする。
[Node.jsのインストール](https://nodejs.org/ja/download/)

#### 1.1. 作業ディレクトリで以下のコマンドを実行

“`ruby:ターミナル
npm init -y
“`

#### 1.2. 作成されたJSONファイル
main が実行する際に読み込むファ

元記事を表示

BERT vs Word2Vec ~単語分散表現による同義語抽出~

# はじめに
なんだかんだBERTを使ったことがなかった。
いまや、自然言語処理といえばBERTの世の中だというのに。
若者でなくなり、流行を追えず、Facebookはやっているが、InstagramやTiktokはやっていない、そんな自分…。
せめて仕事にしているデータ分析の世界では後追いでも流行を追うべきでは?そんな気持ちになった今日この頃。

ということで、事前学習済みモデルを使うとか、そもそも手持ちデータで自分で事前学習するとか、huggingfaceのtransformersでいろいろできるようになっておきたかったので触ってみた。
普通に触るだけでは味気ないので、単語分散表現を抽出し、cos類似度を計算して同義語抽出についてword2vecの結果と比較することに。
WordNetで定義された同義語と同じ単語をいくつ同義語として抽出できるか評価した。

word2vec、Transformer、BERT・・・etcとはなにかといった説明はしない。

# ざっくり概要
まず公開されている[chABSA-dataset](https://github.com/chakki-work

元記事を表示

python list files

“`
from os import listdir
from os.path import isfile, join

def main():
mocapFbxPath = ‘J:\\hx\\work\\prod\\mcp\\motiondata\\export’
onlyfiles = [f for f in listdir(mocapFbxPath) if isfile(join(mocapFbxPath, f))]
for _file in onlyfiles:
print(_file)
# cmds.file(new=True, force=True)
# cmds.file(fileName, open=True)

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

元記事を表示

プログラミング1年生のPythonメモ②~例外と例外処理~

## はじめに
:hatching_chick::hatching_chick::hatching_chick:
こんにちは。
文系出身のシステムエンジニア1年生です。
(いつの間にか入社2年目になってしまいましたが、気持ちが1年目なので1年生です。)

さて、前回の記事では「エラーには2種類ある」という話をしていました。
[プログラミング1年生のPythonメモ①~エラーの種類~](https://qiita.com/sa_6ebdc2/items/c543742960c7f9a2ba22)
>間違ったプログラムを動かそうすると発生するエラー。
これらは大きく2つの種類に分けることが出来ます。
一つはそもそも動かない(動かすことが出来ない)もの。
もう一つは動くけれど途中で止まってしまうものです。
一般的に前者はエラー(構文エラー)、後者は例外と呼ばれます。

今回は後者である「例外」について取り上げてみようと思います。

## 例外とは

構文ミスなどによって、そもそも実行が出来ない構文エラー(Syntax Error)に対し、
動かすことは出来

元記事を表示

SeleniumでGoogleアカウントにログインした状態を保持する

# はじめに
GoogleではSeleniumを利用したアカウントへの自動ログインは拒否するよう設定されています。
そのため、SeleniumでGoogleアカウントを利用するようなコードを実行したい場合は、Googleアカウントにログインした状態のブラウザを使う必要があります。
実際に私はSeleniumでGoogleアカウントを利用する自動テストの開発案件で、Googleアカウントにログインした状態のブラウザを使うようにしました。
そこで本記事では、Python + Selenium + Chrome環境でGoogleアカウントにログインした状態のプロファイルを指定してコードを実行する方法を紹介します。

# 事前準備
まずChromeを起動し、手動でGoogleにログインします。
次に、現在使用しているプロファイルを確認するため、URL欄に`chrome://version`と入れます。
「プロフィールパス」から使用中のプロファイルの場所と名前を確認することができます。![コメント 2022-07-05 080528.png](https://qiita-image-store.

元記事を表示

【機械学習超入門】回帰の全体像をざっっっくり学ぶ

そもそも回帰とは手元の実測値に対してアルゴリズムを適用させ、実測値を近似できるように当てはめていく作業のことを指します。

すなわち、回帰分析とは手元のデータから有り得そうな未来を考える統計的手法です。
また手元のデータ(要因となるデータ)を「説明変数」といい、求められた結果のデータを「目的変数」といいます。

ここまでは理解できたでしょうか。
今回は言葉の説明だけですのでとりあえずなんとなく理解ができればクリアです!
1%だけでも分かれば後々検索することができるので、超入門としては大満足の進歩です!
それでは続きます。

回帰問題は大きく2つに分けられます。
線形回帰と非線形回帰です。ここで線形とは直線で表現するか否かという理解でOKです。

まず線形回帰で有名なものとしては
 ・単回帰分析
 ・重回帰分析
 ・Ridge回路
 ・Lasso回路
があります。

次に非線形回帰で有名なものは
 ・決定木
 ・ランダムフォレスト
 ・ニューラルネットワーク
があります。

これらをアルゴリズムといいます。データサイエンティストはこのようなアルゴリズムを用いてデータ分析を進めているのです

元記事を表示

画像をハッシュ化しRDBMSに記録し、SQLで類似画像を検索する

## 概要

大量の画像の中から類似画像を検索するソリューションを開発するとします。

類似画像を検索したいが、その都度ファイルを読み出したり、メモリに乗せて処理するのは速度やHWコスト面で大変です。
検索を容易にするためにはRDBMSを活用するのが楽です。
そのため今回は画像の形状パターンをハッシュ化して予めDBに登録しておき、検索したい画像のハッシュ値とSQLだけで類似画像を検索できるようにします。
画像の形状パターンをハッシュ化するには Avarage Hash(aHash) や Perceptual Hash(pHash) などの手法があります。

### Avarage Hash

画像を8×8に縮小してグレースケール化した各点の輝度値の平均値を取り、その平均値と比べ各点大きいか小さいかで2値化して一列にすることで64bit値を取得します。

### Perceptual Hash

画像を8×8より大きい適当なサイズに縮小して、離散コサイン変換し、低周波成分の8×8を利用して64bit値を取得します。

## 画像のハッシュ化
aHash や pHash は [Image

元記事を表示

Arduino UNOでInput / Output をGUIでコントロールする

##簡易計測や出力可能な装置を作る

前回のArduinoのADCを6chグラフ表示したものに加えて
Arduinoで使える入出力ポートを簡単に使えるGUIを作ってみました。

以前のArduino UNO ADC表示のPort入出力版となります。
https://qiita.com/Nomisugi/items/fcad01dacfb7d728be44
###概要
Arduino UNOの入出力ポート(Port 2~9)をGUIコントロールします。
![ArduinoUNO.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/506495/9597fd5b-31fa-e364-8944-343d1d486ef3.png)

###使い方
1 Arduino UNOに Ardipy.inoを書き込む
https://github.com/Nomisugi/Ardipy/blob/master/Ardipy01.ino

2 Ardipy_PortControler.exeをダウンロード
https://g

元記事を表示

Transformerを用いた株価予測(Python)

いつかやります。LGTMくれたら早く書くかも

元記事を表示

Python3エンジニア認定基礎模試試験1回目 -間違えた問題-

獲得点数 475/1000点


正答率: 47.5 % ( 19問 / 40問 正解 )

“`python
print(“出力結果:”)
for num in range(10):
print(num)

A,0 1 2 3 4 5 6 7 8 9
“`

“`python
ビルドイン関数dir()についての適切なものを選びなさい。

A,モジュールが定義している名前を確認することができる
“`
“`python
print(“出力結果:”)
print(‘円周率は%5.3fである。’%math.pi)

A,出力結果:円周率は3.142である。
“`
:::note info
インフォメーション
%5.3f→
% = math.pi つまり 3.141592653589793
5.3f = 最小の印字数5(小数点もカウント)で小数点以下が3桁
:::

“`python
クリーンアップ動作を定義してあるオブジェクトに対して、
クリーナップ動作を保証した形で利用するための構文で適切なものを選びなさい。

A,with
“`
:

元記事を表示

KV260 の EEPROM を読む

## はじめに

Kria KV 260 Vision AI Starter Kit (以下 KV260) には基板の情報や MAC アドレスなどを格納した EEPROM が I2C で接続されています。この記事では、この EEPROM を読む Python プログラムを紹介します。

## FRU とは

EEPROM の内容は Xilinx 独自のフォーマットと思いきや、実は Intelligent Platform Management Interface(以下 IPMI) という規格のうちの Platform Management FRU Information Strage Definition で定められたフォーマットに基づいて格納されています。ちなみに FRU は Field Replaceable Unit のことらしいです。詳細は以下のページを参照してください。

* https://ja.wikipedia.org/wiki/Intelligent_Platform_Management_Interface
* https://www.intel.com/

元記事を表示

pythonを用いて多次元の配列を同時にソートする

# pythonを用いて多次元の配列を同時にソートする

## 目的
複数の配列をある軸を基準にして同時ソートする.\
pythonの組み込み関数zip()の説明

## やりたいこと

“`python
rects = [
[10,20,100,200],
[11,21,110,210],
[12,22,120,220],
[13,23,130,230]
]
classes = [“woman”, “man”, “woman”, “man”]
scores = [0.5, 0.2, 0.9, 0.3]
“`
上記のような多次元配列reactsとclassesを確信度スコアscoreを基準にして並び替える

### まずは下準備: zip()とは
Pythonの組み込み関数zip()は複数のイテラブルオブジェクト(リストやタプルなど)の要素をまとめる関数。forループで複数のリストの要素を取得する際などに使う。\
forループの中で複数のイテラブルオブジェクト(リストやタプルなど)の要素を同時に

元記事を表示

Pythonはローコードだと言われたので 〜(1)heapqの”実装”〜

# この記事で説明すること、しないこと
この記事では、
・**優先度付きキュー(heapq)の概要説明**
・**ライブラリのheapqと自作heapqの速度・安定性評価**
について書いています。heapqのアルゴリズムについての説明はこちらの記事などを参考にしてください。

# ことの発端

ぼく「カタカタカタカタ…(競プロ中)」

同僚「Chibaくん競プロやってるの?」

ぼく「そうなんすよ、まだ始めたばっかりで成績良くないけど笑」
ぼく「パタン(そっとノートPCを閉じる)」

同僚「そうなんや、言語は何使ってる?」

Py\*\*\*nばかり使っているぼく「基本Python使うけど、競プロでは時々C++かね-」
Py\*\*\*nばかり使っているぼく「Rustとか勉強してみたいけど」

同僚「そうか、python便利よね、実行速度遅いけどね」
同僚「あれ、実質ローコードじゃん?笑」

ぼく「あはは()」
ぼく「、、、」

同僚「、、、」

# お品書き
「Pythonはローコードや!」という暴論に遭遇したので、Pythonに標準搭載されているheapqに対抗し
1. 自

元記事を表示

OTHERカテゴリの最新記事