- 1. スクレイピングのメモ
- 2. Python学習のロードマップ(初心者が競馬予測AIを作るまで)
- 3. IntelliJのvenvにpyminizipをインストールしようとしたら躓いた話
- 4. Jupyterでイメージ表示
- 5. AtCoder Beginner Contest 247 参戦記
- 6. AtCoder Beginner Contest 245 参戦記
- 7. 典型90問007 CP ClassesをPythonで解く!
- 8. カスタムデータセットでなるべくかんたんに画像分類器をつくりたい。Pytorchで転移学習
- 9. CHAIDで決定木。Pythonで
- 10. 『ゼロから作るDeep Learning』ひとり購読会 #02(実質は論理演算子の理解が浅いという話)
- 11. Dash/Plotlyでマルチページを作りたい
- 12. 複数のグラフを一度にプロットする
- 13. 3元1次不定方程式〈2/2〉「2018東工大数学第2問」pythonでやってみた。
- 14. これから更に流行るであろうフォトリアルな世界について勉強しよう 物体とカメラの設定編
- 15. [Python]Outlookの予定表から日付範囲を指定して予定を吸い上げる方法
- 16. VcXsrvを使ってmatplotlibでグラフを出力するとlibGL errorが起きる
- 17. PythonでCSVの読み書き
- 18. Pythonでファイル名一覧を取得
- 19. 医療機器データでpythonの特徴量選択 分散とベルヌーイ分布について
- 20. python 備忘録
スクレイピングのメモ
Pythonで簡単にスクレイピングするときのメモ。
# 最低限必要なライブラリの準備
RequestsとBeautifulSoup4が必須です。
“`
python3 -m pip install requests
python3 -m pip install beautifulsoup4
“`# 最も基本的な使い方
ダウンロードと解析の最も簡単な方法は次の通り。
“`basic.py
import requests
from bs4 import BeautifulSoup# URLを取得
url = ‘https://uta.pw/sakusibbs/index.php?action=fav_ranking’
html = requests.get(url).text# BeautifulSoup4で解析
soup = BeautifulSoup(html, ‘html.parser’)# CSSセレクタで a タグの class=indextile の要素一覧を取得
a_list = soup.select(“a.indextitle”)# 取
Python学習のロードマップ(初心者が競馬予測AIを作るまで)
Python学習のロードマップ
`この記事はギャンブル狂であらゆるギャンブルの養分となってはいるもの頭脳明晰な友人養分くんとプログラミング歴半年の僕が競馬予測AIを作っていく不定期連載です。`
ここで僕は初心者の友人にどのようにPythonで機械学習で競馬予測ができるまで教えたのかを記しました。この記事はこんな方におすすめです。
「pythonの学習をしてみたいけど、どこからすればいいのかわからない」
「データ分析する職業への転職に興味がある、、」
「大学の授業でPythonを軽くかじったぐらいで機械学習なんか恐れ多い、」
僕の友達の養分君も完全未経験からデータ分析を軽々こなすぐらいまでなりました。ここではそのロードマップを記していこうと思います。Step0!インプットよりもアウトプット
勉強始めとして入門書を買ってガツガツ勉強しようという方は少なくないと思います。これは数学などの勉強などの既存知識があるなら全然問題ないと思います。(他の言プログラミング語をしっかり学習した人ならOK!!)しかし算数でも最初は積み木を組み立てることから始めたり、英語でもわからな
IntelliJのvenvにpyminizipをインストールしようとしたら躓いた話
IntellJのpython用 venvにpyminizipをインストールしようとしたところ、エラーが発生
エラーログ全文はこんな感じ。
“`
Collecting pyminizip
Using cached pyminizip-0.2.6.tar.gz (261 kB)
Preparing metadata (setup.py): started
Preparing metadata (setup.py): finished with status ‘done’
Building wheels for collected packages: pyminizip
Building wheel for pyminizip (setup.py): started
Building wheel for pyminiz
Jupyterでイメージ表示
# はじめに
個人用メモ“`py
# 必要ライブラリのインポート
import matplotlib.pyplot as plt
from PIL import Imagefilename = ‘abc.jpg’
# ファイルオープン
img = Image.open(filename)# 画像表示用コード
# ここでイメージの大きさを調整
plt.figure(figsize=(10,10))# 白黒画像の場合
plt.imshow(img, cmap=’gray’)# イメージに 目盛りは不要
plt.axis(‘off’)# 画面表示
plt.show()
“`
AtCoder Beginner Contest 247 参戦記
# AtCoder Beginner Contest 247 参戦記
## [ABC247A – Move Right](https://atcoder.jp/contests/abc247/tasks/abc247_a)
2分半で突破. 書くだけ.
“`python
S = input()print(‘0’ + S[:3])
“`## [ABC247B – Unique Nicknames](https://atcoder.jp/contests/abc247/tasks/abc247_b)
7分半で突破、WA1. 書くだけなんだけど、姓と名が同じ人がいてハマった.
“`python
N = int(input())
st = [input().split() for _ in range(N)]d = {}
for s, t in st:
d.setdefault(s, 0)
d.setdefault(t, 0)
if s == t:
d[s] += 1
else:
d[s] += 1
AtCoder Beginner Contest 245 参戦記
# AtCoder Beginner Contest 245 参戦記
## [ABC245A – Good morning](https://atcoder.jp/contests/abc245/tasks/abc245_a)
3分で突破. 書くだけ.
“`python
A, B, C, D = map(int, input().split())if A * 3600 + B * 60 < C * 3600 + D * 60 + 1: print('Takahashi') else: print('Aoki') ``` ## [ABC245B - Mex](https://atcoder.jp/contests/abc245/tasks/abc245_b) 3分で突破. 書くだけ. ```python N = int(input()) A = list(map(int, input().split())) print(min(set(range(2002)) - set(A))) ``` ## [ABC245C - Choose Elements]
典型90問007 CP ClassesをPythonで解く!
# はじめに
AtCoder現在茶色(年内には緑が目標!)のあんこちゃん(@Chunky_RBP_chan)です。\
典型問題は抑えとかねばということで、★2〜★5に取り組んでいます。\
Pythonで取り組まれている方も多いと思うので自分の解答をシェアしたいと思います!# 問題
https://atcoder.jp/contests/typical90/tasks/typical90_g# 解法
Q人の生徒それぞれのレベルにもっとも合うクラスに分ける問題です。
二分探索によって生徒iのレーティング$B_i$が$A_j$と$A_{j+1}$の間となるjを見つけます。jがわかれば$|B_i-A_j|$と$|B_i-A_{j+1}|$の小さい方が答えとなります。
注意として、j=-1の場合とj=Nの場合$A_j$もしくは$A_{j+1}$がないので別処理が必要です。“`python
def bisect(X):
right = N
left = -1
while right-left>1:
mid = (right+left)//2
カスタムデータセットでなるべくかんたんに画像分類器をつくりたい。Pytorchで転移学習
# 自前のデータセットでImageClassificationモデルをトレーニングします
**Pytorch チュートリアルのColab:**
https://colab.research.google.com/github/pytorch/tutorials/blob/gh-pages/_downloads/62840b1eece760d5e42593187847261f/transfer_learning_tutorial.ipynb
# ユースケースに合わせて、画像分類機能をつくりたい
画像分類を自身のユースケースに合わせて行いたい場合、ユースケースにあったデータセットで画像分類モデルをトレーニングします。
たとえば、画像内の交通標識を見分けたい場合は、それぞれの標識の画像を集めて、モデルに学習してもらいます。#
CHAIDで決定木。Pythonで
# はじめに
Pythonを使って、CHAIDの決定木を実行する話。
はまったことも紹介します。前回の記事のCHAIDやりたい!っていうところから1歩調べてみました。
[前回] sklearnのDecisionTreeClassifierの結果の理解
https://qiita.com/yo16/items/36ec237a574d8ab86a75使うライブラリはこちら
https://github.com/Rambatino/CHAID
“`python
pip install CHAID
“`# 使うデータ=sklearn.datasets.load_iris
sklearnのirisデータを使ってみます。
“`python
from sklearn.datasets import load_irisiris = load_iris()
X = iris.data
y = iris.target
“`ここで注目。
“`python
>>> print(X)
[[5.1 3.5 1.4 0.2]
[4.9 3. 1.4 0.2]
[4.7 3
『ゼロから作るDeep Learning』ひとり購読会 #02(実質は論理演算子の理解が浅いという話)
遅々としてという点を除けば、順調に進んでおります。
第2章に入って、パーセプトロンを勉強中。まあ、まだまだ序の口ではありますが、
– AND/OR/NANDゲートの仕組み
– ANDゲートの実装まで進みました。まあまあ順調。読んだところは理解できているという感じ。またしばらくほっとくと忘れそうですが。
で、今日書き残しておきたいのは、いかにもビギナーらしいミスをやらかしてデバッグの時間を浪費した顛末です。二度と繰り返さぬよう、戒めにしたい! #でも絶対やらかすだろうなあ
# np.arrayを使ったANDゲートの実装
さて、今日のメインはANDゲートの実装です。掲載されたサンプルの入力と動作確認はまあ問題なし。以下のプログラムまで入力して、何をやっているのかは理解できました。
“`python:233_AND-00.py
import numpy as npdef AND(x1, x2):
x = np.array([x1, x2])
w = np.array([0.5, 0.5])
b = -0.75
tmp = np.sum(x *
Dash/Plotlyでマルチページを作りたい
# はじめに
みなさんDash使ってますか?私はめっちゃ使ってます。PythonのFlaskベースで現代的なぬるぬる動くフロントのWebページが簡単にできるので非常に重宝しています。DashがVer2になって[割と破壊的変更が多く](https://dash.plotly.com/dash-2-0-migration)、ちょっと前の記事だとそのままでは動かないことが多く、日本語記事増えてほしい一心で自分の知見を記載していこうシリーズ(たぶん3回くらい書くつもり)の第一弾です([dash-bootstrap-componentsもver1になって破壊的変更が多い](https://dash-bootstrap-components.opensource.faculty.ai/migration-guide/))。おおよそ[こちらの英語記事](https://towardsdatascience.com/embed-multiple-dash-apps-in-flask-with-microsoft-authenticatio-44b734f74532)を参考に自分でアレンジしたよう
複数のグラフを一度にプロットする
複数のグラフを一度にプロットするコードを記載する。\
用いたデータは統計科学研究所にある成績に関するデータセットを用いている。\
統計科学研究所: https://statistics.co.jp/reference/statistical_data/statistical_data.htm“`
### 必要なライブラリ・モジュールをインポートする
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import gc
import matplotlib.gridspec as gridspec### 成績データを読み込む
seiseki = pd.read_csv(“seiseki.csv”)
“`今回は、各科目のヒストグラムを可視化する。
“`
### 国語のヒストグラムを表示
seiseki[“kokugo”].hist()
“`
次に9科目を一度に表示する
“`
### グラフのサイズやフォントのサイズの設定
plt.rcParams[“font.size”] =
3元1次不定方程式〈2/2〉「2018東工大数学第2問」pythonでやってみた。
つづき
https://qiita.com/mrrclb48z/items/92028fda12cefc6a8e97
“`
35*x + 91*y + 65*z = 3
x**2+y**2の最小値
“`誰かpythonでやってもらうと助かります。
# pythonの合同式でやってみたい。
(勉強中)https://ad064.com/35x91y65z3toko/
# pythonのpulpソルバーでやってみたい。
(勉強中)
# pythonのループでnMaxがあやしいですね。
“`python
nMax=10
r = range(-nMax, nMax, 1)
myMin=nMax**2+nMax**2
for i in r:
for j in r:
for k in r:
if 35*i + 91*j + 65*k == 3:
i2j2=i**2 +j**2
if i2j2 < myMin:
これから更に流行るであろうフォトリアルな世界について勉強しよう 物体とカメラの設定編

去年Googleが発表した「Total Relighting」
一枚の画像から、人物を切り出し、背景に合わせて人物のライティングを自動で調整する手法。・・・らしいのですが。すごいですよね。
フォトリアルというと、最近は3D分野の目覚ましい発展を連想しますが、
3Dはどうしても装置や機材に依存するイメージが付きまといます。
もしもiphoneなどの単眼カメラで実現できるようになれば、
表現の世界はさらに次のステージに進めそうです。ということで今回はそんな「フォトリアル」な世界について勉強します。
できるだけ数式と実際のソースに基づいて理解を深めていきます。(目標)参考:
https://www.scratchapixel.com/lessons/3d-basic-rendering/ray-tracing-overview/light
[Python]Outlookの予定表から日付範囲を指定して予定を吸い上げる方法
全部吸い上げてからpythonでフィルタリングするよりもItems.Restrict()を使用する方が高速らしい
(参考:https://www.fixes.pub/program/155752.html)“`python
import win32com.client
import datetime# 調べたい日付範囲を定義
start_date = datetime.date(2022, 4, 1)
end_date = datetime.date(2022, 4, 30)# Outlookの予定表へのインタフェースオブジェクトを取得
Outlook = win32com.client.Dispatch(“Outlook.Application”).GetNameSpace(“MAPI”)
CalenderItems = Outlook.GetDefaultFolder(9).Items# 定期的な予定の二番目以降の予定を検索に含める
CalenderItems.IncludeRecurrences = True# 開始時間でソート
CalenderItems.
VcXsrvを使ってmatplotlibでグラフを出力するとlibGL errorが起きる
CentOSとWindowsをX serverで繋ぎ、matplotlibでグラフを出力した時に以下のエラーが出ました。
“`
libGL error: No matching fbConfigs or visuals found
libGL error: failed to load driver: swrast
“`
グラフは正しく出力されたのですが、エラーはエラーなので直したいですね。# 対処法
.bashrcか.bash_profileに以下の行を加える。
“`
export LIBGL_ALWAYS_INDIRECT=1
“`
この変数を定義すると libGL はハードウェア アクセラレーションではなく必ず間接レンダリングを使うようになります。# 参考文献
https://unix.stackexchange.com/questions/589236/libgl-error-no-matching-fbconfigs-or-visuals-found-glxgears-error-docker-cu
PythonでCSVの読み書き
listをcsvに書き込み,読み込みまたlistに戻す方法です.
“`python:
import pandas as pd
“`
pandasを使います.(他にも方法はありますが私の好みです)
初期装備ではないのでインストールが必要です.
#### CSVの書き込み
書き込みたいlistなどの変数をDataFrameに変換して保存できます.
“`python:
df = pd.DataFrame(sample_lists)
df.to_csv(‘sample_lists.csv’)
“`#### CSVの読み出し
“`python:
df = pd.read_csv(‘sample_lists.csv’, index_col=0)
sample_lists = df.values.tolist()
“`
index_colをつけないと,自動でつけてくれた0.1.2.,,,のインデックスも一緒についてきてしまい邪魔です.
Pythonでファイル名一覧を取得
#### 任意のフォルダ内のファイル名とフォルダ名を全取得
sudoフォルダ内のファイル名とフォルダ名を取得したいときは,
“`python:
import os
file_names = os.listdir(‘sudo/’)
“`
でlistで返ってくる.#### 任意のフォルダ内の任意の拡張子のついたファイル名を全取得
フォルダを含めたくない時,あるいは拡張子を指定したい場合は,“`python:
import glob
file_paths = os.listdir(‘sudo/*.wav’)
“`
で欲しい拡張子のついているもののみをlistで取得できる.こちらはファイル名だけでなく相対パスも含まれることに注意.相対パスが要らないのであれば,
“`python:
file_names = []
for i in range(len(file_paths)):
tmp = os.path.split(file_paths[i])[1]
file_names.append(tmp)
“`
で除去できる.
医療機器データでpythonの特徴量選択 分散とベルヌーイ分布について
https://qiita.com/FukuharaYohei/items/db88a8f4c4310afb5a0d
@FukuharaYohei様が作成された上記記事のFilter Methodについて自分なりに調べてみました
# Filter Method
Filter Methodは統計的な手法(分散やχ二乗検定など)で特徴量の評価・選択
他の手法に比べると計算量が少なく、最初に足切りで実施するものとのことです# 機械学習では説明変数(特徴量)の選択が重要
機械学習(教師あり学習)を使用する際に
目的変数 と 説明変数(特徴量) が重要となります私が、医療機器管理データベースを利用して医療データ予測のソースコードを研究用に作成している最中に
説明変数(特徴量)がのデータ数が莫大になり
予測に多くの時間がかかり、データ数が多く予想できないとエラーコードが出てしまったため説明変数(特徴量)を削除しなければいけない状態となりました
そこで@FukuharaYohei様の記事に出会い助けられたため内容を共有します# 低分散変数の削除
分散が低ければ、説明変数(特徴
python 備忘録
## try catch
### 例外全て
“`
def sample():
try:
raise Exception
except:
traceback.print_exc()
print(‘Error’)
“`### 特定の例外+例外全て
“`
def sample():
try:
#raise Exception
raise ValueError(“error!”)except ValueError as e:
print(‘ValueError:’, e)
except:
traceback.print_exc()
print(‘Error’)
“`
### ポイント
|項目|説明|備考|
|—-|—-|—-|
|traceback.print_exc()|エラー時のスタックトレースを表示する||