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

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

Pythonで拡張子を変換するコード

備忘録やOUTPUT的な意味での蓄積

#作成目的
作業用の画像をすべてpngに変換したいことが定期的に起こるので、対象フォルダに格納されている画像をすべてpngに変換する

#作成環境
・windows10
・Anaconda
・python3
・Jupyter Notebook

#ドキュメント
①PNGに変換したいフォルダ名を入力
②folderがなければcurrent_folder内に、png_folder を作成し画像をpngへ変換
③すでに同じフォルダ名がある場合、誤操作を防ぐためにErrorになる

#ライブラリの読み込み

“`python:All Necessary Libraries.py
import pathlib
import os
import shutil
import pprint
import numpy as np #numpy使ってないです.癖です.
from glob import glob
from PIL import Image
from tqdm import tqdm
from pathlib import Pat

元記事を表示

Pythonで指数表現のfloatをstrに変換する

Pythonでは、数値型を文字列型に変更するためにはstr()でキャストすればよいが、指数表現のfloatをstr()でキャストすると何だかイケてない結果になった。

“`
Python 3.8.0 (tags/v3.8.0:fa919fd, Oct 14 2019, 19:37:50) [MSC v.1916 64 bit (AMD64)] on win32
Type “help”, “copyright”, “credits” or “license” for more information.
>>> a = 0.1
>>> str(a)
‘0.1’
>>> b = 0.00000000000000000000000000000000000000001
>>> str(b)
‘1e-41’
“`

この時、str(b)は
‘0.00000000000000000000000000000000000000001’
となってほしい。

以下に記載されている関数を使わせていただくと、うまくできた。

[参考]https://stackoverflow.com/questions/3

元記事を表示

DatabricksのNotebookの単体テストを行う

# はじめに
以下のNotebookの単体テストを行います

“`python:MyNotebook
def hoge(i):
return ‘hoge’*i

def fuga(i):
return ‘fuga’*i
“`

#テスト用Notebookの作成
Notebook`MyNotebook`と同じフォルダに、テスト用Notebook`MyNotebookTest`を作成します

“`python:MyNotebookTest
# Cmd1
%run “./MyNotebook”

# Cmd2
import unittest

class MyNotebookTests(unittest.TestCase):

def test_hoge(self):
self.assertEqual(hoge(3), ‘hogehogehoge’)
self.assertNotEqual(hoge(2), ‘hoge’)

def test_fuga(self):
self.assertEqual(fuga(3), ‘fugafugafu

元記事を表示

Django で初期設定とスタッフアプリを作成する

プロジェクトを作成したので、Setteingに設定をします。

“`python:setting.py
TEMPLATES = [
{
‘BACKEND’: ‘django.template.backends.django.DjangoTemplates’,
‘DIRS’: [[os.path.join(BASE_DIR, ‘templates’)],
“`

templates のフォルダを作成し、テンプレートを保存場所として使用していこうと思います。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/701342/31380c8f-7532-3d0a-497d-816df27327ab.png)

言語を日本語に設定し、タイムゾーンをアジア東京にする。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/701342/d2b5383a-bb74-5

元記事を表示

scikit-learnでインタラクティブにパイプラインを描画・確認する方法

本記事では、scikit-learnのv0.23から搭載された、インタラクティブなパイプライン確認の実装を解説します

## 環境

– scikit-learn==0.23.2
– Google Colaboratory

本記事の実装コードはこちらに置いています
https://github.com/YutaroOgawa/Qiita/tree/master/sklearn

## 実装

### [1] バージョン更新
まず、Google Colaboratoryのscikit-learnのバージョンが2020年9月ではv0.22なので、v0.23へと更新します。

`!pip install scikit-learn==0.23.2`

pipで更新したあとは、Google Colaboratoryの「ランタイム」→「ランタイムを再起動」を実行し、
ランタイムを再起動します。
(これで、scikit-learnがpipで入れた新しいv0.23になります)

### [2] パイプライン構築

例えば、以下のようにして、前処理と機械学習モデルを組み合わせた
**機械学習パイプラ

元記事を表示

Python+BeautifulSoupでスクレイピングしてみる

# 目的
Python+BeautifulSoupによるスクレイピングを学習する。

# 背景
ウェブサイトから画像だけダウンロードしたいと思い、
スクレイピング出来たら簡単にできそうだと安易に考えたが、これが思いのほか大変だったので、とりあえずやったことを書く。

# 概要
スクレイピングの学習がしたかったので、画像をダウンロードする部分は作らない。そこはダウンローダーのフリーソフトIrvineを使用する。
また、ダウンロードした画像ファイルは、ナンバリングしたファイル名につけ直して、Zipファイルにまとめる。フローは以下の通り。

1. 作成ツールでウェブサイトから画像のURLリストを作り、クリップボードにコピーする
1. Irvineにペーストしてダウンロードする
1. 作成ツールでファイル名を付けなおして、zipファイルに圧縮する

ところでIrvineの機能をちゃんと使えば、こんなの作らなくても全部できるだろ!とか言わないように。あくまでも目的はスクレイピングの学習なので。

# 環境と設定
Windows10で実施した。
chocolateyを使っているならpython3の

元記事を表示

機械学習で”使える”one-hot Encoding手法

# はじめに
勉強しても勉強してもすぐ忘れてしまうので備忘録兼アウトプット練習のためQiitaに記事を投稿していく。
間違い、より良い方法あればコメント下さるとうれしいです。

# 発想
機械学習でOne-hot Encodingを実施したいがテストデータにはどんなデータがあるかなどわからない。
One-hot Encodingしたいなら`get_dummies`を使うと良いとどのサイトにも書いてあるが、例えば
**`train_df[‘sex’]`には`Male`と`Female`があるが`test_df[‘sex’]`には`Male`しかない**
といったとき普通に`get_dummies`を使うと作成されるcolumnの数が変わってきてしまう。これはいけない。

そこでいろいろいろいろ調べたところ以下の記事にたどり着いた。

[【python】機械学習でpandas.get_dummiesを使ってはいけない](https://www.haya-programming.com/entry/2019/08/17/184527)

記事自体はget_dummiesを使わず、`sklea

元記事を表示

python初心者メモ(9.2-10)

###vscodeとanacondaを入れた
・インターネットで調べつつなんとか入れた、setting.jonson…

###回帰分析
単回帰…1つの値(説明変数)からもう1つ(目的変数)を推定する y=x+2など,教師有学習
重回帰…説明変数が複数になる, y=ax1+bx2+cx3+…

重回帰やり方
要素を用意する→LinearRegression()をつかう
学習させる→ .fit(x,y)
予測する→ .predict(x)でできる

どれくらいいい回帰ができているか?は決定係数をつかう .score(x,y)
jupyter notebookで実行

####疑問点
%matplotlib inline てなに?
配列出力の時に文字+変数じゃなくて文字’s%っていれるのなぜ?
enumate関数って何

###numpyいろいろ

“`python

axis #(1で行、0で列)
np.random.randint(0,100,3) #(0から100までの整数を3個生成)
“`

###RNNとDNNについて

ここでは省略

###引数の*につ

元記事を表示

重回帰分析を具体例を使ってできるだけわかりやすく説明してみた

# 対象とする方
– 単回帰分析・重回帰分析がいまいち分からなくて理解したい方

# はじめに
重回帰分析をwikipediaで調べてみると以下のとおりでした。
### Wikipediaより
>重回帰分析(じゅうかいきぶんせき)は、多変量解析の一つ。回帰分析において独立変数が2つ以上(2次元以上)のもの。独立変数が1つのものを単回帰分析という。
一般的によく使われている最小二乗法、一般化線形モデルの重回帰は、数学的には線形分析の一種であり、分散分析などと数学的に類似している。適切な変数を複数選択することで、計算しやすく誤差の少ない予測式を作ることができる。重回帰モデルの各説明変数の係数を偏回帰係数という。目的変数への影響度は偏回帰係数は示さないが標準化偏回帰係数は目的係数への影響度を示す。

よくわかりませんよねー

わかりやすくするためにまず単回帰分析について例を交えて説明をします。
# 単回帰分析とは・・・
例えば体重からその人の身長を予測したい!!!ってなったとします。そのために10人分の体重と身長のデータを集めて以下のようないいかんじの直線を書くことをいいます。

縦軸:身

元記事を表示

非線形な関係も扱える相関係数MICとヒルベルト・シュミット独立性検定HSIC

変数の独立性を測る指標として有名なものにピアソンの相関係数(Pearson’s correlation coefficient)があります。ですがそれはあくまで線形な(直線的な)関係を扱う指標で、たとえば二次関数のようなU字型の関係があるときには「相関がない」と判定してしまいます。このような非線形な関係を取り扱う指標として、MICとHSICが知られているので、そのPythonパッケージを使ってみました。

以下のコードは全て Google Colaboratory で動作確認済みです。

# MIC (Maximal Information Coefficient) を計算するPythonパッケージ
次のようにして pip install できます。

“`Python
!pip install minepy
“`

インストールできたら、次のようにして準備しておきます。

“`Python
from minepy import MINE
mine = MINE()
“`

# HSIC (Hilbert-Schmidt Independence Criterion) を計算す

元記事を表示

djangoのmodelをインタプリタから使う

インタプリタから直でdjangoのモデルにアクセスしようとすると以下のエラーで怒られる。

“`
django.core.exceptions.ImproperlyConfigured: Requested setting LOGGING_CONFIG, but settings are not configured. You must either define the environment variable DJANGO_SETTINGS_MODULE or call settings.configure() before accessing settings.
“`

コレを防ぐためにはまず、モデルをインポートする前に以下を呼ぶ必要があるようだ。
後に呼ぶとエラーになる。

“`py
django.setup()
“`

加えて、環境変数を設定する必要がある

“`py
os.environ.setdefault(‘DJANGO_SETTINGS_MODULE’, ‘app_name.settings’)
‘app_name.settings’
“`

まとめると以

元記事を表示

pandas category 型集計の罠

# pandas category 型集計の罠

dtypeがcategoryだと、存在しない値に対しても集計されてしまうことがある。

“`Python
import pandas as pd # version 1.1.2

# DataFrame を定義
df = pd.DataFrame({
‘col1’: [‘a’, ‘a’, ‘b’, ‘b’, ‘c’, ‘c’],
‘col2’: [1, 2, 1, 2, 1, 2]
})
# col1 を category 型にする
df[‘col1’] = df[‘col1’].astype(‘category’)
# 先頭の3行をコピー
df_sub = df.head(3).copy()
# col1 で groupby して、col2 について集計
df_grp = df_sub.groupby(‘col1’)
df_agg = df_grp.agg({‘col2’: ‘mean’}).reset_index()
df_agg.columns = [‘col1’, ‘mean_col2’]
“`

df_s

元記事を表示

【Python】numpyでinfとNaNの扱い方

#発生した問題
python3でnumpyを用いた画像処理(画像評価)ソフトの出力に,
平均・標準偏差・最大・最小にinfとNaNが含まれる.

“`python:sample_code.py
import numpy as np
img = #なんか画像の配列

print(np.max(img))
print(np.min(img))
print(np.mean(img))
print(np.std(img))

>inf
>-inf
>NaN
>NaN
“`

こんな感じ
結構ハマった

#inf,NaNとは
そもそもinfとかNaNって**なんなん**でしょうね?(激うまギャク)
調べると沢山情報が出てきました.
###inf
infinityの略.無限大を表す.
-infは負の無限大なわけですね.

###NaN
>浮動小数点数にはNaN (Not a Number, 非数) と呼ばれる、実数の異常な値を表す特殊な数があります。
これは無限大-無限大、0.0/0.0といった不定形や、負数の平方根、負数の対数といった実数で表せない計算を行った場合に発生します。

[NaNの

元記事を表示

Youtubeをmp3化して超安全にダウンロードする方法【Python】

今回はYouTubeにあげられている動画をmp3としてダウンロードする方法をまとめてみます。

参考サイトやgithubも載せます。

ミスや疑問点がありましたらコメントしていただけると幸いです。

*注意点*

あくまで個人的にYouTubeにアップロードした動画をダウンロード、そしてmp3化することを主としております。

そのため、自分以外の誰かが投稿した動画から手に入れた音源を使って問題が起きても一切の責任を負いません。

私的利用は大丈夫だという声も多いですが、自己判断で行うようにしてください。そのつもりで以下ごらんください!

# 完成品
あくまで例です。
https://www.youtube.com/watch?v=E8bUKuF9v10 をmp3化するとします。

### 開いたところ
![2020-09-10_22h16_22.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/582590/0c8aa9d0-41da-9284-944b-048d5d1c8578.png)

![

元記事を表示

強化学習で山を登りたい

![51988414-脳のギア。ai-人工知能の概念。.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/541141/f7398620-448d-929a-dc69-b573e76f382a.jpeg)

 強化学習ってかっこいいですよねえ。
 今回は, pythonの環境「OpenAIGym」の「MountainCar」で遊んでみたので, 紹介します。
 ちなみに, Google Colab使ってやってます。

こちらの記事をかなり参考にしました。[OpenAI Gym 入門](https://qiita.com/ishizakiiii/items/75bc2176a1e0b65bdd16)

#さらっとQ学習
 学習方法としてQ学習を振り返ります。どうでもええ!という方は, 読み飛ばしてください。

 Q学習において, $Q\left( s_{t},a_{t}\right)$はseleniumをとりあえずちゃちゃっと動かしてみたい[mac向け]

# はじめに
seleniumっていうwebブラウザのテストツール、
ざっくり言えばちょっとコードを書けばweb画面を自動操作できてしまうというものがあると知って
とりあえず試したかった。

先人の知恵を大いに借りたが、ところどころ躓きポイントがあったのでメモ。

写経に近いものになってしまうが、基本は
[たった3行のpythonで始めるSelenium入門](https://qiita.com/mastar_3104/items/0a1ce2bfa1d29287bc35)
に沿い、躓いたところを記録として残しておく。(2020.9.10時点)

## できること
seleniumを使ってブラウザ画面で
「たぬき 画像」という文字列の検索結果を自動で表示させる

# 環境
* Mac
* python3.8
* Chrome

## 事前準備
* homebrewをインストール
* pythonをインストール

※ 上記は[参考記事](https://qiita.com/mastar_3104/items/0a1ce2bfa1d29287bc35)に記載あり。

## 手順

Python japanmap 可視化 都道府県 データ分析

同じ日本国内でも、地域によって物価が違うらしいです。可視化してみましょう。

# 統計データ

今回利用する統計データは下記です。

– [総務省統計局 小売物価統計調査(構造編)](https://www.stat.go.jp/data/kouri/kouzou/gaiyou.html)
– [10大費目別消費者物価地域差指数 (全国平均=100) - 全国,地方,都道府県,都道府県庁所在市及び政令指定都市](https://www.e-stat.go.jp/stat-search/files?page=1&layout=datalist&lid=000001248538&toukei=00200571&tstat=000001067253&cycle=7&year=20190&month=0&stat_infid=000031953650)

リンク先のページを辿ると、CSV形式でも統計データをダウンロードできます。e-Statは年々使いやすさが向上している印象があって良いですね。

## 10大費目別消費者物価地域差指数

10大費目というのは、1.食料、2.住居、3.光熱・

Djangoで、表示されている長い文字列を途中で….と略す方法

Djangoでブログを作っていてホームに長い文章があっても見にくいので何か略す方法はないかと調べていたらこんなものを見つけたので共有します。

Django version = 2.2.4
Python version = 3.8.2

“`html:home_list.html

{{ post.text|linebreaksbr|truncatechars:250 }}

“`

少しわかりにくいかもしれませんが、具体的にこの記事に関連しているのは最後の「truncatechars」だけです。

そこの数字を好きな数字にすることでその次の文字から…と略されて表示されるようになります。

データ分析のためのJupyterLab基礎設定 (pip)

# A JupyterLab setting procedure
A base setting with minimum packages via pip
pipによるJupyterLabの基礎設定です。
## Prerequisite
– Windows 10
– `python` 3.8+
– `nodejs` 10+
– Microsoft Visual C++ 14.0 or greater (Build Tools for Visual Studio 2019)

## Getting Started
### JupyterLab installation
– install [python](https://www.python.org/downloads/) (official not Anaconda)
– install [node.js](https://visualstudio.microsoft.com/downloads/)
– install [Microsoft Visual C++ 14.0 or greater](https://visualstudi

Deep Learning に関する自分用まとめメモ -4.2 損失関数-

# Deep Learning に関する自分用まとめメモ
## 4.2 損失関数 編

ニューラルネットワークの学習において性能を上げるには最適な重みパラメータを見つける必要があるが、このLoss function を使用して、目的の指標を手がかりに探索を行っていく 。

### 損失関数の種類
#### 1. 二乗和誤差(Mean Squared Error)
二乗和誤差は以下の式

“`math
E = \frac{1}{N}\sum_{i=1}^{N}(y_i -t_i)^2
“`
で表すことができる。  
 式の説明をすると、出力値のデータ(yi)と正解値のデータ(ti)の差を二乗してN個で平均する。
二乗するのは誤差を正の値にするため。正の値にするのなら絶対値をとって

“`math
E = \frac{1}{N}\sum_{i=1}^{N}|y_i -t_i|
“`
こうしてもいいのでは?と思ったのだが、どうやら微分を計算するときに2乗のほうが楽だかららしい。
なるほど!絶対値の微分は場