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

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

【Python】VGG16 を用いた Multilayer Stacked Covariance Pooling (MSCP)

ImageNet で事前学習した学習済みモデル (VGG16 など) を特徴量抽出器として,土地利用の画像分類 (UC Merced Land Use Dataset[^2] など) に使用する論文 “Remote sensing scene classification using multilayer stacked covariance pooling[^1]” の紹介と Python での実装.

# 実行環境

* Python 3.7.2
* Keras 2.4.3

# MSCP の概要

Multilayer Stacked Covariance Pooling (MSCP) のフレームワークを用いた画像分類は以下の手順で行われる.

1. 学習済みモデルのいくつかの隠れ層から多層の特徴量マップを抽出する.
1. 得られた特徴量マップを一つの多層特徴量マップにまとめ (stack),まとめた特徴量マップから分散共分散行列を計算する.
1. 計算された分散共分散行列を特徴量として,線形カーネルを用いたサポートベクターマシン (SVM) を学習する.

今回は,学習済み

元記事を表示

pythonでネタ進捗バーを作ってみた。

# 動機のお話

簡単にいうと、進捗バーを作成したくなりました。
tqdmというパッケージを使えば簡単にできるっぽいのですが、それでは面白みがありません。
せっかくアスキーアートというものがあるのだから、暇な時間はそれを映したいなと思い、いろいろ試すことにしました。

## 必要な知識
まず、進捗バーを表示する際に知っておくべきことがあります。
それは、表示カーソルの動かし方です。
以下のコードを見てください。

“`python:sample1.py
import time
for i in range(10):
time.sleep(1)
print(“\r{}”.format(i),end=””)
“`
これを実行すると、表示される数字が上書きされます。
注目すべきは二つ。

1. end=””
これはprint関数のオプションにある、終端文字の指定で、デフォルトは”\n”(改行文字)です。
そのため、これを””(文字なし)に変更すると、行を下に動かさずに出力できるようになります。
元記事を表示

一般ピープルでもPythonの自作ライブラリをpipに公開する方法

# 自作Pythonライブラリを全世界に公開
Pythonでライブラリをインストールする際は

“`
pip install [ライブラリ名]
“`
というコマンドを使うことが多いですが、
多くの人は以下のようなイメージを持っているかと思います。

**「pipで公開してるライブラリってシリコンバレーのランチ無料のオフィスで働いてる凄いエンジニアが作ったんでしょ?」**

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/610167/18f71b3b-0ccb-6ed9-b3df-954d451bdd29.png)

このように敷居が高そうに見えるpipですが、実は**一般人でもライブラリを公開することができます**

何を隠そう、一般人の味方!す○家で牛丼ランチ(500円)を食べている僕でもアップロードできました。
一般ピープルでも全世界にライブラリを公開できるのは感慨深いです。

公開方法を紹介している記事はいくつかありますが、どこかしらの必要工程が抜けているものが多いように感じた

元記事を表示

画像Idファイルと画像同士の経路ファイルからランダムな移動パターン画像リストを作成するPGM

画像Idファイルと画像同士の経路ファイルからランダムな移動パターン画像リストを作成するPGM

画像Idファイルと画像同士の経路ファイルからランダムな移動パターン画像リストを作成するPGMを作成しました


githubURL:https://github.com/NanjoMiyako/pathAndImage


使い方

画像Idファイルと画像同士の経路ファイルを作成し、以下のコマンドライン引数を指定して
PGMを実行します

python PathAndImage.py 画像Idファイルのパス 画像同士の連結経路データファイルのパス 出力ファイル名 経路移動回数

画像Idファイルの形式
画像Id名, 画像ファイルのURL
(以下同様の行が続く)…

画像同士の連結経路データファイルの形式
移動元画像Id名,移動可能画像Id1, …, 移動可能画像Idn
(以下同様の行が続く)…


参考にしたサイト
LeetCode “45. Jump Game II”に、Dijkstra’s algorithmで挑んだ話

Time Limit Exceededです。whileの中で線形探索を毎回おこなっているのが、おそらくの原因です。

#問題

>
>非負整数の配列numsが与えられています。あなたは、開始時には配列の最初のインデックスにいます。
>
>配列の各要素は、その位置から最大で跳べる幅を表しています。
>
>あなたの目標は、最小の跳んだ回数で、最後のインデックスにたどり着くことです。
>
>常に最後のインデックスにたどり着くと仮定して大丈夫です。
>

問題は、ここから挑戦できます。
https://leetcode.com/problems/jump-game-ii/

#方針

今いるインデックスから次に行くインデックスへ跳んだ回数は、グラフ理論いうところの距離として表現できます。

スタート地点から、グラフ内の全地点の最短の距離を求めるアルゴリズムとして、Dijkstra’s algorithmがあります。

Dijkstra’s algorithmは、負の値の距離があると使うことができません。今回は、跳んだ回数という正の値しかとらない数字を距離として使うので、Dijkstra’s a

元記事を表示

わざわざ気象庁のオープンデータをスクレイピングしてみた

## はじめに

くだらない話を見たい方はクリック

[気象庁のホームページ](http://www.jma.go.jp/jma/index.html)には,みなさんご存知気象データをダウンロードするページがあります.

地点から,気温・降水量など様々な項目から選択してデータをcsv形式でダウンロードすることができるため,とても便利なのですが…

そんなの甘えだと思いませんか?(思いません)

冗談はさておき,ダウンロードできることをド忘れしていた私はわざわざ[このページ](http://www.data.jma.go.jp/obd/stats/etrn/view/monthly_s3.php?prec_no=62&block_no=47772&year=&month=&day=&view=)をスクレイピングしてデータを取得しました.

Pythonだから簡単にかけるとは言え,時間を浪費してしまいました.なのでその時間が無駄ではなかったと自分の中でオチをつけるために,プログラムの内容をここで紹介することにします.

元記事を表示

Pythonを使って自由度調整済み決定係数の大きい説明変数の組み合わせを探索する②(増加法・減少法)

#作業環境
Jupyter Notebook(6.1.4)を用いて作業を進めた。
各versionは`pandas`(1.1.3), `scikit-learn`(0.23.2), `statsmodels`(0.12.0)である。

#やりたいこと
最小二乗法で最適化された線形回帰モデルについて学習し、そのモデルを評価する指標として決定係数や自由度調整済み決定係数を学んだ。学習時には手作業で係数を追加したり削除したりしながら決定係数を比較していたが、これを自動探索するプログラムを練習として組んでみたいと考えた。
つまりやりたいことは、データ全体を渡したら最も自由度調整済み決定係数が高くなる説明変数の組み合わせとその自由度調整済み決定係数を返してくれるプログラムを考えて作ってみたい。
なお、**その説明変数が説明変数として適切かどうかは特に考慮せず、単純に決定係数を比較して説明変数を選択するのが今回の目的である。**

前回は以下の記事で全探索の方法を取り扱った。

https://qiita.com/bianca26neve/items/a1c39b84e242f104e4c4

元記事を表示

AtCoder Beginner Contest 214 参戦記

# AtCoder Beginner Contest 214 参戦記

過去最悪の順位をかろうじて更新しなくてすんだ程度の大爆死……….

## [ABC214A – New Generation ABC](https://atcoder.jp/contests/abc214/tasks/abc214_a)

1分半で突破. 書くだけ.

“`python
N = int(input())

if N <= 125: print(4) elif N <= 211: print(6) else: print(8) ``` ## [ABC214B - How many?](https://atcoder.jp/contests/abc214/tasks/abc214_b) 3分半で突破. 素直に3重ループしても *O*(106) 程度で TLE しないので、素直にやれば良い.

“`python
S, T = map(int, input().split())

result = 0
for a in range(101):
f

元記事を表示

MineMeldをUbuntu 20.04にインストールするバッドノウハウ

# 概要

MineMeldをUbuntu 20.04にインストールすることができたのでメモしておきます。

この記事に記載の内容はバッドノウハウの類ですが、古いソフトウェアを敢えて使わなければならないシチュエーションというのも人生の中ではあると思うので、何かの役に立てば幸いです。

# MineMeldとは?

MineMeldとは、OSINTのデータを自動的に収集するツールです。Palo Alto社が開発し、オープンソースで公開されています。
Palo Alto社が公開している資料がわかりやすいと思います。

https://live.paloaltonetworks.com/twzvq79624/attachments/twzvq79624/JPPublicInfo/17/1/MineMeld%E8%87%AA%E5%8B%95%E5%8C%96.pdf

ただし、現時点(2021/8/14)では以下のような問題点を抱えています。

– 公式サポートは2021/8/1で終了している

参考: https://live.paloaltonetworks.com/t5/blogs

元記事を表示

遺伝的アルゴリズム(GA)をPythonで実装して遊んだ記録

#概要
遺伝的アルゴリズムという言葉は聞いたことあったのですが、よくわからなかったので、お盆休みを使って調べてみました。
参考となるものを見つけて、Pythonで実装してみて覚えようという定番のやり方です。

#参考
研究者ゲンキさんの動画 [Link](https://www.youtube.com/watch?v=nQM4lE3tuGY&list=PLw5AEs-T7pLHIozVoULkPW1uJsnTOYkc_&index=1)
こいこいさんの動画 [Link](https://www.youtube.com/watch?v=0KRlHHud_dQ)

#遺伝的アルゴリズムとは
Genetic Algorithm(GA)といい、最適化問題を解くために生物の進化の仕組みを利用したアルゴリズム
自然界では世代が変わる毎に、環境に適合した個体が生き残る。ただし、突然変異し天才みたいな人が生まれる場合もある。これらをアルゴリズムとしてフローに落とし込めば最適化問題が解けるでしょうということです。
図等での細かい説明は参考の方々がしてくれています。

ある適当な能力を持った個体の集団が存

元記事を表示

業務効率を目的にPythonを勉強します

プロになりたいわけではありませんが、ちょっとした処理を効率化するためにデータサイエンスを学ぼうと思います。
Rは大学院生のときに使っていた経験がありますが、pythonは未経験です。以下のページなどいろいろ見ていると、高度な統計処理をしたいわけではないならpythonで十分のようです。

【R言語とPythonの比較】どっちがおすすめ?両方?データサイエンス・分析のスクール情報も

【データサイエンスとは】勉強方法や資格を紹介!就職/転職や副業にも役立つ

【講座比較】データサイエンス/統計学のスクール・通信講座おすすめランキング!評判口コミも

独学でちまちま進めるのも楽しいですが、短期集中でやった方が身に付くので最初だけオンライン講座を受講しようと思います。

元記事を表示

[CGデザイナー向け]とりあえずPySide2が触りたいんじゃ!というときに見るやつ

##はじめに##
最近Python触るようになってきたのはいいけども、CGソフトの中だけだし。。
それ以外のところでもちょっと使ってみたい!というときに色んなサイトを検索すると、仮想環境を整え終わった前提での記事などが多く見受けられたので、PythonやPySideをいれるところで苦労したり挫折してしまいます。
「とにかく難しいことはええから、とりあえずPySide2が触りたいんじゃ!」

というわけで、自分なりにPySideのサンプルを起動できるまでを備忘録程度に書いていきます。

##環境と使用ソフト##
・Windows 10
・Visual Studio Code (以下、VS Code)
・Scoop

##手順##
1 VS Codeをインストール
2 ScoopでPythonをインストール
3 Pythonの仮想環境を作成
4 PySide2をインストール、サンプルを作成して起動
5 実行バッチを作成

以上が手順になります。
他PCでも使えるように、フォルダごとコピーしてバッチを走らせればサンプルが起動できるようにしています。

##1 VS Codeをインストール##

元記事を表示

データ分析のための基盤構築

# はじめに
データ分析をするにあたって、データ収集、加工、蓄積をするための基盤をGCPを使用して構築しました。
自分がやったことの記録として記事にまとめます。

# 前提
– スクレイピングをされる際は自己責任にてお願い致します。
– GCPに課金される可能性があります。
– PCはmacを使用しています。
– Google Cloud SDKが使用できる必要があります。
– まだの方は[Google Cloud SDKのインストール](https://cloud.google.com/sdk/docs/install)を実行して、パスを通しておきましょう。

# 全体像
以下に実装するアーキテクチャの全体像を示します。
![Untitled Diagram.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/634062/b4d2c29f-62f8-3c67-dff6-6df6ef61c448.jpeg)

上の図に示すような基盤を構築しました。
以下にざっくりとしたデータの流れを示します。
1.

元記事を表示

streamlitでnumpy配列で音声を再生する

# はじめに
streamlitはPythonだけでwebアプリケーションを構築できるライブラリで、その中に音声を再生するウィジェットを作る機能があります。

“`python
import streamlit as st

st.audio(“filename.wav”)
“`
のようにすると、音声プレーヤーが表示されます

ドキュメントによれば、この`audio`メソッドの引数には
> (str, bytes, BytesIO, numpy.ndarray, or file opened with)

https://docs.streamlit.io/en/stable/api.html#streamlit.audio

とのことで、numpy.ndarrayが渡せるようなので次のように音声ファイルをnumpy.ndarrayの形で渡してみても、なぜか実際には音声を再生することはできません

“`python
import librosa

data, rate = librosa.load(“filename.wav”)
st.audio(data) # dataはnum

元記事を表示

PyenvをCentOS7にインストールする

pipenvを使いたかったので[ここ](https://blog.cles.jp/item/11113)を参考した。
参考記事は少し古いからかうまくできない部分があったので、忘備録として残す

結局は1次情報である[github](https://github.com/pyenv/pyenv)を見るのが早かった。

# anacondaのPATHからの削除
anacondaをすでに入れていた人向け

~/.bashrcからanacondaのPATH追加部分を削除

# pyenvのインストール

“`bash
# 必要なライブラリを導入
sudo yum install -y git gcc zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gdbm-devel libuuid-devel xz-devel libffi-devel

# pyenv を github から clone
git clone https://github.com/pyenv/

元記事を表示

OpenSpielで始める強化学習その① ~OpenAI Gymとの比較~

# 初めに
## OpenSpielとは
https://github.com/deepmind/open_spiel

DEEPMINDが作成した研究者向けの強化学習フレームワークのOSSです。マルチエージェントRLの研究の促進や研究の再現性の向上を目的としています。
主にPythonとC++で書かれていますが、GoやSwift、Juliaもサポートされています。
深層強化学習はTensorFlow1、2、JAXとPytorchに対応しています。

## 想定される読者
自分のように研究者ではないが強化学習について勉強してみたいけど何使えばいいんだっけという人向けに書いています。

## 環境
“`bash
$ sw_vers
ProductName: macOS
ProductVersion: 11.4
BuildVersion: 20F71

$ python3 -V
Python 3.9.5
“`

## インストール方法
“`
pip install open_spiel
“`
でインストールされます。ビルドするため8分程度かかるかと思います。
環境によって

元記事を表示

StyleGAN環境構築

まずはとにかく動かしたい!そんな方に成功した互換性をご共有します。

#※デモデータ
現在アクセス制限でダウンロードできず1日待ち?中ですので次回他にも試してます!
URL : https://drive.google.com/uc?id=1MEGjdvVpUsu1jB4zrXZN7Y4kBBOzizDQ

# Tensorflow Ver.
今回はVer2.2.0を利用しますのでエラーの都度styleGAN側のメソッド名を更新します。

例えば”variable_scope”がない際、

“`
err.msg. AttributeError: module ‘tensorflow’ has no attribute ‘variable_scope’
“`
と表示されますので該当ラインにて、このように書き換えます。

“`
前) tf.variable_scope
後) tf.compat.v1.variable_scope
“`

最後に下記に今回が成功した互換性のリストです。
皆様もぜひお試しください!

#互換性リスト
“`
OS : windows 10 (GPUなし

元記事を表示

桜の開花日の予測(試行)

#1.概要
桜(ソメイヨシノ)の開花日の予測モデルの作成を試みた。以下概要および実施結果を記録する。

・モデル種類
 回帰モデル
・着目点
 1.桜の開花は、多くの人が関心を持つ春先のトピックである。
 2.桜の開花は自然現象であるため、データに一貫した傾向があり、
  予測モデルの作成に適していると考えられる。
・学習データ
 説明変数:日本の各都市の気象データ
 目的変数:日本の各都市の桜の開花日(今回はソメイヨシノの開花日に限定した)
 気象庁が各データを公開している(説明変数は1976年以降、目的変数は1953年以降)。
 今回は、1980年から2020年のデータを取得した。

 説明変数データ例:
 https://www.data.jma.go.jp/obd/stats/etrn/view/10daily_s1.php?prec_no=44&block_no=47662&year=2021&month=&day=&view=
 目的変数データ例:https://www.data.jma.go.jp/sakura/data/sakura003_06.html
  

元記事を表示

Chapter 1 – §03 文字列・数値

# 文字列
[§01](https://qiita.com/confrict/items/e1e5c53dd89b79485799#%E3%82%B3%E3%83%BC%E3%83%89%E3%82%92%E6%9B%B8%E3%81%84%E3%81%A6%E5%8B%95%E3%81%8B%E3%81%97%E3%81%A6%E3%81%BF%E3%82%8B)でも紹介したように、 `print()`の中には変数以外に直接文字を入れることができます。
`print()`文でできることを上げていきます。

## ・変数に代入した文字列を連結させて表示する
文字列を変数に代入して、それをつなげ合わせるとき、 `,` を使います。

例えば、`a = 明日は`, `b = 晴れます` 
この二つの単語を`明日は晴れます`にするために a と b の文字列を繋げるとします。
この時、

“`python
print(a, b)
“`
とすれば、

“`python
明日は晴れます
“`
と出ます。

## ・print()文でできること (+α)
## 空白行を作る
文字通り、空白

元記事を表示

numpyを継承する

公式ドキュメントのここらへんに全部載っています。余裕があれば参照してください。

https://numpy.org/doc/stable/user/basics.subclassing.html

https://numpy.org/doc/stable/reference/arrays.classes.html

https://numpy.org/doc/stable/user/basics.dispatch.html#basics-dispatch

# なぜ`numpy`を継承するのか

`numpy`を継承する理由は3つ挙げられます。

### 1. 配列にまつわるメタ情報を残したい

実用上`numpy`を使っている人であれば分かると思うのですが、csvなどからnumpyを読み込み、解析し、またcsvで保存する。普通同じフォルダ内やその付近に保存したいですが、複数のファイルから読み込んだ場合このパスの管理が意外と面倒です。`arr.path`みたいに配列にパス情報を紐づけしたいですよね。

### 2. 異種の配列を同時に使いたい

同じ「配列」でも、生データとフィッティ

元記事を表示

OTHERカテゴリの最新記事