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

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

第2回: アニーリング基礎2.ナップザック問題、Optunaによるハイパーパラメタ最適化

-容量$C$のカバンに、夫々値段$p_i$と大きさ$v_i$が定義される$N$個のお菓子を、出来る限り値段が高くなるように、最大量つめる場合、どのような組合せにするか調べる問題を、アニーリングを用いて実施する。
-更に、今回はハイパーパラメタをOptunaを用いて探索する。
– **Keyword** :*ナップザック問題*、*Optuna*、*ハイパーパラメーターの最適化*

### 基本準備/設定
#### 量子アニーリング用モジュールのインストール
まず、初めに、以下のモジュールをインストールする。
– ***dwave-ocean-sdk***: Dwaveアニーリングマシンのモジュール
– ***openjij***: アニーリングシュミレーター
– ***pyqubo***: Qubo行列作成サポートモジュール
– ***optuna***: ハイパーパラメタの最適化

“`Python
pip install dwave-ocean-sdk
pip install openjij
pip install pyqubo
pip install optuna
“`

元記事を表示

パターン認識 パーセプトロンの学習規則による二値分類について

パターン認識のパーセプトロンの学習規則について説明します。

まずは人工知能における機械学習の分類から説明します。

機械学習の学習方法は教師あり学習、教師なし学習、強化学習に分けられます。
一つずつ見ていきましょう。

教師あり学習とは学習データに正解を与えて学習を与える方法です。
例えば犬の画像を見せて、これは犬の画像だよと教えます。
何枚も教える事で人工知能は犬の画像を見分けられるようになります。
これが教師あり学習です。

教師なし学習とは学習データに正解を与えないで学習をさせる方法です。
教師なし学習が得意とするのはクラスタリングです。
これはデータの類似度に基づいてデータをグループ分けする方法です。

強化学習は学習データに正解は無いが、望ましい行動をした時に報酬を与えて報酬を最大化するような行動を取るような人工知能です。
将棋AIや囲碁AIといったゲームAIが打ち手を学習する際の手法として用います。

今回は教師あり学習であるパターン認識をやりたいと思います。

その一つがパターン認識におけるパーセプトロンの学習規則です。

最近ですと機械学習はライブラリを使いますが今回

元記事を表示

ABC277回答メモ

0.はじめに
 今回はD問題まではそこそこの難易度で
 久々に4問正解達成。
 レートも+38でした。
 40分残してE問題にたどり着いたけど、ちょっと難しかったです・・。

1.A – Shift
 サーッと問題読んで、A問題だから素直に
 ループしてもいいとは思いつつ
 若干手を抜きました。
 
 N個の0数列の先頭から、
 インプットしたA数列のK個目から最後までを入れて
 最後にアウトプットする。
 といった感じで実装しました。

 https://atcoder.jp/contests/abc278/submissions/36605710

2.B – Misjudge the Time
 どう考えても時計のデザインが悪いだろ・・・。と思いつつ
 以下のように実装。
 1) 見間違えやすい時刻(以下ダメ時間)になるまで以下をループ
  1-1)現在時刻、時間Hと分MをA,B,C,Dに分解してダメ時間判定
   1-1-2)A&Cが時として見られるか判定
    -Aが1以下ならOK
    -Aが2の時はCが3以下ならOK
   1-1-3)B&Dが分として見られるか判定

元記事を表示

[wip] ゆるくPyO3のチュートリアルやる

研究でPyO3を使う必要が出た(aka 使いたいだけ)ので[チュートリアル](https://pyo3.rs/v0.17.3/index.html)を適当にまとめる
自分がRust初心者なのと英語読むのめんどい自分向けの備忘録なので正確性は担保しません なので、初めて触れる人は[原著](https://pyo3.rs/v0.17.3/index.html)をあたったほうがいいと思います 明らかに間違いだろってところはまさかり投げてくれると嬉しいです

# 1. [Getting Started](https://pyo3.rs/v0.17.3/getting_started.html)
Rustのバージョン 1.48+ `stable`でも`nightly`でも可
Pythonのバージョン 3.7+
Pythonの仮想環境を使うといい 自分はPythonのバージョンを変えることもないし`venv`使っています(記事では`pyenv`が推奨されている)

仮想環境を作ったら`marutin`をインストールして初期化:

“`bash
$ python -m venv .venv
$ s

元記事を表示

JavaScriptでprint()を使う

最近はPython3で競プロを楽しんでいます。そんな中、JavaScriptに舞い戻ってくると、思ってしまうことがあります。それは、「**console.log()** 長すぎでは?」です。
Python3で **print()** に慣れてしまった体には、 **console.log()** は億劫に感じられてしまいます。

そこで、邪道ではありますが、JavaScriptで **print()** を実装してしまおうと考えました。


### 実装したコード

“`JavaScript
const print = anything => console.log(anything)

x = ‘オススメしません’
print(x)
// >> オススメしません
“`

元記事を表示

文書の類似度を求めるためのTF・IDF

# ベクトル空間モデル

文書中に出現する用語の頻度数をベクトルの要素として考え、複数の文書をベクトルとして表現し、文書の特徴を調べるための手法。
例えば、2つの文書があったとき、同じ用語の出現頻度が高ければその用語に関する特徴を持つ傾向があることが予想できる。
余談だが、このように、2つの文書に同じ用語が現れることを共起という。

# 用語-文書行列(Term-Document Matrix)

各文書を行に、全文書に出現する各用語を行にとり、用語の出現頻度をまとめた行列。

例)文書と形態素解析の結果
文書A ねぎ 焼肉 焼肉 ビール 焼肉 ねぎ
文書B ビール 焼肉 焼肉 ビール しょうゆ 焼肉 しょうゆ ワイン
文書C 五苓黄解 五苓黄解 小柴胡湯 しょうゆ ワイン 小柴胡湯
文書D ビール 小柴胡湯 五苓黄解 小柴胡湯 小柴胡湯 

### 用語-文書行列
| | ねぎ | しょうゆ | ビール | 焼肉 | 五苓黄解 | 小柴胡湯 | ワイン |
| :—: | :—: | :—: | :—: | :—: | :—: | :—: |

元記事を表示

Python開発環境構築手順(VSCode, Docker, Poetry, isort, black, flake8, pytest)

# はじめに
* Python開発環境を整備し直したときのメモです

# どういう開発環境を作るか
* VSCode・Docker上で実行する(ローカルでの実行を想定)
* パッケージ管理はPoetryを利用する
* linter, formatterはisort, black, flake8を利用する
* コマンドだけでなくVSCodeからも利用する
* テストはpytestを利用する
* Jupyter Notebookも利用可能にしておく
* ディレクトリ構成はデータサイエンス向けにする(ここはお好みで)

# セットアップ手順
## 事前準備【ローカル】
* VSCode・Dockerのインストール
* VSCode拡張機能Remote Developmentのインストール

## 設定ファイルの配置
* (参考)フォルダ構成

“`
.
├── .devcontainer
│   └── devcontainer.json
├── .vscode
│   ├── launch.json
│   └── settings.json
├── Dockerfile
├──

元記事を表示

Pythonエンジニア認定データ分析試験合格までの勉強法

### はじめに
前回に引き続きPython試験に挑戦し、約一か月で無事合格できましたのでこれから試験に臨む方向けに、どのように勉強したか共有したいと思います。
私自身は、Pythonを実務で扱った経験はありませんが、Pythonエンジニア認定基礎試験は合格しています。同じような境遇でしたら参考になるかと思います。

Pythonエンジニア認定基礎試験の合格までの勉強法についてもまとめていますのでよかったら参考にしてみてください。

https://qiita.com/y-matsunaga/items/e0a9ec28584930cf2b2a

### 試験について

>◆受験方法
受験日:通年
試験センター:全国のオデッセイコミュニケーションズCBTテストセンター
申込URL:http://cbt.odyssey-com.co.jp/pythonic-exam.html
受験料金:1万円(税別) 学割5千円(税別)

出題範囲
>主教材である翔泳社「Pythonによるあたらしいデータ分析の教科書」より以下の範囲と割合で出題

![image.png](https://qiita-i

元記事を表示

conda activateしたらエラー出た件

Condaで環境を作ったのでゴリゴリ作業進めるぞー!
と意気込んだもののconda activateしたらエラーが出たので
確認するべきことと原因・解決方法をまとめます….

## 確認するべきこと

– コマンドを実行するディレクトリの位置を確認する
– タイプミスないか確認する
– 使う仮想環境間違えていないか確認する(コマンド側で)

## 原因
今回の原因ですが….

原因その①:実行コマンドで`conda activate hoge`の「hoge」の部分を間違えていた
原因その②:conda activateを実行する場所(パス)を間違えていた

という凡ミスです。

## 出てきたエラー
### エラー①
作業ディレクトリを仮にhogeとして、
その場所まで移動し`conda activate hoge`を実行したところ

“`
EnvironmentNameNotFound: Could not find conda environment: hoge
You can list all discoverable environments with `conda

元記事を表示

【畜生】Pythonを使って車校の技能実習予約を自動化したBlog (1/n)【セコ技】

# ほんとうにはじめに
偉そうに Qiita に記事を投稿させてもらっておりますが、そもそも僕は大学学部1回生で理系ではあるけど工学部生ですらないんですよね。だからプログラムにも「なんでそんなやりかたした?」「いやこうした方が読みやすくなるしスピードも上がるくね?」とツッコミが入る部分が絶対多々多々あると思います。暖かい目で見守って下さり、できれば指摘していただけると嬉しく思います。

# はじめに
いや今年の春晴れて第二志望の大学に受かって念願の教習所に通っているんですけどね。大都会では技能実習の予約がとれん!
ってことでキャンセル待ちって言うのをやってるんですけど…

私が通ってる教習所のキャンセル待ちのやり方は

> ①実習生が番号が書かれている札をとる
> ②番号が呼ばれた順に、キャンセルが出たら技能実習を受けられる

という制度なんですけどもね。

初めてキャンセル待ちしたとき “22”と書かれた札を取ったんですよ。そしたら呼ばれた順番が 18 → 25 → 21 → **22** → 7 → 16 とかで4番目に乗れて。「はは~ん、番号が後ろの方が先に呼ばれやすいんだな

元記事を表示

Selenium コードを GUI で自動生成して実行するアプリを作りました

## 動機
現場ではまだまだ手動でのテストが多いと聞き、手動でのテストをしている人向けに自動テストに慣れてもらいたいと思い、自動テストコードを GUI で生成して、それを AWS上で実行できるアプリを作りました。
巷で売られている自動化ツールの簡易版みたいなもんです(Webページの画像から Xpath などを指定できない、とか)。

## 成果物

公開している URL は、

https://master.d28diowzfkuhqr.amplifyapp.com

公開しているコードは、

https://github.com/YmBIgo/auto-run-test-code

にあります。

#### GUI について

GUI で操作とは言っても、Xpath や If文・While文 くらいの基本的な IT知識は必要になります。
基本的な GUI は下のようになっています。

![スクリーンショット 2022-11-19 18.54.19.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/9264

元記事を表示

ろうとるがPythonを扱う、、(その4:まとも版コマンドプロンプトもどき)

# Windowsコマンドプロンプトもどきプログラム(まとも版)
[前回(その3)](https://qiita.com/infinite1oop/items/96a153037bd7b6edf093)で予告した、Text Widgetのみでコマンドプロンプトもどきを実現(より近づく)できたので、その記録をここに記す。

## 作成したもの
![最初.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/634816/da228482-8364-4913-3f6d-f65629a04a93.png)
ここでは、「> 」がプロンプトである。
![結果1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/634816/f9d0eecb-9e9e-b8be-f997-e563d23e251d.png)
![結果2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/

元記事を表示

初稿

初投稿です。
これからPythonやC++についてアウトプットしていきたいと思います。
まずは手始めに挨拶を。

“`python:qiita.py
print(“Hello World.”)
“`

“`c++:qiita.cpp
#include

using namespace std;

int main(int argc, char** argv) {
cout << "Hello World." << endl; return 0; } ``` よろしくお願いします。

元記事を表示

Githubのスターでランキングを作ってみる in python

Qiita初投稿。頑張って書きます。

最近GitHubのAPIを使ってスクレイピングアプリ的なものを作りました。
題して「Github Star Rank」

https://app-rank-git1.herokuapp.com/
pythonとflaskを使用してます。

スターの数を取得して人気のリポジトリTop5を表示します。

どうやってAPIを叩いたかを自分用に記録していきます。

1、APIの取得

これがまず最初の難関。GitHub APIのページでスター関連(starring)のAPIを探したが、どれもランキングに使えそうな物が無い。例えばどのユーザーがどのリポジトリにスターを押したかとか、このリポジトリーには誰がスターを押したか、とかはAPIで叩ける。でもGitHub全体でどのリポジトリーがスター数を獲得したかは網羅してないようだ。

しかし色々調べていくと解決の鍵はsearchカテゴリーにあるんじゃないかと思えてきた。ドキュメントでも”Search API を使うと、GitHub で特定のアイテムを検索できます”と記されてる。盲点だった。

でもどうやって

元記事を表示

python tupleの要素は変更でき(る|ない)?

### よく見る文
python tupleの要素は変更できない — (1)

変更をしようとすると確かに、エラーが出ます。
“`python
>>> a = (1, 2, 3)
>>> a[0] = 10
Traceback (most recent call last):
File ““, line 1, in
TypeError: ‘tuple’ object does not support item assignment
“`

Webで調べると、**tupleは要素の変更ができない**とさんざん言われていますので、私は催眠術にかかってしまったのですが、ある時目が覚めました。以下の実験例を見てください。
“`python
>>> a = (1, [2, 3], ‘4’, {5: 6}) # — (2)
>>> a[1].append(4)
>>> a
(1, [2, 3, 4], ‘4’, {5: 6}) # — (3)
>>> a[-1][7] = 8
>>> a
(1, [2, 3, 4], ‘4’, {5: 6,

元記事を表示

【Python】昔C言語で作ったゲームをPythonでリファクタリングしてみた

# この記事について

特に初心者にとってためになる記事ではないと思います。
ただ今後のために記録に残したいがために記事にしました。
読む価値がありそうなのはゲームがしたい人、初心者のコードのレビューをしたい人とかでしょうか。

# ?始めに

昔自分で作ったゲームをPythonで書き直し、同時にリファクタリングもしてみましたー!!

?そのゲーム

https://qiita.com/scythercas/items/77d213b9f6ead9954dd6

あげた直後に[コメント](https://qiita.com/scythercas/items/77d213b9f6ead9954dd6#comment-9fde105241cf0dc75c86)にて @shiracamus さんが凄く綺麗に書き直してくださりました。

ここで初めて関数分割という概念を知り、見やすさとコードの簡潔さに感動した覚えがあります。

今回は成長出来ているか確かめるため参考にせずにやってみました(もちろん当時はめちゃくちゃ見ました)。

# ?ルール説明

丁寧に説明してるつもりですが、プレイしてい

元記事を表示

Pythonのプログラムをseedを変えながら何回も実行したい

# 0. はじめに
卒論などで実装はできるようになった!あとは何回も実験をしよう!ってなると、Pythonのプログラムをseedを変えながら勝手に何回も繰り返し実行して、その結果を記録してくれたらな、、と思います。
そんなときに、シェルスクリプトを書いて実現してみようというお話です。

(他にも方法はいろいろありますが、個人的にはこれが1番楽な気がしました。が、初学者なので間違っているところやもっとこうするといいぞっていうのがぜひ教えてください、、)

“`
実行環境
linux, python3.10.6
“`

# 1. 実行したいプログラムに準備をする

まずは、実行したいプログラムに少し準備をします。
今回は実験結果の配列(下のコードだとhistory)はnumpyを使って.npyファイルに保存したいと思います。
なお、正しく実行できているか確認するためにもtime.time()を使って実行時間を結果の配列に含めておくと便利だと思います。

“`Python:sample.py
import numpy as np

#########自分の実行したいコード##

元記事を表示

【Python】位置情報解析ライブラリscikit-mobilityについて② ~前処理編・前編~

# 1. scikit-mobilityとは?
scikit-mobilityは位置情報データを使用して人の動きを解析したり、可視化することができるpythonライブラリです。

公式ドキュメント:https://scikit-mobility.github.io/scikit-mobility/index.html
GitHub:https://github.com/scikit-mobility/scikit-mobility
公式ドキュメントは英語しかありませんが結構充実していて、
GitHubにはチュートリアル等も載っているので試してみるのがおすすめです。

scikit-mobilityの主な機能と、チュートリアルについて解説しているQiitaもありますのでこちらも是非参考にしてください。
* [【Python】位置情報解析ライブラリscikit-mobilityについて① ~scikit-mobilityとは?~](https://qiita.com/Nightley_dev/items/02b8fbad2db8236a92d1)

# 2. 今回紹介する関数について
##

元記事を表示

【Python】挿入ソートを盛大に勘違いしてしまった件

# 経緯

並べ替えアルゴリズムのうち、**挿入ソート**なるものを見つけ実装しようと思った矢先こんな記事に出会った。
(調べると結構上に出てくる)

https://medium-company.com/%E6%8C%BF%E5%85%A5%E3%82%BD%E3%83%BC%E3%83%88/

> * 挿入ソート(基本挿入法)とは**未整列の配列**から1つずつ値を取り出し**整列済み配列**の適切な位置へ挿入していく手法です。
> * 「6」は「7」より小さくて「5」より大きいので、「5」と「7」の間に挿入

なるほど、**新しく配列を用意**して、要素を挿入するときは**自分で適切な場所を探して挿入**するんだな、って解釈した。

ところが、、挿入ソートが**自分の実装と異なるものばかり**であることが発覚した。

> [バケットソート](https://ja.wikipedia.org/wiki/%E3%83%90%E3%82%B1%E3%83%83%E3%83%88%E3%82%BD%E3%83%BC%E3%83%88)でバケツ内の並び替えをするときに、どのアルゴリズムを

元記事を表示

【おひるーれっと】#00 今日のお昼ごはんを決めてくれるアプリを作りました

## はじめに
同期とランチに行くとき、いつも何を食べるか迷ってしまいます。

> 「何でもいいよ」
> 「美味しいもの食べたい」
> 「食べられるものならOK」

毎日のこんな会話をやめるべく、優柔不断なぼくたちの意思決定 ~~(ごはん選び)~~ をサポートするアプリを作りました。これで意思決定にかかる時間を最小化して休憩時間を確保し、「時間価値を最大化する」ことができますね!

## つくったもの
今回作ったのは、お昼ごはんを決めるためのWebアプリケーションです。
制作物は[ここ](https://ohiroulette.vercel.app/)からアクセスできます。[GitHubはこちら](https://github.com/yuji-0207/ohiroulette)からどうぞ。

レスポンシブ対応してないので**スマホからアクセス**してください。
あとデザインださいです。

  • OTHERカテゴリの最新記事