- 0.0.1. AOJのアルゴリズムとデータ構造入門をPythonで解いていく -Part4-
- 0.0.2. 過去の電力使用量取得 沖縄電力編
- 0.0.3. 機械学習は平行四辺形を予測できるか?(1)
- 0.0.4. 【2020年度版】個人用クローラーの開発手順とその注意点
- 0.0.5. Codeforces Round #648 (Div. 2) バチャ復習(9/5)
- 0.0.6. (Python)Trelloから期限が近づいているタスクをslackに定期通知するアプリを作ってみた。
- 0.0.7. SQSでCognitoユーザー一覧をS3に作成するキュー処理を行う関数とAPIをLambdaにSAMでデプロイする
- 0.0.8. SIGNATE 【第1回_Beginner限定コンペ】銀行の顧客ターゲティング の解法
- 0.0.9. Modularity による VTuber 視聴者のコミュニティ分割
- 0.0.10. 【python】「多変量解析法入門」の例題でPCAスクラッチ
- 0.0.11. MACでmysqlをDLした後にユーザーを設定せずに出たエラーへの解決
- 0.0.12. 表情に合わせた音楽を提案してくれるLinebot「かおんがクン」
- 1. Linebotを作った背景
- 2. 完成デモ
AOJのアルゴリズムとデータ構造入門をPythonで解いていく -Part4-
#はじめに
こんにちは。もちもちもちおです。
AOJのアルゴリズムとデータ構造入門を解いていきます。
学んだ記録として残していこうと思いやす。僕自身プログラミングに触り始めてまだ半年もたっておらず
AtCoder緑なので、強者ではありましぇん。
一緒に頑張りましょう。ぱちょふぁそまちょぱそまちょぱそ
#目次
今回はPART3: 基本的データ構造 です。
頑張って最後までやりたいものです。ALDS1_4_A: Linear Search
ALDS1_4_B: Binary Search
ALDS1_4_C: Dictionary
ALDS1_4_D : Areas on the Cross-Section Diagram##ALDS1_4_A: Linear Search
tの要素各々確認していく
計算量は0(n*q)“`Python
n = int(input())
s = list(map(int,input().split()))
q = int(input())
t = list(map(int,input().split()))
ans = 0
f
過去の電力使用量取得 沖縄電力編
# はじめに
電力使用量予測のセミナーをしていて、各電力会社の公表されている過去の使用電力量の形式がまちまちなので取得するのが難しいというご意見を聞いていました。
そこで、それぞれの電力会社別にデータの取得方法をまとめてみます。ちなみに、対象とする電力会社は、北海道電力、東北電力、東京電力、北陸電力、中部電力、関西電力、中国電力、四国電力、九州電力、沖縄電力で、今回は沖縄電力さんを扱ってみます。
注:大量のダウンロードを繰り返すとサーバに負担がかかるので、ダウンロードは一回だけにするか、対象期間を限定して行うよう心がけて下さい。
# 動作環境
GoogleさんのCoraboratoryという環境で動作させます。
[Colaboratory](https://colab.research.google.com/)
# Webサイト
以下のWebサイトからデータをダウンロードできそうです。
[沖縄電力 でんき予報](https://www.okiden.co.jp/denki2/)
# ダウンロード
“`py:
for y in range(2016, 2020)
機械学習は平行四辺形を予測できるか?(1)
##機械学習って外挿できるのか?
[兵庫県マテリアルズ・インフォマティクス講演会(第4回)講演2「記述子設計手法」](https://web.pref.hyogo.lg.jp/sr11/mi4.html)で兵庫県立大学高度産業科学技術研究所の藤井先生が、記述子の設計について講演をされていました。ランク落ちのところがまだ少し理解ができていませんが、とても良い講演だったと思います。勉強になりました。
講演の途中に三角形の例があって、なるほどと思ったので、ちょっと平行四辺形を例に遊んでみました。
###問題:平行四辺形の面積を2辺の長さと2辺の間の角度の3つの特徴量が与えられた時に、面積を予測できるか?また外挿は可能か?
まず、次の図形の平行四辺形の面積を出すために、2辺の長さと2辺の間の角度をランダムに1000個作成しました。辺の長さは100~1000の間、角度は90度以下です。
![sihenkei.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/336017/f8768f3a-44d2-c965
【2020年度版】個人用クローラーの開発手順とその注意点
# はじめに
本記事の目的は、Webコンテンツ収集の自動化に興味ある方が、理想的なクローラーを開発できるようになる事です。そのために、クローラー開発の12ステップを紹介します。
クローラーとは、Webサイトを巡回し、コンテンツを記録・収集する自動プログラムを言います。その中でも理想的なクローラーとは、法律や各人の倫理観に従い、対象Webサイトの運用を妨害しないものであると私は考えています。
理想的でないクローラーは、Webサイトからアクセスを拒否されたり、エラー画面に強制遷移されたりします。
退屈な作業はパソコンにまかせ、トラブルは回避しつつ、あなたの可処分時間を増やしていきましょう。
※本記事は個人でのクローラー開発を想定しています。
※法律に関する記述は、法律家でない著者の解釈を多分に含むものであるため、参考程度でお願いいたします。責任を取ることはできません。
※Pythonの知識があると、本記事の理解が進みます。■参考サイト(Python入門サイト)
* [プログラミング言語 Python – python.jp](https://www.python.jp/
Codeforces Round #648 (Div. 2) バチャ復習(9/5)
#今回の成績
![スクリーンショット 2020-09-05 19.04.22.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/331393/ee048c54-7ed1-c1d5-ce6b-d371a687bf8d.png)
#今回の感想
今回はいつもの反省を生かして**冷静に取り組んだ**ところ比較的良い結果を残せました。ただ、**考察が必要な問題に当たると一時的に集中力を失う癖**があるので、そこでこそ過集中できるようにしたいです。
また、もう少し結果を出せた気もしますが、五完はおそらく初めてなので今後のモチベーションの糧にしたいです。
(この記事を除いて3つぶんの復習が溜まっているので早く消化したいです。)
#[A問題](https://codeforces.com/contest/1365/problem/A)
craiming cellが含まれる行及び列は選ぶことができません。ここで、最初の入力よりcraiming cellが含まれてない行および列の数はそれぞれ`mr,mc
(Python)Trelloから期限が近づいているタスクをslackに定期通知するアプリを作ってみた。
#前説
うちのチームは、全員がやらなければならないタスクをTrelloで管理しています。
(カードにタスク、チェックリストに個人名が並び、タスク完了者は☑をつける形式)上司は、毎回Trello開いて、各カード開いて、進捗を確認しなければなりません。
絶対面倒くさい。
そして、Trello Alertでは、カードの変更や新規作成、リストに☑をつけた時などにslack通知を出せますが、☑を付けるたびに通知が来るし、完了者と未完了者が一覧で見れるわけではありません。
基本的に、通知はslackのチャンネルを汚していきます(個人的な見解)。
そして、一覧で見れないのはやっぱり面倒くさい。じゃあ、定期的に(チャンネルを汚さない範囲で)タスク未完了者を通知するアプリを作ってしまおう。
そして、やるならAWS使って実装しよう。と思いつき、作ってみました。
(2020/09/06現在、権限の関係でSlackに通知を出しておりません。今後実装予定)#開発
##開発フロー
大まかな開発フローは、①TrelloのAPI叩く
②コード書く
③AWS lambdaに実装
④EventBridge
SQSでCognitoユーザー一覧をS3に作成するキュー処理を行う関数とAPIをLambdaにSAMでデプロイする
日本語が不自由なタイトルになりましたが順に設定していきます。
構成図は以下のとおりです。![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/74622/36723717-c969-cbe0-73e3-4b139d0c1c44.png)
### AWS-CLIのインストールとIAMの設定
“`
$ brew install awscli
$ aws configure
AWS Access Key ID [None]: ************
AWS Secret Access Key [None]: ************************
Default region name [None]: ap-northeast-1
Default output format [None]: json
“`### SAMのインストール
※ Dockerも必要になるためインストールと起動をしてください。“`
$ brew tap aws/tap
$ brew ins
SIGNATE 【第1回_Beginner限定コンペ】銀行の顧客ターゲティング の解法
# はじめに
機械学習コンペの国内プラットフォームのひとつであるSIGNATEにて、2020年8月に開催された「第1回_Beginner限定コンペ】銀行の顧客ターゲティング」に参加したので、自分の備忘録も兼ねて解法を記載します。**なお、特にオリジナリティのある解法を載せてるわけではありません。機械学習 初学者の方の参考になれば幸いです**(あと文章長いです)。# Begginer限定コンペ
SIGNATEではコンペの成績によって称号が与えられますが、SIGNATEに登録した時点の称号が「Begginer」になります。今回のコンペは一番下のBegginerクラスの人のみが参加できるコンペでした(Begginer限定コンペというのは今回が初開催のようです)。通常、Begginerから次の称号Intermediateにはコンペに参加し、1回でも上位60%に入れば昇格となりますが、今回のコンペでは指定スコアを達成すれば、その時点でIntermediateに自動昇格させてくれるという趣旨のコンペになります。
私もSIGNATEは登録しかしておらず、Begginerだったので参加してみ
Modularity による VTuber 視聴者のコミュニティ分割
# さまりぃ
– Modularity を使用して VTuber 視聴者のコミュニティ検知をした
– 得られたコミュニティは以下の3コミュニティで、ある程度自明な結果
– にじさんじ
– ホロライブ
– その他 (upd8、774 inc. 、AVATAR 2.0 など)
– ホロライブのみでコミュニティ検知をすると、2つのコミュニティに分割され、それぞれホロライブとホロスターズが主
– にじさんじとホロライブを除いてコミュニティ分割すると以下の3コミュニティで、同様にある程度自明な結果
– upd8
– 774 inc.
– AVATAR 2.0# もちべーしょん
– またこれまで扱っていた VTuber の放送へのコメント情報を使って遊びたい
– 最近勉強した Modularity を使用してコミュニティ検知を行ってみたい# Modularity
## Modularity に必要な記号の整理### 重み無しグラフの場合
– $a_{ij}$:重み無しグラフの隣接行列 $A$ の $(i, j)$ 成分
– $k_i :
【python】「多変量解析法入門」の例題でPCAスクラッチ
#はじめに
主成分分析の証明は追ってみたけど,使い方がよくわからなかったので,サイエンス社出版の「多変量解析法入門」という本の9章例題4をスクラッチすることで, 理解を深めようと思いました.この記事はその備忘録的なやつのつもりです.#使用するもの
・VSCode (…まぁエディタはなんでもいいですね)
・python バージョン3.7.0
・ライブラリ
-Numpy(行列の管理のため)
-Matplotlib(散布図のとこで使う)
・多変量解析法入門(サイエンス社)←以下では, この本のことを教科書と呼ぶことにします.#流れ
スクラッチの方針を簡単に確認します.
① データの入力
②データの標準化
③相関係数行列を算出
④固有値,固有ベクトルを計算
⑤主成分分析を行い, 2次元へ圧縮
⑥ついでに因子負荷量も出しちゃいます
⑦因子負荷量, 主成分得点それぞれの散布図を描画#データの行列化
例題にあるデータです. 手打ちで入力しました.“`:ex9_4.txt
86 79 67 68
71 75 78 84
42 43 39 44
62 58 98 95
MACでmysqlをDLした後にユーザーを設定せずに出たエラーへの解決
mysql を mac なのでHome brewでDLしました。
https://qiita.com/hkusu/items/cda3e8461e7a46ecf25d
ユーザー名の設定をしていなく、mysql.infoschemaと出てしまいました。![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/693241/77b98451-e07d-8c6c-42bd-0b764d780141.png)
このmysql.infoschemaをpythonに変更しようと、
rename user mysql.infoschema@localhost to python@localhost;
でユーザー名変更しようとしたところ、###
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the ri
表情に合わせた音楽を提案してくれるLinebot「かおんがクン」
Linebotを作った背景
「画像認識AI使ってなんか作りたいなぁ。。。」
「SpotifyAPI使って音楽提案アプリ作ってみたいなぁ。。。」
「せや!怒ってる顔してたらデスボゴリゴリの激しい音楽、悲しい顔してたらアコースティックな落ち着く音楽、笑顔やったらPOPな明るい音楽を提案してくれるアプリ作ろ!」
ということで今回の開発は始まりました。
完成デモ
![238cahpk.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/643906/1f05e5e0-21bd-c074-60ef-e0e88006d79c.png)
上記のQRから使えます。テストでこの画像を使いすぎて、アイコンにして
CentOS8+Apache2.4+pyenv+mod_wsgi+Djangoプロジェクトのデプロイ
なかなかに苦戦したのでメモ。
# 前提
– VMwareを利用して仮想のCentOS8環境を作り、そこにWebサーバーを構築する。
– Djangoプロジェクトは作成済み。共有フォルダかFTPかなんかを使ってプロジェクトフォルダごとCentOS上(今回は`/var/www/projectname/`)へ。# Apacheインストール
“`shell
$ dnf list | grep httpd
“`httpd本体の他に
– httpd-tools
– httpd-devel
– httpd-manualなどがあることがわかる。今後必要になるので本体とともにこれらをインストールする。
“`shell
$ dnf -y install httpd httpd-tools httpd-devel httpd-manual
$ dnf list –installed | grep httpd #インストールされているか確認$ systemctl start httpd
$ systemctl status httpd #Apacheを起動でき
ゼロつく2のAttentionからTransformerへ
#1.はじめに
**ゼロから作るDeep Learning2 自然言語処理編**を勉強しました。8章に **Attention** があるのですが、現在主流である **BERT** の基本になっている **Transformer** に割かれているのは僅か4ページでした。実はこれは無理からぬことで、ゼロつく2が発刊されたのは2018年7月で、Transformerが2017年12月、BERTが2018年10月というタイミングだったためです。
今回は、**ゼロつく2のAttention**から、現在の自然言語処理の基本とも言える **Transformer** の論文 **Attention Is All You Need** へと迫ってみたいと思います。
#2.ゼロつく2のAttentionとは?
![スクリーンショット 2020-09-04 19.00.17.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/209705/73cbc95b-d8e2-3748-a244-b879b9fb13e
【Numpy】2つの一次元配列をおそらく最短で交互に合成する方法
“`python
import numpy as npa = [0, 1, 2, 3, 4] #一次元配列1
b = [5, 6, 7, 8, 9] #一次元配列2c = np.c_[a, b].flat[:] #合成
print(c)
“`“`python:out
[0 5 1 6 2 7 3 8 4 9] #出力はndarrayです
“`
for文内で,plt.saveingしたい時
“`
for idx, file in enumerate(files):
plt.savefig(“fig/” + “{}.pdf”.format(idx))
““– enumerateで,番号をつけてあげてsaveingする
df.plotのlegendのfontsizeを変える
#困ったこと
– df.pltの引数ではlegendの大きさが変えられない#解決策
– plt.legendの後ろにいれる““
df.plot()
plt.legend(fontsize = 20)
““`– matplotlibに一回渡して,上書きしている(ぽい)
Pythonでファイル・フォルダを操作
#この記事の内容:pythonによるファイル・フォルダ操作について
pythonの標準モジュールos,shutilを用いて、以下のようなファイル・フォルダの操作を行う方法について調べたのでまとめました。・ディレクトリを作成する方法
・ディレクトリを中身ごとコピーする方法
・ファイルを削除する方法
・ディレクトリを中身ごと削除する方法
・空のディレクトリを削除する方法##ディレクトリを作成する方法
os.mkdir()関数で、ディレクトリを作成することができます。すでにそのディレクトリが存在する場合はエラーが出ます。“`python
import os
os.mkdir(“fold”)
“`##ディレクトリを中身ごとコピーする方法
shutil.copytree()関数で、既存のディレクトリを中身ごと他のディレクトリにコピーできます。“`python
import shutil
shutil.copytree(“fold1″,”fold2”) #fold1を中身ごとfold2としてコピー
“`##ファイルを削除する方法
os.remove()関数で、ファイ
ABC126 A,B,C 解説(python)
自らの理解を深めるための修練と誰かの一抹の救いになればと令和のABCのA,B,C問題について解説を書いていきたい。
##A問題
https://atcoder.jp/contests/abc126/tasks/abc126_alower使用と連結ができるか
“` python
n,k = map(int,input().split())
s = input()print(s[:k-1]+s[k-1].lower()+s[k:])
“`
s[:k-1]でk字手前の文字までを出力
s[k-1].lower()でk字目を小文字にして出力
s[k:]でk以降を出力##B問題
https://atcoder.jp/contests/abc126/tasks/abc126_b最初の2桁後半の2桁の数字をみて判断する。
そのため、最初はstr型でデータを受け取り
1、2字目 3、4字目をまとめてint型に変換する。“`python
s = input()
a = int(s[:2])
b = int(s[2:])if 1 <= a and a <= 12 and
Pythonで内外判定:任意地点の緯度経度情報から市町村名を取得
#やりたいこと
任意の地点の緯度経度情報のみから、当地点の市町村名を取得するプログラムを作りました。ポイントは、シェープファイルの読み込み、点の内外判定の2点です。
#用意するもの
pyshpとSympyという2種類のモジュールを使用しました(pipでインストール)。
・pyshp (shpファイル読み込みに使用)
・Sympy (内外判定に使用)
・市町村区界のシェープファイル
#プログラムの作成と実行
ソースコードは以下の通りです。“`python
import shapefile
from sympy.geometry import Point, Polygon
#
LONG=140.0
LAT=36.5
RPOINT=Point(LONG,LAT) #➀判定対象地点設定
#
src=shapefile.Reader(‘.\\shp\\japan_ver821.shp’,encoding=’SHIFT-JIS’) #ファイル読み込み
SRS=src.shapeRecords() #➁shpデータ読み込み
for srs in SRS:
shp=srs.shap