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

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

Pythonライクな新しい静的型付け言語Ergの紹介

:point_right: [Github](https://github.com/erg-lang/erg)

:point_right: [The Erg Book](https://erg-lang.org/the-erg-book/JA/)

:point_right: [webpage](https://erg-lang.org/)

:point_right: [shibaさんのzenn記事](https://zenn.dev/mtshiba/articles/a38c9fcd9646d4)

個人的にずっと気になってちょくちょくドキュメントや実装のお手伝いをしている

新しい言語が作られていくのが見ていてとても楽しい

内部的にはこうなっているのかという仕組みを学べて楽しい

pythonに型を宣言して書けるという喜び

ergには[discord](https://discord.gg/zfAAUbgGr4)もあるのでぜひ参加してみてください

## Summary

:::note warn
まだ開発途中なので、変更や未実装な部分がたくさんあります
上手く動作しなか

元記事を表示

PyCaret(+ MLflow)を使ったタイタニックの生存者予測

# PyCaret で行うTitanicの生存者予測

PyCaret(+MLflow)の使い方を調べたので備忘録を残します。
題材としてはKaggleのチュートリアルでも使われるTitanicの生存者予測を行います。

# 参考資料
本投稿は以下記事を参考にしています。
– [PyCaret公式ドキュメント](https://pycaret.gitbook.io/docs/)
– [PyCaretとMLflowで機械学習の実験を簡単に実行・記録する](https://data-campus.ai/announcements/k9grrqa6ljedngeu?type=text)

# データ

データは以下よりダウンロードし、実行場所と同階層に`train.csv`と`test.csv`を配置してください。
– [Titanic – Machine Learning from Disaster](https://www.kaggle.com/competitions/titanic/data)

# ライブラリのインストール

事前にMLFlowとPyCaretを

元記事を表示

【Python】妻に真夜中のダンスレッスン予約を強要されたので、Webスクレイピングで回避を試みようとしている話 (8.ブラウザを開いて閉じる。)

前回は、「7.importについて確認せよ」について投稿しました。
今回は、実際に seleniumで Google Chromeブラウザを開いて、あるサイトを表示し、閉じるまでをコーディングしたいと思います。

——————————————————————————————-
## 必要なパッケージを importする。
“`reserveLesson.py
1 : #各コンポーネントをインポート
2 : from selenium import webdriver
3 : from selenium.webdriver.chrome import service
4 : from webdriver_manager.chrome import ChromeDriverManager
“`
### 詳細処理

元記事を表示

【エラー】terminate called after throwing an instance of ‘std::runtime_error’ の解決

# 概要
あるニューラルネットワークの学習をしようとしたところ、以下のような流れでエラーが発生。

1. 学習しようとしたら使用GPUメモリが大きすぎてできなかった。
1. 別のサーバ(もっとGPU積んであるやつ)で学習しようとDockerコンテナを立てて環境構築。
1. 学習開始直後、print出力されていたログが全く表示されない(表示されても物凄く時間がかかる)。
1. 長時間待ってようやく表示されたと思ったら以下のようなエラーが発生。
“`
terminate called after throwing an instance of ‘std::runtime_error’
what(): NCCL Error 1: unhandled cuda error
Aborted (core dumped)
“`

# 解決方法
NVIDIAのDocker imageをDockerfileに記述していたものの、そのCUDAバージョンが適切でなかった。

元々のDOckerfileの記述
“`
ARG CUDA=”10″
ARG CUDNN=”7″
FROM nvidia/cud

元記事を表示

ABC274回答メモ

0.はじめに
 A~Cは、ほどほどにいい派応えでしたが、Dから一気に難しい・・・
 気がしました。(DPをマスターしてないからな気もしますが。)
 悩みポイントがなかったため、あっさりした解説になりました。

1.A – Batting Average
 formatは競プロだとあまり使わないので、調べながらの解答となりました。
 もしかしたらroundはいらないのかも。

“`
print(“{:.3f}”.format(round(B/A,3)))
“`

 https://atcoder.jp/contests/abc274/submissions/35870092

2.B – Line Sensor
 インプットをため込んで列ごとにカウントして出力する素直な感じで
 実装してACでした。
 出力を一行にするのにちょっと工夫がいるくらいかな・・。 

 https://atcoder.jp/contests/abc274/submissions/35874996

3.C – Ameba
 問題文を読んだ最初は言っていることが分からなかったけど
 読み込めば単純に番号を毎に

元記事を表示

AtCoderで必要な基礎知識(Python編)

この記事ではAtCoderで必要な基礎知識をまとめてありますのでぜひ参考にしてください。
– 標準入力
– 標準出力
– ソート

## 標準入力
一行の読み込み(文字)
“`py
a = input().split()
“`
一行の読み込み(数値)
“`py
a = input().split()
a_int = [int(s) for s in a]
“`
一行目でサイズが指定された多重配列の読み込み(文字・空白あり)
“`py
a = input().split()
a_int = [int(s) for s in a]
alist = [input().split() for i in range(a_int[0])]
“`
一行目でサイズが指定された多重配列の読み込み(文字・空白なし)
“`py
a = input().split()
a_int = [int(s) for s in a]
alist = [list(input()) for i in range(a_int[0])]
“`
一行目でサイズが指定された多重配列の読み込み(数字・空白あり)

元記事を表示

猫でも作れる感情分析

感情分析とは、入力したテキストの感情を予測する自然言語処理タスクの一つです。データの準備、訓練、実行が簡単にできるということを説明します。

※実行は自己責任でお願いします。

### 1. データ収集
sentiment140とは、英語の感情分析データです。emoticon(海外の顔文字)でツイートを検索することで、ツイートと感情を対応付けます。(このような自動アノテーションをdistant supervisionといいます)

最近は絵文字が使えるので、絵文字を使えば日本語データを検索することが可能です。

以下のツールを使うことでデータ収集します。
https://github.com/sugiyamath/twdl

“`bash
git clone –depth=1 https://github.com/sugiyamath/twdl.git
cd twdl && pip3 install . -r requirements.txt
“`

ツイートの収集例です。

“`bash
twdl -s “Donald Trump” –since 2022-01-01 —

元記事を表示

フィギュアスケートの4回転半・5回転ジャンプの基礎点をscipy.optimizeを使って見積もってみる

フィギュアスケートのグランプリシリーズが開幕し、2022-2023シーズンが本格的に始まりました!今シーズンはマリニン選手が4回転半ジャンプを決めたことが話題になりました。

しかし、マリニン選手いわく4回転半ジャンプは高得点を得るためというより練習のために入れているようです[^Malinin]。これは4回転半ジャンプの基礎点が低いためで、将来4回転半ジャンプの基礎点が上がれば組み込むことがより合理的になるでしょう。

[^Malinin]: [Ilia Malinin: Ready for Skate America (A Divine Sport)](https://adivinesport.com/2022/10/15/ilia-malinin-ready-for-skate-america/)

4回転半ジャンプの基礎点が低すぎるというのは定説になっています。また5回転ジャンプの基礎点は設定されていません。そこで、この記事では4回転以下のジャンプの基礎点から4回転半以上のジャンプの基礎点を見積もってみることにします。

# ジャンプの基礎点 (2022-2023シーズン)

元記事を表示

optunaで探索済みのデータをtrialに渡して重要度を評価する方法

表題の通りです.

具体的には,
1. `trial.create_trial`でデータからtrialを作成
1. `study.add_trials`で`study`にデータを追加

`create_trial`には各変数の分布型を指定する必要があります.(言い換えると分布型は探索空間を定義するものであり,当然ですが分布型によって結果が変わります.)

“`python
import optuna
import numpy as np

study = optuna.create_study()

rng = np.random.RandomState(42)
samples = rng.random((50, 2))
study.add_trials([
optuna.trial.create_trial(
params=dict(x=x, y=y),
distributions=dict(
x=optuna.distributions.FloatDistribution(-5, 5),
y=

元記事を表示

文系SE3年生、軽々に機械学習に挑んだ結果

 こんにちは、エンジニア3年生のSawamuraです。
 今回は文系大学を卒業してからこの3年間でCOBOL(さわり程度)、VB.net(コード読んでいくつかのバグを見つけられる程度)、SQLと触って基本情報技術者試験に合格できる程度の力を身に着けた人間が機械学習の知識を身に着けようとした結果を紹介します。

# その前に
 今回の学習に当たってAidemyさんの「AIアプリ開発講座」の6か月コースを利用させていただきました。
 [Aidemy Premium](https://aidemy.net/grit/premium/curriculums/?utm_source=aidemy&utm_medium=hp&utm_campaign=fv)

 ですが、開始早々体調を崩し、ようやくまともに取り組めるようになったのが終了1か月前(もったいない!)。
 本来このコースでは適宜わからない点をチューターの方に質問しながら進められるのですが、その利点をあまり活用できないままでした。
 ですからかなり短期間での促成栽培感は否めません。

# 目次
– 学習の動機
– 講座の感想
– 環境

元記事を表示

python file からデータ抽出

次のようなファイルからxyzのデータだけ抽出したい

“`
header:
seq: 1
stamp:
secs: 1666429992
nsecs: 873829108
frame_id: “camera_depth_optical_frame”
point:
x: -0.027914434671401978
y: 0.02820553630590439
z: 0.5456792712211609

header:
seq: 2
stamp:
secs: 1666430004
nsecs: 579051551
frame_id: “camera_depth_optical_frame”
point:
x: -0.028040047734975815
y: -0.01734834909439087
z: 0.5262469053268433

header:
seq: 3
stamp:
secs: 1666430018
nsecs: 916446553

元記事を表示

誤差逆伝播法をPythonで実装しながら理解する

「誤差伝播法ってなぁに?」
「ニューラルネットワークのパラメータの勾配を求める為の手法だよ」

## はじめに

誤差逆伝播法を、Pythonで実装しながら理解していくよ。最終的には簡単なニューラルネットワークを作る。

実装は割とシンプルにしたつもり。Pythonがある程度わかる人は、コードを見ることで理解が深まるかも!

## 合成関数の微分

高校でやるやつ。これが分かれば誤差逆伝播法なんてほとんど理解したようなもん

試しに、以下の関数を微分してみよう。

“`math
y = (x + 1)^2
“`

これは普通に展開しても解けるけど、合成関数の微分を使っても解けるね

“`math
u = x + 1 \\
y = u^2 \\
\frac{dy}{dx} = \frac{dy}{du} \frac{du}{dx} = 2u \cdot 1 = 2(x + 1)

“`

こんな感じで。**関数の関数**(合成関数)を微分するときは、関数ごとに微分をしたものをかけ合わせればよかった。

じゃあここまでの流れをPythonで実装して

元記事を表示

【ボードゲーム】ゴブレットの局面遷移を調べてみた【盤面解析】

# はじめに
皆さん、こんにちは。
ゴブレットというボードゲームを御存じですか?
以下のQiita上のゴブレットに関する記事を見て興味を持ったので、ゴブレットというボードゲームを題材にしてみました。
[ゴブレットゴブラーズは先手必勝?完全解析してみた【Python】](https://qiita.com/yasagureprog/items/94c0cb01005b2b94b837)
[ゴブレットゴブラーズの必勝法解析を C++ でやってみた](https://qiita.com/m-kasahr/items/e9bdda783a4c0e820e20)

ゴブレットのゲームAIを作るうえで重要になるであろう局面遷移に関して調べます。

使用した環境は以下の通りです。
Windows 11 Home
Visual Studio Community 2022 version 17.3.3 Visual C++
Visual Studio付属のCMake([参考](https://qiita.com/n-satoru/items/d526b222e2a5b9636073))
boost 1.

元記事を表示

楽しく運動出来るプロダクトを作ってみた。~PythonとProcessingでスポーツセンシング映像作り~

# はじめに

前回に引き続きメンバーとIoT機器を使ったプロダクトを作ろうということで
今回は主に映像のコーディング部分担当に。
作成期間の22年5月頃から22年9月までの約4か月間を振り返ります。

# プロダクトの全体像
スポーツセンシングという事で今回は4種類の運動を
M5stackCore2のジャイロセンサーの値で判別&データをPCに送信。
この部分は前回と同じく担当したメンバーの記事があるのでぜひ見てみて下さい。

ジャイロセンサーの値などデータをBluetoothでPC(=映像を出力する側)で受け取り。
値を反映させた映像、ジェネラティブアートを出力する形とした。
ちなみに運動前中後ごとに音楽も流すようにした。この部分を主に私が作成した感じ。

成果物はこちら。

https://github.com/nanano08/Sports-Sensing-PC-side-Codes

# 使った環境と言語とライブラリ
作成した中でも紹介したい機能を挙げていく。

・データをBluetoothで受け取る部分
・データをProcess

元記事を表示

ARC150回答メモ

0.はじめに
 2週間前の開催分ですが、inoutファイルが公開されたので
 再チャレンジ。
 試験時は、Aを回避してBに挑戦したけど結局正解無しという惨憺たる結果でした。
 今回、解説動画も見ながらA・Bの解答をしてみました。

1.A – Continuous 1
 ぱっと見、細かい場合分けで行けるかなと思いましたが
 場合分けパターンが多くなりそう&Bがいけるかもと思いスルーしました。
 
 後で解説を見て、目からうろこでした。

 考え方(解説内容の整理)
  条件を満たすパターンは
  K個の1の連続が左から右に移動していくような感じになる。
   例)N=5、K=3の時
    ①11100
    ②01110
    ③00111
  文字列Sが、1)~3)をそれぞれ満たせるかを判断し、
  満たせる場合が1個だけの時Yes、それ以外はNoを表示する。

 実装
  1)文字列Sのアドレスiを0~R(N-K)まで移動させていく。
   変数ansに0をセット
   1チェック用変数(連続1判定範囲内で1を取りうる桁の数を保持) C1と
   0チェック用変数(連続1判定

元記事を表示

配列内の重複要素を削除して一つにするスニペット

# 重複したものは一つにしたい

以下のようなリストがあるとします。

> [“orange”, “apple”, “grape”, “apple”, “strawberry”, “strawberry”]

appleとstrawberryが重複してリストにあります。
一種類につき一つだけ残したい場合は次のようにします。

# for loopで処理

“`python
fruits = [“orange”, “apple”, “grape”, “apple”, “strawberry”, “strawberry”]
for i, f in enumerate(fruits): # 基準となるフルーツとインデックスを取得
for compared_i, compared_f in enumerate(fruits): # 比較対象のフルーツとインデックスを取得

if i != compared_i and f == compared_f: # 両者のインデックスが同じではなく、要素が同じ場合、比較対象を削除
fruits.pop(i)

print

元記事を表示

【試行錯誤】OpenAI Whisperを活用した日本語歌詞のforced-alignment その5:正解データづくり

# 概要
OpenAI Whisperを活用した日本語歌詞のforced-alignmentの試行錯誤をしています。
今更ですが、いろんな手法の評価を定量的にするためのalignmentの正解データを作ります。

一応、前回記事は以下です。
[【試行錯誤】OpenAI Whisperを活用した日本語歌詞のforced-alignment その4:stable-tsを試す](https://qiita.com/shimajiroxyz/items/fdbeeb563be5b08837b0)

ただ、番外編っぽい感じで、あまりどれかの続きという感じでもないです。

# 背景
forced-alignmentは書き起こされた内容の各単位(通常は音素)が音源データ上のどの位置(タイムスタンプ)にあるかを推定する技術です。これまで[音源分離をしたり]()、[2種類の音声区間検出結果を統合したりして]()、精度向上を試みてきました。試行錯誤を重ねるうちになんとなく良くなってきた気はするのですが、目視による主観評価しかできていなかったので、目視不要で定量的な評価ができるように、正解データを作ります。

元記事を表示

子豚検知による分類アルゴリズムの比較

### はじめに
先日、子豚の有無を判別する学習モデルをランダムフォレストで作成しましたが、ほかの分類アルゴリズムも教科書に掲載されていたので、それぞれの分類アルゴリズムを使って精度を比較してみようと思いました。

https://www.shoeisha.co.jp/book/detail/9784798158341

比較するモデル
・サポートベクタマシン model_svc
・決定木 model_tree
・ランダムフォレスト model_forest

#### 事前準備
同じデータを使って3種類のモデルを作成して、それぞれの結果を出力させます。
使用している画像やフォルダ構成についてはこちらの記事を参照してください。

https://qiita.com/hiratake_0108/items/6e21b7ddd0e23b166ea7

#### それぞれのモデルを作成

“` python
from sklearn.svm import SVC

model_svc = SVC()
model_svc.fit(X_train, y_train)
“`
“` pytho

元記事を表示

Excelの横持を縦持ちにする

# とにかく便利
Pythonでもできるけれど、とにかく今すぐ横持データを縦持ちデータにしたいときは「Tableauアドイン」が便利です。アドインは無料で、アドインだけでも使えます。オープンデータの加工とか通常業務で扱うデータはだいたいこれで加工しちゃいます。

## ダウンロード先(zip形式)
https://community.tableau.com/s/question/0D54T00000G54lLSAR/installing-and-troubleshooting-the-tableau-addin-for-reshaping-data-in-excel

## 使い方の参考HP
http://tableaujpn.blogspot.com/2015/10/excel-tableau-tableau-add-in-in-excel.html

# pythonでちゃんと作りたい方向け

Excel ファイルをPythonで読み込んで整理されたデータフレームにする

Pythonでデータ分析を始めたときに、とても参考になった記事です。

——–
Tableauアドイン

元記事を表示

Pythonでネットワークアドレスをより小さいサブネットに分割する

# はじめに
 前回はサブネットを集約する[スーパネット化の記事](https://qiita.com/aikamanami11/items/b63f9d663db0fdb34530)を書きましたが、今回は反対にPythonであるネットワークを特定のサブネットマスクでより小さいサブネットに分割する方法について書きたいと思います。

 手っ取り早くネットワークを分割したい方は[こちら](http://ossan.jp/ipaddr/split/)をご利用ください。

http://ossan.jp/ipaddr/split/

# ネットワーク分割

 ここでは192.168.32.0/24というネットワークを/25のサブネットマスクで分割してみたい。

・準備

 必要なライブラリのインストール。
“`
pip install netaddr
“`

・サブネット分割

“`python:split.py
#便利なライブラリのnetaddrを読み込む
from netaddr import IPNetwork

#192.

元記事を表示

OTHERカテゴリの最新記事