- 1. numpy.arrayインプレース演算の落とし穴(Python)
- 2. 3/2 python日記
- 3. AtCoderをやる時によく使うコードまとめ
- 4. GoogleColab での Janome を使用したテキスト解析と頻出単語の可視化
- 5. pyppeteerを使ってみた【着手したとこ】
- 6. [論文紹介]アノテーションを自動作成してくれるアルゴリズムが凄い!
- 7. with文のカスタマイズ(Python)
- 8. SIFT descriptors(特徴量)について理解する
- 9. while, popを用いた木構造探索パターン(Python)
- 10. 現在地から写真の撮影場所までのルートを表示する
- 11. Python による Microsoft Graph API を利用し、グループのメールアドレスからそのGroup-IDを取得し、そこからグループメンバーのUser-IDを取得してみました
- 12. 【Python】Anaconda+TensorFlow 2.3.0 (GPU) の環境構築
- 13. フォルダ内のCSVを一気に置換する
- 14. 【Scanpy, scRNA-seq】ScanpyのUMAPに再現性を持たせる
- 15. playwright-pytestで失敗時の動画を撮っておく
- 16. 機械学習アルゴリズムメモ 正則化線形回帰編
- 17. 多言語で Fizz Buzz !
- 18. 【optimizer入門】性質を変えて遊んでみる♬
- 19. PythonでFizzBuzz
- 20. Spotifyで聴いた曲を全部プレイリストに保存する
numpy.arrayインプレース演算の落とし穴(Python)
#概要
Python numpyでインプレース演算(`+=`など)をした際に思わぬ挙動をすることがあるので、
その確認をする。
#内容
##環境
macOS Catalina
Python 3.7.0
numpy 1.18.3
##再現
“`Python
>>> import numpy as np
>>> a = np.array([3])
>>> b, c = a, a
>>> a, b, c
(array([3]), array([3]), array([3]))
>>> c += 1
>>> a, b, c
(array([4]), array([4]), array([4]))
“`
##分析
`a`, `b`, `c`が参照しているのは、`np.array`オブジェクトに対してであるが、
`+=1`が実は変更したのは、その属性であるからである。
下記のように、`+=1`がオブジェクト自体を変更する場合は、予想通りの変化になる。“`Python
>>> a = 3
>>> b, c = a, a
>>> a, b, c
(3, 3, 3)
>>> c += 1
>>
3/2 python日記
こんにちは!
今日のエラー原因を書きます。
使用した本:「0から作るDeepLearning」
4章
1「two_layer_net.py」の写経について
・16行目のout_sizeの見逃し
・77行目の「=」の写し間違い2「train_neuralnet.py」の写経について
・6行目の「dataset.mnist」の写し間違い
・52行目の「ylabel」の写し間違い所感
全体を通してみると、「俺はちゃんと写経できてるぞ」
と思っているときほど何か見落としてることが多いです。
後、原因としては「写経なんか楽勝!」と考えているからだと思います。
けど、人間だから仕方ない。(開き直り)
AtCoderをやる時によく使うコードまとめ
# はじめに
今からAtCoderを始めようと思うので、とりあえずよく使うコードをまとめてみようと思います。# 基本のコードはこれ
– 入力、出力
– 代入、単純な四則演算処理(+, -, *, /, = など)
– 条件分岐(if 文など)
– 繰り返し処理(for 文など)
– 文字列(string)
– 浮動小数点(double 型など)
– 配列(二次元配列も含む)# 入力、出力
GoogleColab での Janome を使用したテキスト解析と頻出単語の可視化
# はじめに
– AI について勉強したい、何かきっかけが欲しいなと本屋でブラブラしていたら出会った『人気ブロガーからあげ先生のとにかく楽しいAI自作教室』
– 環境準備が不要で、自分で実際に手を動かせるサンプルのサイズ感がよく、まずは日本語テキストの解析からチャレンジする
– 具体的には前述の書籍の 3 章に基づいて Google Colaboratory 上で青空文庫から取得した文章を Janome で形態素解析して名詞を抽出、 WordCloud で可視化するところまでを実施する# 使用したツール類
– [Google Colaboratory](https://colab.research.google.com/notebooks/welcome.ipynb?hl=ja)
– [Janome](https://mocobeta.github.io/janome/)
– [WordCloud](https://github.com/amueller/word_cloud)## Google Colaboratory
– Google が無料で提供しているブラウザベースで機
pyppeteerを使ってみた【着手したとこ】
書籍『Pythonクローリング&スクレイピング[増補改訂版] -データ収集・解析のための実践開発ガイド』と下記記事を参考に実施した
[Pyppeteerを使ってみる](https://zenn.dev/shotakaha/articles/5885cac71af6dc966e97)
[論文紹介]アノテーションを自動作成してくれるアルゴリズムが凄い!
こんにちは!新米データサイエンティストのりゅうです。今日は半教師あり学習を使用して少ないラベルありデータからセグメンテーションを自動作成してくれるモデルを見つけたので紹介させていただきたいと思います!
#忙しい人向け
1.s4GANを使用したセグメンテーション生成でアノテーションのコストを抑える事ができるよ。
2.過去に発表されたモデルと比べてよい成績を出したよ。#論文解説
#1.0 要約
SEMANTICセグメンテーションは、多くの画像認識のタスクでとても優れた結果を出してきた。
自動運転、医用画像、ロボット工学 など
しかし、これは非常に多くのアノテーションコストがかかり(画像にラベルを付与する事)。
本論文ではこれの問題を半教師あり学習を使って解決するアプローチを提示しています。#序論
DualーBranch Method for SemiーSupervised Semantic Segmentation
1. アノテーションされていないデータを少量のアノテーションされているデータを使って効果的に学習する事ができるよ!
2. 私たちのモデルはCNNsが限られたデー
with文のカスタマイズ(Python)
#概要
`with`文を自分でも活用できるようにする。
#内容
##環境
macOS Catalina
Python 3.7.0
##解決策1 準備
`class`を定義する。“`Python:with1.py
class Obj():
def __init__(self, name):
print(‘——start’)
self.name = name
def __enter__(self):
return f’hello, {self.name}’
def __exit__(self, type, value, traceback):
#Exception handling here
print(f’with or without exception, finished. bye, {self.name}’)
print(‘——end\n’)
“``__init__`, `__enter__`, `__exit__`を使い、`__ent
SIFT descriptors(特徴量)について理解する
## はじめに
OpenCVのSIFTで特徴量を抽出してSVMで分類する、というプログラムを作成しようと思っています。特徴量の抽出にはSIFTを使う予定ですが、SIFTで抽出される特徴量とは何なのかについて少し調べたので、備忘として残します。
尚、SIFTについては2020年に特許が切れて使いやすくなりました([こちらを参照](https://qiita.com/herr-shigeo/items/ec9abac4212628162598))。## 開発環境
Ubuntu 18.04.4 LTS
Python 3.6.9
opencv 4.5.1
dlib 19.21.1## 実際の出力値を確認
まずは、実際にSIFTで特徴量を抽出し、取得したdescriptorsを出力してみました。
以下が、使用したソースコードの一部です。“`python
sift = cv2.SIFT_create()
img = cv2.imread(path, cv2.IMREAD_GRAYSCALE)
keypoints, descriptors = sift.detectAndCompute
while, popを用いた木構造探索パターン(Python)
#概要
空配列が`False`と判定されるので、
`while`と`pop`によるシンプルな探索パターンを使う。
#内容
##環境
macOS Catalina
Python 3.7.0
##準備
“`Python:node.py
class Node:
def __init__(self, name):
self.name = name
self.children = []
def add_child(self, child):
self.children.append(child)A, B, C, D, E, F = Node(‘A’), Node(‘B’), Node(‘C’), Node(‘D’), Node(‘E’), Node(‘F’)
A.add_child(B)
A.add_child(C)
B.add_child(D)
C.add_child(E)
C.add_child(F)
“`
上記によって、下記の構造ができる。A---B---D
|
--C---E
|
現在地から写真の撮影場所までのルートを表示する
概要
写真のExif情報から位置情報を取得できることを知ったので
その応用ということで、現在地から取得した位置情報へのルートをDirections APIで取得してみようと思いました。
ついでに、Exif情報から逆ジオコーディングを行って地理情報を同時に表示させます。
素人にも扱えるなんて、Googleさんは素晴らしいですなぁ。。Exif情報については[wiki](https://ja.wikipedia.org/wiki/Exchangeable_image_file_format)を参照してください。
以下、引用文。
>カメラの機種や撮影時の条件情報を画像に埋め込んでいて、ビューワやフォトレタッチソフトなどで参照、応用することができる。[逆ジオコーディング](https://business.mapfan.com/blog/detail/628)については以下を参照してください。
以下、引用文。
>経度緯度から住所を取得する方法を「リバースジオコーディング」や「逆ジオコーディング」と言います。完成系
ただローカルで動かす程度なので、フロントには全く
Python による Microsoft Graph API を利用し、グループのメールアドレスからそのGroup-IDを取得し、そこからグループメンバーのUser-IDを取得してみました
# Python による Microsoft Graph API を利用し、グループのメールアドレスからそのGroup-IDを取得し、そこからグループメンバーのUser-IDを取得してみました
## 概要
Microsoft Graph API を利用してAzureActiveDirectoryから指定したグループ情報(今回はグループメールアドレス)を取得し、そこからそのグループメンバーのUser-IDを取得するための Python プログラムです。
Access Token の取得については、[このプログラム](https://qiita.com/turupon/items/038b893712433ed23f0b) を使用しています。## 実行環境
macOS Big Sur 11.1
python 3.8.3## 実行プログラム
```python:GetAzureGroupMember.py
import json
import requests
import argparse
import time
import pprint
from datetim
【Python】Anaconda+TensorFlow 2.3.0 (GPU) の環境構築
# はじめに
最近、Pythonでディープラーニングの勉強ができる環境を構築したので、備忘録としてまとめます。PC環境は以下の通りです。・OS: Windows 10 Pro
・CPU: intel Core i9-9900K
・GPU: Geforce RTX2070
・メモリ: 32GB特に、TensorFlowでGPUが認識されずに苦労しました。Anacondaのバージョンは4.9.2、Pythonのバージョンは3.8.5です。Anacondaにこだわる理由は、MATLABユーザの私にとって、Pythonエディタの「Spyder」が使いやすいからです。Spyderをpipでインストールして構築するのは初心者の私には無理でした。
# 記事の内容
Anaconda環境で、TesonrFlowをインストールする。# TensorFlowとは
TensorFlowは、Googleが公開している機械学習ライブラリです。2015年に登場したそうです。TesonrFlowはGPUを用いて高速な計算を行うことができます。GPUを使って計算ができるディープラーニングフレ
フォルダ内のCSVを一気に置換する
# 目的
ログ等で作成されたCSVファイルから、一気に内容を置換したいときがあります。
ファイルが数個ならテキストエディタの置換機能や、Linuxならsedコマンドも使いますが、
対象が多かったり複雑な置換をすると、途端に難易度が上がります。というわけで、自分用に以下のようなスクリプトを書いて使っています。
CSVをテキストファイルとして一気に読み込んで、一気に置換をしています。# ソースコード
以下は現在のディレクトリ内にあるCSV中の「iPhone」を「Android」に置換するスクリプトの例です。
```python
import glob
import oscurdir = os.getcwd() # 直接パスを指定しても良い
csvfiles = glob.glob(os.path.join(curdir, '*.csv')) # CSVリストをフルパスで取得for filepath in csvfiles:
with open(filepath, mode='r') as fs:
s = fs.read() # CSV全体を一気
【Scanpy, scRNA-seq】ScanpyのUMAPに再現性を持たせる
## 起きていた問題
Scanpyで描いたUMAPに再現性がない。
予想としてはPCAの部分で相違が生まれていそう。## 環境
[こちら](https://hub.docker.com/layers/139333159/taowata/jupyterlab-scanpy/BBKNN-1.4.0/images/sha256-82b733309f1a0a0fc6c0b543c0291a2a1886f42d453337b2cb45e4a412b0cfe1?context=explore)のDockerイメージをスパコンのSingularityコンテナとして利用。
バージョン情報:```
scanpy==1.7.0 anndata==0.7.5 umap==0.5.1 numpy==1.19.2 scipy==1.5.2 pandas==1.1.3 scikit-learn==0.23.2 statsmodels==0.12.0 python-igraph==0.9.0 louvain==0.7.0 leidenalg==0.8.3,
```## 解決方法
[#1187](ht
playwright-pytestで失敗時の動画を撮っておく
## まえおき
playwright-pytest を使ってE2Eテストを始める方法については、以前に以下の記事で紹介した。
https://qiita.com/YusukeIwaki/items/149859a0a508933a8a64
ここでは、失敗時の画面キャプチャを撮る方法までは書いたが、実際に自動試験スクリプトを書いていると「どうしてそうなった?!」と思うことが稀によくある。(しかも、そんなテストに限って、じっと見張っていると何回やってもpassしたりするw)
不毛すぎるので、見張らなくてもいいようにエビデンス動画を残しておきたいと思うのがエンジニアである。
## playwright-pythonで動画を撮る方法
[playwright-python](https://github.com/microsoft/playwright-python) には、自動操作中の動画を記録する機能がある。
以下の記事でも言及されているように、 `browser.new_context()` もしくは `browser.new_page()` の引数に `record_vid
機械学習アルゴリズムメモ 正則化線形回帰編
#正則化とは
特徴量の多いデータに対して過剰適合する線形回帰モデルの重みパラメータに対して制約を加えることで、過剰適合するのを防ぐ。リッジ回帰、ラッソ回帰、エラスティックネット回帰の3つが代表としてあげられる。
###【ラッソ回帰】
線形回帰と同様に、予測はデータの特徴量の線形和としてあらわされる。```math
\hat{y} = \sum_{i=1}^{p} w_ix + b
```しかしながら、損失関数は通常の線形回帰に重みwに対する制約が与えられる。ラッソ回帰の場合はL1ノルムである。
```math
E(w, b) = \frac{1}{n} \sum_{i=1}^{n} (y_i - \hat{y_i}) ^ 2 + \alpha \sum_{i=1}^{p} |w_i|
```###【リッジ回帰】
```math
\hat{y} = \sum_{i=1}^{p} w_ix + b
```リッジ回帰の場合はL2ノルムである。
```math
E(w, b) = \frac{1}{n} \sum_{i=1}^{n} (y_i - \hat{y_i}) ^
多言語で Fizz Buzz !
#はじめに
この記事では、FizzBuzzゲームのプログラミングコードを紹介する。とりあえず、Python、Fortran、C++で書いたコードを2つずつ見てみよう。#目次
1.そもそもFizzBuzzゲームとは?
2.Python
3.Fortran
4.C++#そもそも FizzBuzzゲームとは?
https://ja.wikipedia.org/wiki/Fizz_Buzz#Python
```python:for文
for i in range(1, 101):
if i % 15 == 0:
print('Fizz Buzz')
elif i % 3 == 0:
print('Fizz')
elif i % 5 == 0:
print('Buzz')
else:
print(i)
``````python:while文
i = 1
while i < 101: if i % 15 == 0: print('Fizz Buzz')
【optimizer入門】性質を変えて遊んでみる♬
前回は、optimizerを可視化して、その性質の一端を見た。
今回は、さらに深堀して性質からどのように利用できるかを考える。
前回の追記にするか迷ったが、角度を変えて記述することにより、より理解が深まると考えて、続編というよりは別偏とすることにしました。
とりあえず、内容と直接関係ないが、以下を参考として挙げておく
【参考】
①[Optimization Algorithms in Deep Learning-AdaGrad, RMSProp, Gradient Descent with Momentum & Adam Optimizer demystified;AdaGrad、RMSProp、勢いのある最急降下法とAdamOptimizerの謎を解き明かす](https://towardsdatascience.com/optimization-algorithms-in-deep-learning-191bfc2737a4)###やったこと
・VGD、momentum、そしてgrad規格化という3つの性質
・momentumの変数beta1の役割
・grad規格化の変数bet
PythonでFizzBuzz
Pythonの学習を始めた 備忘録
###コード
```Python
for i in range(1,31):
if i%3==0 and i%5==0:
print("FizzBuzz")
elif i%3==0:
print("Fizz")
elif i%5==0:
print("Buzz")
else:
print(i)
```###出力
```
1
2
Fizz
4
Buzz
Fizz
7
8
Fizz
Buzz
11
Fizz
13
14
FizzBuzz
16
17
Fizz
19
Buzz
Fizz
22
23
Fizz
Buzz
26
Fizz
28
29
FizzBuzz
```###余談
[Python超入門コース 合併版|Pythonの超基本的な部分をたった1時間で学べます【プログラミング初心者向け入門講座】](https://www.youtube.com/watch?v=HyU3XL2F9GE)
最初の一歩として上の動画を眺めた
FizzBuzzと
Spotifyで聴いた曲を全部プレイリストに保存する
# はじめに
Spotifyの履歴は50曲しか保存されないし、デスクトップアプリからしか確認できません。そこで再生した曲をプレイリストに自動追加してくれるスクリプトがあれば便利だと思い、このコードを書きました。プレイリストには1万曲まで追加できるようです。[spotipy](https://spotipy.readthedocs.io/)パッケージにAPIを叩いてもらうのが人気のようなのでこれを利用します。###(3月2日訂正)
以前はtokenを使った認証方法を記載していましたが、有効期限が1時間しかなく、1時間経つとエラーを吐いて止まってしまうようです。そこで[公式のドキュメント](https://spotipy.readthedocs.io/en/2.16.1/#authorization-code-flow)で推奨されている```oauth2```を使った認証方法に変更しました。# 今聴いている曲を取得
デベロッパーページ
https://developer.spotify.com/dashboard/applications
にアクセスして"CREATE AN AP