Python関連のことを調べてみた2022年06月27日

Python関連のことを調べてみた2022年06月27日

Snykと使ってPython Webアプリを脆弱性診断してみた

## はじめに

この記事は[Qiita Engineer Festa 2022](https://qiita.com/official-campaigns/engineer-festa/2022)への参加記事です。

Snykの脆弱性診断機能を用いて、Pythonで書かれたWebアプリを診断してみました。
診断対象に、良いコード/悪いコードを比較するためのWebアプリ[vulpy](https://github.com/fportantier/vulpy)を使用します。

## Snyk(スニーク)とは

– 安全で迅速な開発を支援する、デベロッパーファーストのセキュリティプラットフォーム
– コードの依存OSSやコンテナ/IaC(Infrastructure as Code)における脆弱性を見つけ、優先順位をつけ自動修正
– Gitや統合開発環境(IDE)、CI/CDパイプラインに直接組み込めるため、デベロッパーが簡単に使用可能

※ 引用元: https://go.snyk.io/jp.html

## Snyk提唱のPythonセキュリティのベストプラクティス

安全なPyth

元記事を表示

【備忘録】NeologdをGCP経由でWindowsにインストールしてみた。

## 目的
Neologdを自身のPC環境を汚さずに欲しい。

## 概要
Google Compute Engine で辞書をインストールして、
Google cloud storage に zip で保存。
ブラウザからダウンロード。

## 背景
NeologdのダウンロードにはUbuntuが必要であるが、自身のPCの容量がない。
GoogleでUbuntuマシン作成できたな?
と、いうわけです。

触ってみる良い機会でした。
備忘録もかねて試行錯誤と手順を紹介します。

## 前提
– Google Compute Engine(GCE)でインスタンスを作成している。
– Google cloud storage(GCS)でバケットを作成している。

## 手順
1. GCEにGCSをマウントする。
1. GCE上で辞書を取得
1. 辞書をzipファイルにしてGCSに保存。
### 1.GCEにGCSをマウントする。
https://qiita.com/Gushi_maru/items/d1cbbfc7e2a1d790b39d

こちらを参考にしてGCEからGCSにデータを

元記事を表示

決定木分析

titanicの生存者データを使ってみる。

“`python
# 参考サイト
# https://smart-hint.com/ml/tree/

import seaborn as sns
import pandas as pd
from sklearn.model_selection import train_test_split
from sklearn import tree
df = sns.load_dataset(‘titanic’)
df.head()
“`

“`text
survived pclass sex age sibsp parch fare embarked class \
0 0 3 male 22.0 1 0 7.2500 S Third
1 1 1 female 38.0 1 0 71.2833 C First
2 1 3 f

元記事を表示

ジニ不純度

# 定義
>決定木のあるノード$t$に対し、ノード内のサンプルが$n$個、ノード内のクラスが$c$個のときを考える。
このノード$t$内で、クラス$i$に属するサンプルの個数を$n_i$とすると、クラス$i$に属するサンプルの割合$p(i|t)$を、
$$ p(i|t) = \frac{n_i}{n} \tag{1} $$
と書く。このとき、ジニ不純度$I_G(t)$の定義は以下。
$$ I_G(t) = 1 – \sum_{i=1}^c {p(i|t)}^2 \tag{2} $$
同じくエントロピー$I_H(t)$の定義は以下。
$$ I_H(t) = -\sum_{i=1}^c p(i|t) \log p(i|t) \tag{3} $$
エントロピーの対数の底はなんでも良いが、ノード内のクラス数$c$にするとエントロピーの最大値が$1$になるのでよく採用される。(後述)

引用
https://qiita.com/Qiita/items/c686397e4a0f4f11683d

![tree.png](https://qiita-image-store.s3.ap-northea

元記事を表示

Pythonによる因果推論~操作変数法~

# はじめに
操作変数法を用いた因果推論手法について、Pythonによる実装を交えてまとめました。内容について誤り等ございましたら、コメントにてご指摘いただけますと幸いです。

# 操作変数の概要

## 操作変数
操作変数(IV: Instrumental Valiable)とは、**処置には影響を与えるものの、被説明変数には処置を通してのみしか影響を与えない変数**です。

操作変数を用いることで
– 脱落変数バイアス(欠落変数バイアス)
– 同時決定・内生性バイアス

が生じている場合にも、因果効果の推定が可能になります。

:::note warn
### 用語の確認
– **脱落変数バイアス**(**欠落変数バイアス**)
本来であれば必要であるがモデルから抜け落ちている脱落変数(欠落変数)が存在することによって生じるバイアス。[こちらの記事](https://zenn.dev/articles/f0b91f19da2812)では、回帰モデルにおいて脱落変数バイアスが生じた例を紹介しています。
– **同時決定・内生性バイアス**
説明変数が被説明変数に影響を与えていると同時

元記事を表示

whileをforで代用しよう

# はじめに

皆さんは,`while`を使うべきコードをあえて`for`で書きたくなったことはありますか? (私はありません。)
今回は,そんな素直じゃない皆さんのために`while`を`for`で代用する方法を紹介します。

## 逆は簡単

今回やる逆の「`for`を`while`で代用する」はかなり簡単に実現できます。
`for`が実際にどういう処理なのかを知っておくと`while`を実装する際に理解しやすくなりため一応紹介しておきます。

Pythonの`for`はひたすらイテレータを`next`で叩いて`StopIteration`例外が飛んで来たら止めるだけです。
てなわけで
“`python
i = iter(range(10))
while True:
try:
item = next(i)
print(item)
except StopIteration:
break
“`
のようにすればOKです。

この辺りの事情を知りたい方は[Cpythonのソース](https://github.com/python/cpython/bl

元記事を表示

EventBridgeを使用した定期実行の間隔別にLambdaの処理内容を変える

ある検算処理を行って異常がないか確認し、その結果をSlackに通知するLambdaを作成しました。
Lambdaのトリガーは[EventBridge (CloudWatch Events) ](https://docs.aws.amazon.com/ja_jp/eventbridge/latest/userguide/eb-what-is.html#)を使用して、1時間毎と24時間毎に定期実行を行いました。
1時間毎と24時間毎で処理内容を変える方法について記載します。
開発言語はPythonです。

# EventBridgeでルールの作成
EventBridgeで下記のルールを2つ作成しました。

## rule-every-hour 
1時間毎の定期実行 “`rate(1 hour)“`
このイベントをLambdaが受けた場合、異常があれば通知する(異常がなければ通知しない)。

## rule-every-day 
24時間毎の定期実行 “`cron(0 10 * * ? *)“` 毎日午前 10:00 
このイベントをLambdaが受けた場合、異常がなくても結果を通

元記事を表示

seach_30_dayを使ってツイートを取得

# 1. はじめに
`search_tweets`では過去約7日分のツイートしか取得できない.
よって、`serach_30_day`を使って、ツイートを取得する.
`serach_30_day`は過去30日分のツイートを取得できる.
ちなみに、無料プランではツイートの取得数に限度があり.(確か1か月で25,000ツイートまで)

# 2. コード
“`
searchkey = ‘パナソニック 自転車 -楽天’
tweets = tweepy.Cursor(api.search_30_day, label=”, query=searchkey).items(2000)
“`

`query`:検索したいワードを入れる.
上記の例だと、パナソニック AND 自転車 AND 楽天を含んでいない
`label`:twitter APIで設定した名
items() : 取得ツイート数

# 3. コード全体
ここの3.を参照.

https://qiita.com/mizomouse/items/bdeade4936bc9ab66904

元記事を表示

文章からLGTM数を予測して「バズる記事」を判別してみた

# はじめに
Qiita初心者の[@pyopp8128](https://qiita.com/pyopp8128)と申します。
これまでに記事を2本ほど投稿してみたのですが、他人に見てもらえる記事というのはそう簡単に書けるものでもなく、「あ~楽してLGTM沢山貰いたいな~」などと言っているところでしたが、じゃあ __LGTMが多くつく記事ってどんな記事だ?__ という疑問に至りました。

そこで、記事本文を自然言語処理により解析し、__LGTMがつく/つかないを判別する機械学習モデルができないか__ を試してみることにしました。

本記事の内容は以下の通りです。
– LGTMの数を基準に、__Qiita上の記事がバズるかバズらないかを判別するAI__ を作ったよ
– BERTのファインチューニングにより、Qiita中の記事がLGTM>100かどうか判別する2クラス分類深層学習モデルを作成したよ
– Qiita APIを通して取得した約10,000記事のデータセットを用いてモデル構築&性能評価を行ったよ
– 性能評価の結果、正解率81%、AUC0.89とまあまあのモデルが出来たよ

#

元記事を表示

【Matplotlib】色々な種類のグラフを描画する方法

## 【はじめに】

Pythonライブラリの「Matplotlib」には、描画できるグラフの種類がいくつかあります。

どのグラフを使った方が良いのか分からない方のために、利用用途に応じたグラフの種類を紹介していきます。

### 本記事の内容

– グラフの種類と利用用途
– Matplotlibをインポート
– 使用するデータを読み込む
– 棒グラフを作成する | bar/barh
– 散布図を作成する | scatter
– ヒストグラムを作成する | hist
– 箱ひげ図を作成する | boxplot

## 【グラフの種類と利用用途】

統計では得られた結果を、その目的に合わせて上手に使うことが重要です
自分が伝えたい目的に応じて、適切なグラフを使うことにより、説明力が高まります。
グラフの種類と利用用途については次のURLが参考になると思います。

https://www.stat.go.jp/teacher/graph.html

今回は、次のグラフについて紹介します。

| 種類 | 利用用途 | 利用シ

元記事を表示

[kaggle / python] 回帰問題(house prices)に取り組む(6)~ハイパーパラメータのチューニング~

前回の続きです。
今回は、ハイパーパラメータのチューニングを行いました。

前回の記事はこちら。

https://qiita.com/siruku6/items/48e70607dc16746ec280

もう、「超初歩」っていう感じじゃなくなってきたので、今回のタイトルからは「超初歩」の文言を外しました。

# the previous and today’s result(前回と今回の結果)

| |やったこと |score |
|———–|——————————————–|——-|
|前回 |カテゴリ特徴量に対するOne hot Encodingの適用|0.14835|
|今回 |ハイパーパラメータのチューニング(optuna)|0.13948|

なんかすごい改善した。

# Why?

ハイパーパラメータによって精度はかなり変わります。
なので、ハイパーパラメータのチューニングは、どの

元記事を表示

[Python] macにDockerを入れてsumyを試してみた

## 背景
「Pythonでテキストを要約してみたい。」

とういうことで、[この記事](https://self-development.info/【python】テキスト自動要約が可能なsumyのインストール/)を参考にPythonのライブラリの`sumy`を使用してみました。

この記事では、macの中にDockerを入れることからします。
python3.6以降+pipの環境がある場合は、[ライブラリのインストール](#ライブラリのインストール)までスキップできます。

## 環境
– MacBook Air (M1)
– macOS Monterey 12.3
– Homebrew 3.4.6

## Docker Desktopの起動
“`sh
brew install –cask docker
open /Applications/Docker.app
“`
`–cask`を付けると、Docker Desktopがインストールされます。

私の環境では、以下のエラーが出ました。
“`
It seems there is already a Binary at

元記事を表示

Atcoder参加記録 ABC257 PythonでC~E

# C – Robot Takahashi
https://atcoder.jp/contests/abc257/tasks/abc257_c

“`python
from collections import defaultdict

def main():
“””解答方針
①体重Wを軽い順にソート
②まずX=0とした時の正解の数=大人の数をcorrectとして記録
③次にXをWの中で一番小さな値wよりわずかに大きな値とする
– 重さwにいる人を”子供”と判定するようになる
– その人が子供なら、正解が1つ増えるのでcorrectを1増やす(correct += 1)
– その人が大人なら、正解が1つ減るのでcorrectを1減らす(correct -= 1)
④XをWの中で次に小さい数にして同様に判定、これをソートしたW全てで行う
その中でcorrectの最大値を答えansとして保存する

同じ重さwに複数の人がいる場合、重さwに大人がx人、子供がy人いるのであれば

元記事を表示

AtCoder ABC257 A-DをPythonで解く

# A – A to Z String 2
$N$が十分に小さいので2つの解き方があります。
– 文字列を実際に作成してそのindexを参照する方法
– $O(1)$で文字を特定する方法

注意: 文字列の結合はimmutableな変数を作成するため、$O(1)$ではありません。今回は制約が小さいので文字列を生成して間に合いますが、注意してください

実装(Python/シミュレーション)

“`Python
n, x = map(int, input().split())
s = “”
for i in range(26):
s += chr(ord(“A”) + i) * n
print(s[x-1])
“`

https://atcoder.jp/contests/abc257/submissions/32707625

実装(Python/O(1))
元記事を表示

pythonで気象データを取得

# はじめに
先日気象データのスクレイピングをしたので、メモとして残しておきます。

以下の記事を参考にさせて頂きました。

https://qiita.com/OSAKO/items/d25b8484d35ef4fe19e0

# 観測地点の一覧表を取得
以下のクラスを使うと取得できます。
掲載に当たって若干編集しているので、動かないかもしれませんが、適当にデバッグして使ってください()

“`python
import pandas as pd
import requests
from bs4 import BeautifulSoup
from tqdm import tqdm
import re

class AmedasStationScraper(object):
“””
アメダスの観測地点の一覧を取得できるクラス

Examples
———-
>>> df = AmedasStationScraper().run()
“””

def __init__(self, encoding=’utf-8′):

元記事を表示

セグメンテーションの神ソフト「EIseg」をubuntu20でインストールするまで。

**1.セグメンテーション「EIseg」とは**
GitHub「https://github.com/PaddleCV-SIG/EISeg」
![141130688-e1529c27-aba8-4bf7-aad8-dda49808c5c7 (1).gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/345719/8f96e6fc-2dad-1e0c-39c7-577b9da1a963.gif)

どうやら、クリックだけでセグメンテーションが可能らしい。
手でやるセグメンテーションは地獄なので、なんてありがたい。
しかし、インストールまで1日を要したのでUbuntuでのハマりポイントをここに記します。

**2 導入**
最初の環境
-Ubuntu22.04 
-Python 3.10.4
-venv で仮想環境を構築
まず、Ubuntu22で導入を試みました。
謎のエラーが出てどうにも無理でした。 

**3 再導入**
Ubuntu22は公式でも動作確認してないので、あきらめてUbuntu20で
環境

元記事を表示

colaboratoryのipynbファイルを、ローカルPCのVScodeで実行したらGPUが認識されなかった

# colaboratoryのipynbファイルを、ローカルPCのVScodeで実行したらGPUが認識されなかった

・新規でipynbファイルを作成したことで解決
・理由はわからない。ipynbファイルに前世の情報がのこっているのかな。

colaboratoryで学習をまわしていたが頻繁にセッション切断されるため、ローカルPCのgpuで学習させようと思いました。
colaboratoryからipynbファイルをダウンロードしてVScodeに取り込んで実行しましたが、GPUが利用できなかった。

GPUはRTX3080laptop
CUDA11.7、cuDNNv8の最新

VSCode上でvenvで仮想環境を作り、Pytorchのバージョンは1.11 cuda
https://pytorch.org/

colaboratoryからダウンロードしたipynbファイルで実行すると
“`python
import torch
torch.__version__,torch.cuda.is_available()
“`
結果は、`(‘1.11.0+cpu’, False)`

新しく

元記事を表示

雀魂の画面から画像認識で対戦情報を持ってくる(Vol. 2)

[前の記事](https://qiita.com/xenepic_takku/items/20a7f502d6cea2ea5be8)

# 前回までのあらすじ
node.jsで画面のスクショを取る方法を色々探った結果、`python-shell`を使うとnode.jsからpythonが実行できるとのこと。
pythonでは`pillow`を使用するとスクショが取れるようなので、これを組み合わせてスクショ問題を解決しよう!

# pillow
さて、じゃあまずpythonでpillowをインストールして、実際にスクリーンショットが撮れるか試してみます。

“`
pip install pillow
“`
でインストール完了。

“`python:examplePillow.py
from PIL import ImageGrab

ImageGrab.grab().save(‘screenshot.jpg’)
“`
プログラムとも呼べないような2行のコードを書いて、いざ実行すると、
おぉ!ちゃんと保存できている!
いやーなんて素晴らしいんだpython!すごいぞpython!それ

元記事を表示

現役データサイエンティストが真っ新なWindows PCの環境構築をしてみた【WSL環境にDockerインストール】

# はじめに
こんにちは!
普段はデータサイエンティストとしてポリポリ働いているものです。

ここ最近プライベートPCの調子が悪くて。。。
思い切って出荷前状態に初期化してみたわけです。

で、せっかくなのでタイトルの通り真っ新な状態から環境構築をしてみたので備忘録も兼ねて綴ってみました!

# 目標
:::note info
WSL上でDockerコンテナを立ててPython(PyTorch)環境を構築できるようにすること
:::

# VSCodeの準備
まずはエディタの準備です。やっぱりVSCodeが使いやすくていいですよね。

というわけでまずは以下リンクからダウンロードしてください。

https://code.visualstudio.com/Download

ダウンロードしたインストーラーを起動してポチポチしてインストールしていきます。

![スクリーンショット (5).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2512195/343bf4a9-b067-074b-c16d-e47

元記事を表示

OpenCV python版で動画を加工する

静止画像については以前に2つ記事書いてます
https://qiita.com/studio_haneya/items/a50847be3891daa8e2f8
https://qiita.com/studio_haneya/items/111f0975eae6fdecb1aa

# 1. インストールとimport

pipで入ります

“`terminal
pip install opencv-python
“`

importするときはcv2で呼びます

“`python:importする
import cv2
“`

# 2. 動画を読み込む

今回は「C0001.MP4」という名前のファイルを加工したいと思います

“`python
path = ‘./C0001.MP4’
cap = cv2.VideoCapture(path)
cap
“`

cv2.VideoCaptureはカメラからリアルタイムで取得するのにも使えるようです
https://note.nkmk.me/python-opencv-videocapture-file-came

元記事を表示

OTHERカテゴリの最新記事