- 1. MLAskを使って自分がTwitterでいいねをするツイートの傾向を分析する
- 2. DjangoRestframeworkのModelViewSetでHTTPメソッドごとにカスタマイズする方法
- 3. もしカーリング女子北京オリンピック最終予選が、敗戦即敗退のトーナメント方式だったら…
- 4. GoogleColabでFlaskアプリを実行する方法(ngrok token必要になった模様)
- 5. Pythonで引数のデフォルト値として関数呼び出しをするときの注意
- 6. 将棋棋士の顔を判別するアプリを作成
- 7. 【図解】主成分分析でなぜ共分散行列の固有ベクトルが主成分になるのか
- 8. 深層学習でCAPTCHA突破
- 9. AIプログラミング編
- 10. Ubuntu20.04にグラボ積んでdocker-compose上でJupyterLabを動かせるようにするver2022.01
- 11. 共通鍵方式(AES)を使って、異なる環境で暗号化と復号化を行う
- 12. Python Numpyを使用して平均値や分散などを算出する
- 13. 第2章2.1~2.2 [第2版]Python機械学習プログラミング 達人データサイエンティストによる理論と実践
- 14. 化石がマイナスからKaggleを始める~レベル最弱の「タイタニック号を救え! ない」3 ~
- 15. Google ColaboratoryでサクっとStreamlit(最小構成)
- 16. PythonのPriority queue(優先度付きキュー)でPopすると最小値が取得できる
- 17. PySimpleGUIでforで使えるプログレスバーを作る
- 18. CNNによる画像分類:背景の影響を低減させる正則化
- 19. [Python] 初心者向け PythonAnywhereの無料アカウントでGoogle Newsをスクレイピング
- 20. Google Colaboratory(個人的便利シート)
MLAskを使って自分がTwitterでいいねをするツイートの傾向を分析する
#はじめに
最近Twitterを活発にするようになりました。その中でよく#sarinatalkというタグについて検索し、いいねをしています。#sarinatalkは日向坂46の公式メッセージアプリでメンバーの潮紗理菜さんが発信したメッセージに対する、ファンのTwitterでの反応につくハッシュタグになります。今回はこのハッシュタグ#sarinatalkについて、自分がいいねをするツイートの傾向を分析しようと思います。https://www.hinatazaka46.com/s/h46app/page_common/app_guide
#やったこと
・Twitterからtweepyを使ってデータ取集・ツイートの前処理
・MLAskでいいね有無それぞれに対するネガポジ分析#データの収集・前処理
###TwitterAPIの登録
Twitterからデータを収集するために、まずTwitterAPIを使うための登録を行いました。登録方法は以下を参考にしました。使用理由などを英語で記入しなければいけませんが、拙い中学レベルの英語でも大丈夫でした。
[Twitter API 登録 (ア
DjangoRestframeworkのModelViewSetでHTTPメソッドごとにカスタマイズする方法
# 目的
DjangoRestframeworkでModelViewSetを使ってシンプルに爆速でAPIを実装しようと思ったものの、HTTPメソッドによってはデフォルトの動作だけではなく、他の動作を追加してみたいとおもった。# 実施環境
### ハードウェア環境
| 項目 | 情報 |
|:-:|:-:|
| OS |macOS Catalina(10.15.7) |
|ハードウェア | MacBook Air (11-inch, Early 2015) |
|プロセッサ | 1.6 GHz デュアルコアIntel Core i5|
|メモリ | 4 GB 1600 MHz DDR3 |
|グラフィックス | intel HD Graphics 6000 1536 MB |
### ソフトウェア環境
| 項目 | 情報 |
|:-:|:-:|
| homebrew | 3.3.8 |
| mysql | Ver 8.0.27 for macos10.15 on x86_64 |
| python | 3.8.12 |
| anaconda | 4.
もしカーリング女子北京オリンピック最終予選が、敗戦即敗退のトーナメント方式だったら…
## はじめに
初めまして、まず、この記事を書く前に、北京オリンピックに出場が決まった、カーリング女子、日本代表のロコ・ソラーレに敬意を表しまして、改めておめでとうございます。と申し上げます。
大会開催期間中、2021年12月11日から17日まで、プレーオフ出場圏内で、一進一退の攻防で手に汗握る熱戦を、毎晩固唾を飲んで観戦しておりました。
無事にカーリング女子、日本代表のロコ・ソラーレが北京オリンピックの出場権を獲得したときに、総当たり対戦表結果を見た時に、ふとしたことに気づきました。
まずは、出場全9チームの総当たり対戦成績表を下記に示します。## カーリング女子・最終予選の総当たり対戦成績表
| |スコットランド|韓国|日本|ラトビア|イタリア|ドイツ|トルコ|エストニア|チェコ|
|–|–|–|–|–|–|–|–|–|–|
|スコットランド|-|×|◯|◯|◯|◯|×|◯|◯|
|韓国|◯|-|×|◯|◯|◯|×|◯|◯|
|日本|×|◯|-|◯|◯|◯|×|◯|◯|
|ラトビア|×|×|×|-|◯|×|◯|◯|◯|
|イタリア|×|×|×|×|-|◯
GoogleColabでFlaskアプリを実行する方法(ngrok token必要になった模様)
# 1.概要
2021年12月中旬以降GoogleColaboratoryでngrokを介してwebアプリを立ち上げるにはngorkのtokenが必要になったようです。そこでtokenの取得方法とコード内への記述内容について記します。【背景】
今までGoogleColab上で使っていたwebアプリ実行のコード(ngrok tokenの記述なし)をそのまま実行すると以下の画面が出てきてWebアプリにアクセスできない。。。→これを解決したい!
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/613560/11133213-faaf-1c4b-f7fd-3dbd5e68e231.png)ちなみに、アクセスしようとすると本文文末(Appendix2)に示すような警告がでるかもしれません。
https://qiita.com/k_koba619/private/32ec04a04d1e37b86465#appendix2%E3%82%A2%E3%82%AF%
Pythonで引数のデフォルト値として関数呼び出しをするときの注意
### 先に結論
関数を定義した段階で、デフォルト引数で呼び出している関数の結果は確定する。“`python
from time import time
from uuid import uuid4def some_func(now=time(), uuid=uuid4()):
print(now, uuid)some_func()
some_func()
some_func()
some_func()# >>> 1641341885.5043182 e5ffb9ca-e068-4810-bfa9-3c801734e2b0
# >>> 1641341885.5043182 e5ffb9ca-e068-4810-bfa9-3c801734e2b0
# >>> 1641341885.5043182 e5ffb9ca-e068-4810-bfa9-3c801734e2b0
# >>> 1641341885.5043182 e5ffb9ca-e068-4810-bfa9-3c801734e2b0
“`### 実際に自分が起こした問題。
ユーザーインスタンス作成
将棋棋士の顔を判別するアプリを作成
#目次
* はじめに
* アプリ概要
* 開発環境
* 画像収集
* 顔領域の検出
* 画像の分割
* 画像の水増し
* モデルの作成・学習
* おわりに#はじめに
この記事は、Aidemy premium plan AIアプリ開発講座の成果物作成の過程を記録したものです。
私は将棋に興味があるので、将棋棋士の顔を判別できるアプリを作成しました。#アプリ概要
Web上にアップロードされた画像から藤井聡太・渡辺明・永瀬拓矢・豊島将之・羽生善治の内の誰かを判別するアプリ。#開発環境
Google Colaboratory#画像収集
Seleniumを使ってYahooからそれぞれの棋士の画像を取得し、GoogleDriveに保存しました。requestsとBeautiful Soupでは画像を取得できなかったので、Seleniumを使用しました。
1人あたり100枚の画像を取得することができました。取得した画像の中で、関係ない画像やマスクをしている画像などの使用できない画像は削除しました。その結果、今回使用する画像は1人あたり80枚になりました。“`python
!a
【図解】主成分分析でなぜ共分散行列の固有ベクトルが主成分になるのか
#1. はじめに
主成分分析(PCA)の勉強中になぜ共分散行列の固有ベクトルが主成分となるのか疑問に思いました。
数学的な意味は説明をできないのですが、アニメーション等を使ってイメージをつかみたいと思います。
*数学的な説明と厳密性はありませんので、参考程度にご覧ください。#2. 固有値とは
こちらの投稿がとても参考になります。
https://qiita.com/kenmatsu4/items/2a8573e3c878fc2da306
(抜粋)
まず、固有値・固有ベクトルとは以下の数式に示されます。“`math
A{\bf x} = \lambda {\bf x}
“`
${\bf x}\neq {\bf 0}$の${\bf x}$で、行列Aをかけると、長さが$\lambda$倍になるような${\bf x}$の事を**固有ベクトル**, $\lambda$を**固有値**と言います。
下記のグラフのように、行列Aで変換しても、回転せず、単に長さだけが変わるような引き伸ばしのみを行う、Aとxの組み合わせの事になるのです。![image.png](https
深層学習でCAPTCHA突破
SaaS型Webアプリ診断ツール「AeyeScan」を運営している株式会社エーアイセキュリティラボが、セキュリティテストの自動化、脆弱性診断の内製化、AI/機械学習などの技術情報の共有を目的とした記事です。
AeyeScanの情報はこちら https://www.aeyescan.jp
エーアイセキュリティラボの情報はこちら、https://www.aeyesec.jp今回は、深層学習でCAPTCHAを突破してみたいと思います。
#1.問題設定
前回お話した通り、弊社では自動巡回型のWebアプリケーション脆弱性診断サービスを提供しております。
また、認証機能に関連する以下のような機能を提供しております。1. 簡単なパスワードを使用できないか調べる検査を追加
1. 高頻度でログインを試行できないか調べる検査を追加
1. CAPTCHAを簡単に突破できないか調べる検査を追加今回は3に関連して、有名なCAPTCHAを突破できないか実験してみたいと思います。
CAPTCHAとは、画像や音声等の読み取りを利用者に行わせることで、ボットなどの自動化されたプログラムのアクセスを防ぐ仕
AIプログラミング編
SaaS型Webアプリ診断ツール「AeyeScan」を運営している株式会社エーアイセキュリティラボが、セキュリティテストの自動化、脆弱性診断の内製化、AI/機械学習などの技術情報の共有を目的とした記事です。
AeyeScanの情報はこちら https://www.aeyescan.jp
エーアイセキュリティラボの情報はこちら、https://www.aeyesec.jp今回は、実際に問題解決に機械学習を使ってみたいと思います。
#1.問題設定
弊社では自動巡回型のWebアプリケーション脆弱性診断サービスを提供しております。
自動巡回では、あるURLにアクセスし、そのページにあるリンクやフォームを静的に解析したり、リクエストが発生する操作を動的に探して実行するなどして、次にアクセスするべきURLを探します。そして、これを繰り返し行い、Webアプリケーション全体をできる限り広く、そして速くアクセスすることを目指します。こうした自動巡回を実装する際には、様々な問題に直面します。例えば、
* フォーム要素に正しい値を入力できず、投稿完了まで進むことができない
* フォーム入力エラー
Ubuntu20.04にグラボ積んでdocker-compose上でJupyterLabを動かせるようにするver2022.01
## まえがき
せっかく自宅サーバ機にgtx 1650を搭載したので、全部やり直すついでにセットアップ手順を記録します。
このサーバ構築の目標は
– dockerコンテナ上で
– docker-composeを使って
– jupyterlab環境を構築し
– かつ、搭載したグラフィックカードの機能(cuda)を使えるようにするです。誰かの助けになれば幸いです。
所々で出てくるvimについては、お好みのテキストエディタをお使いください。
## 1. BIOS設定 & OSインストール
デスクトップPCとしても使う場合などは適宜読み替えてください。
### ハードウェア周り
あまり良く考えずに組んだ自作PCです。
– AMD Ryzen 5 3400G with Radeon Vega Graphics
– B450 GAMING PLUS MAX (MS-7B86)
– NVIDIA Corporation TU117 \[GeForce GTX 1650\] (rev a1)
– 1TB CT1000MX500SSD1
– メモリ たくさん### インスト
共通鍵方式(AES)を使って、異なる環境で暗号化と復号化を行う
## TL; DR
AES256での共通鍵方式を使い、暗号化をpython、復号化をphp環境で行う方法を紹介します。
結論は、“`php
$options = OPENSSL_RAW_DATA | OPENSSL_NO_PADDING;
// あるいは
$options = 3;
“`を指定して復号化しましょう、です。
## 1. やりたいこと(前提環境)
以下にしました流れが、ここで実現したい流れです。
1. ブラウザから、とある暗号化したい文字列を、python flaskサーバにPOSTする
2. 渡された文字列を、AES-256のCBCモードで暗号化する
3. 暗号化された文字列を、APIのresponseとしてBrowserで受け取る
4. php環境のApplication Serverへ、Browserから暗号化された文字列をPOSTする
5. php環境で、暗号化された文字列を復号化する![overview.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1094
Python Numpyを使用して平均値や分散などを算出する
#はじめに
こんにちは、この記事はプログラマーでもエンジニアでもなんでもないただのPC初心者がプログラミングの勉強のために書いたものとなっています。今回はpythonのライブラリであるNumpyを使用して、平均値・最大値・最小値・四分位数・分散・標準偏差を求めたいと思います。#開発環境
・Windows 11
・VScode
・Python 3.9.2
・Numpy 1.21.2#Numpy
公式ドキュメント
https://numpy.org/doc/1.21/index.html配列の計算を得意とするライブラリで、C言語で書かれているため、計算処理が速くなります。
#Numpy配列
とりあえず、Numpyを使った配列を書いてみます。“`python:コード
import numpy as np
#ライブラリのインポートlist = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
#numpyを使わない配列
nplist = np.array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
#numpy配列print(li
第2章2.1~2.2 [第2版]Python機械学習プログラミング 達人データサイエンティストによる理論と実践
#学ぶこと
機械学習アルゴリズムのうち、パーセプトロンとADALINE(Adaptive Linear Neuron)の2つを分類問題に適用します。
軽い説明をしたあと、Pythonで実装してみましょう的な流れになっております。この章の目的は
・機械学習のアルゴリズムに対する直感を養う
・Pandas、NumPy、Matplotlibを使用し、データの読み込み、処理、可視化を行う
・線形分類のアルゴリズムをPythonで実装
となっています。#2.1 人工ニューロン – 機械学習の前史
まずは初期の機械学習について。人工知能を設計するにあたり生物学上の脳の仕組みを解明しようとしていた[Warren McCulloch(ウォーレン・マカロック)](https://ja.wikipedia.org/wiki/%E3%82%A6%E3%82%A9%E3%83%BC%E3%83%AC%E3%83%B3%E3%83%BB%E3%83%9E%E3%82%AB%E3%83%AD%E3%83%83%E3%82%AF)と[Walter Pitts(ウォルター・ピッツ)](https://ja.w
化石がマイナスからKaggleを始める~レベル最弱の「タイタニック号を救え! ない」3 ~
#前提
数学力・統計力・技術力がほぼすべて「ゼロより低い、マイナス」の化石エンジニア・アンモナイトが生き残りを目指して~~賞金が欲しくて~~、Kaggleに挑戦する。
たぶん、Kaggleに挑戦する記事の中で、もっともレベルが低いと思う。
現状は、チュートリアルコンペ・タイタニック号の内容に驚愕し(「え、タイタニック号を救う話じゃないの?」)、
そもそも技術とは……となったところです。#1:自習
前回判明の通り、いかんせん、アンモナイトは技術力が低すぎる+思い込みが強すぎる=マイナス過ぎる。
このままではKaggle挑戦を月日とともに忘却し、少しでもマシなIT系の人になろう、という初志を忘れかねない。
そこで、Kaggleをホールドしつつ、地道に他社の研修資料&動画を見ることにした。
ありがたいことに、昨年は研修資料&動画を公開してくださった企業様が複数あり、
「最初にこれを見るべき」ということで、サイボウズ様の研修資料&動画を見始めました。
つまり、Kaggleに挑戦すると同時に、「常識」を学ぶ。サイボウズ様・研修:
https://blog.cybozu.io/entry/
Google ColaboratoryでサクっとStreamlit(最小構成)
>**colabでサクッとStreamlit(最小構成)**
https://colab.research.google.com/drive/1M7vXfYIeLed1u-awzd39u6PU-tCGNC0W
# 使い方
`メニューバー`から、>`ランタイム` **>** `すべてのセルを実行`
:::note warn
このノートブックは Google が作成したものではありません。
:::
という警告が出たら内容をよく確認して、よければ`このまま実行`を押す。:::note info
最初は、各セルを確認しながらコピペして、自分でノートブックを作ってみるのがいいと思います。
:::そもそも`Google Colaboratory`の使い方は、という方はこちら。
https://qiita.com/gudapys/items/24a04b01438ea7e01678
# ソース
`pip`で`streamlit`をインストールします。
“`bash:コードセル1
!pip install streamlit
“`Streamlitメインの処理を`/
PythonのPriority queue(優先度付きキュー)でPopすると最小値が取得できる
PythonのPriority queue(優先度付きキュー)には[heapq](https://docs.python.org/3/library/heapq.html)が利用できます。ヒープは二分木によって実現されますが、「親ノードの値が子ノードより大きい場合」と「親ノードの値が子ノードより小さい場合」の2つのパターンが考えられます。教科書的には前者が多いようですが、Pythonのheapqは後者。そのため**Popすると最小値** が取得できます。ドキュメンテーションを引用すると下記の通り。
> The API below differs from textbook heap algorithms in two aspects: (中略) (b) Our pop method returns the smallest item, not the largest (called a “min heap” in textbooks; a “max heap” is more common in texts because of its suitability for in-plac
PySimpleGUIでforで使えるプログレスバーを作る
要素をforで回すときにプログレスバーがほしいと思ったときに作ったもの。
基本的に最後のコードを読んだ方が早い気がする。## PySimpleGUIについて
GUIをいい感じに作れるようになるライブラリ、これについては書いてくれている人がいくらでもいそうなので割愛。## 2つのプログレスバースタイル
プログレスバーは処理の全体が分かっている場合のプログレスバーと、
処理がどれだけ残っているか分からない場合のマーキースタイルがある。
どちらが適しているかを使う側が意識しなくていいように、Sizedで判定させて自動で切り替えるようにした。プログレスバーはsg.ProgressBarとして用意されているが、MAXが不明なマーキースタイルについては標準で用意されているものが見当たらなかったのでsg.Textをみっちり並べて色を変えることでそれっぽい動きをさせるようにした。
## 処理の流れ
Progressのインスタンスを作り、iterメソッドを使う。
またはProgressの第一引数にiterableを与えてProgress自体をforで回す。
iterは引数1つの使い方のみ。
CNNによる画像分類:背景の影響を低減させる正則化
# はじめに
CNNを用いた画像分類モデルを構築するときに、認識したい物体をちゃんと認識したモデルを作るのは結構難しかったりします。特に学習に用いるデータが少なくて偏りがあると以下の例のように画像の背景に基づいた分類モデルになってしまうこともあり得ます。
画像引用:https://arxiv.org/abs/1602.04938この記事では画像の背景の影響を少しでも減らして認識したい物体を認識したモデルを作るための手法として、Orthogonal Sphere Regularizationという正則化があったので試してみます。
今回の記事で参考にした論文はこちら↓
https://arxiv.org/abs/2009.10762/
使用したコードは以下のGitHubリポジトリに置いて
[Python] 初心者向け PythonAnywhereの無料アカウントでGoogle Newsをスクレイピング
クラウド上のサーバーでPythonのコードを実行できるPythonAnywhereでアカウントを作ったので、
手始めにYahoo! Japanのtopicsをスクレイピングしたかったのですが、403 Forbiddenエラーになります。これは、無料アカウントではPythonAnywhereからアクセスできるサイトが限られているためです。Google.co.jpはアクセスできたので、Google Newsからヘッドラインをスクレイピングすることにしました。
https://news.google.co.jp![スクリーンショット 2022-01-04 203150.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/823476/f5e41357-f060-af97-99a7-be21390160b2.png)
コードはこちらのサイトにのっているYahoo!のトピックスをスクレイピングするものをGoogle News用に変更しました。
【Webスクレイピング入門】ヤフーニュース の見出しとURLを
Google Colaboratory(個人的便利シート)
## Google Colaboratoryとは
一言で言えば、**Google版**Jupyter Notebook。
Googleが提供する無料サービスの一つで、クラウド上でPythonの記述、実行ができます。`ブラウザ`と`googleアカウント`さえあれば
Pythonの実行環境をサクッと**3秒**で構築できてしまいます。
クロスプラットフォームな実行環境であるため共同開発での差異が小さく[^1]、
また各ノートブックがサンドボックスであり`初期化 → 実行`や`新規作成 → 破棄 → 新規作成`のような使い切り開発や、
`ノートブックのコピー → 破棄`のような使い捨てもできます。
[^1]: ブラウザやバージョンにより挙動が異なることもあるようです。
## 出来たこと
>機械学習周りいろいろ
>githubとの連携
>簡易のhttp.server、CGIサーバーの起動
>Googleの各無料サービスとの連携、APIの利用
>Flask、FastAPI、Streamlit、SQLAl