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

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

かぐーる(Windows10、Python3.9)

# はじめに
クジラ・イルカの識別をやっていこうかなと。

https://www.kaggle.com/c/happy-whale-and-dolphin/overview

# 開発環境
– Windows 10 PC
– Python 3.9
– Google Drive (2TB)
– Google Colaboratory

# 実装
1.Google Drive上にKaggle/happy-whale-and-dolphinフォルダを作成しておき、マウントしてカレントディレクトリを移動する

~~~py
import os
from google.colab import drive
drive.mount(‘/content/drive’)
os.chdir(“/content/drive/MyDrive/Kaggl

元記事を表示

Pythonのfor文は書き方によって元のデータが変わったり変わらなかったりするのを詳しく解説

 Pythonの基礎的な話、というか仕様にまつわる話です。個別の要素については既にたくさんの記事がありますが、「どうすればいいか」「なぜそうなるのか」という点をまとめて解説した記事はなさそうなので(あったらすいません)、そのあたりを知識の整理も兼ねて解説していきたいと思います。

# for文でリストを改変できない

 想定している罠は以下のようなものです。

“`python
nums = list(range(1,5)) #[1, 2, 3, 4]

for num in nums:
num *= 2

print(nums)
“`

 `[1, 2, 3, 4]`をそれぞれ2倍するという命令です。当然`[2, 4, 6, 8]`が出力されるものと思いきや、

“`python
[1, 2, 3, 4]
“`

 元のリストと変わらないものが出てきます。

# どうすればいいのか

 なぜそうなるのかは置いといて、これはとりあえず以下のようにすれば望む結果が出てきます。

“`python
nums = list(range(1,5)) #[1, 2, 3, 4]

元記事を表示

【解決】Pycharmのvenvでbad interpreter: No such file or directory と表示される。

## 結論
xcode-select –install

## 概要
PyCharmのvenv環境でjupyter notebookを起動しようとしたところ`bad interpreter: No such file or directory`と表示されjupyter notebookが起動されない。
原因を探るため、PyCharmでinterpreterとして設定していたPythonのpathを指定して-Vしてみると

“`
$ /usr/bin/python3 -V
xcrun: error: invalid active developer path (/Library/Developer/CommandLineTools), missing xcrun at: /Library/Developer/CommandLineTools/usr/bin/xcrun
“`

と出てバージョンが表示されない。
なぜだ…と思いエラーメッセージでググると、この現象はMacOSのメジャーアップデート後によく起きがちなことらしく、`xcode-select –install`を実行すれば

元記事を表示

Lambdaの明瞭な出力ログ [Python, Node.js]

#はじめに
Lambdaの出力ログは、CloudWatchLogsで確認しますが、json形式の明瞭なログ出力を書き留めます。

#Python
DynamoDBの数値を取り出す際、データとしてDecimal(数値)として取り出されますが、json.dumpsを実行すると、エラーが起きました。
そのため、Decimalを取り除くロジックをつけています。

`ensure_ascii=False`は、文字化け対策です。

“`python
import json
from decimal import Decimal

# json形式でログを出力するため、Decimalがある場合取り除く
def decimal_to_int(obj):
if isinstance(obj, Decimal):
return int(obj)

def lambda_handler(event, context):

print(“Received event:” + json.dumps(event, default=decimal_to_int, ensure_ascii

元記事を表示

【python】Wordcloudを用いた形態素解析

![wordcloud.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2471428/beaada41-7017-c27f-563f-e14c9f7d2dad.png)
#はじめに
ニュースでこんなグラフをみたことはありませんか?
文章を形態素解析し、wordcloudで文字の出現頻度を可視化したものです。
形態素解析は文章を単語単位で区切りそれぞれの単語に情報を付与する手法です。
本ページでは最もシンプルにwordcloudで文字の出現頻度を可視化する方法を示します。

#環境設定
###①Mecabのインストール
形態素解析にはMecabを用いました。インストールの仕方が少し複雑でしたが、下記のページが一番シンプル化と思います。

https://self-development.info/mecab%E3%82%92%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB%E3%81%9

元記事を表示

生存時間分析のCox比例ハザードモデルをConcordance indexを使って評価する

# はじめに

生存時間分析の一つとして Cox 比例ハザードモデルがあります。
Python の生存時間分析ライブラリである `lifelines` を使ってモデルを作成すると、評価方法についていくつか選択肢があります。
ここでは Concordance index (c-index, C 統計量) を使った評価についてまとめます。

# lifelines で Cox 比例ハザードモデルを作成した際の summary

今回は Python の生存時間分析ライブラリ `lifelines` に入っている “ROSSI” データを使用します。
以下のコードを実行すると、Cox 比例ハザードモデルを作成でき、図のような summary が取得できます。

“`python
import pandas as pd
from lifelines.datasets import load_rossi
from lifelines import CoxPHFitter
import matplotlib.pyplot as plt

rossi = load_rossi()

cph = C

元記事を表示

Yahooのニュース一覧をpythonでスクレイピングする方法

#1.環境
python3
mac OS
モジュールのrequestsとbs4が導入済であること

#2.モジュールを導入してない場合
macの場合、以下の文をターミナル入れれば大丈夫!

“`
pip install requests
pip install bs4
“`
#3.取得箇所

赤枠で囲ったところ
![スクリーンショット 2022-02-02 20.30.00.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2509814/986251a6-b90a-0dda-9ae8-4e910a2e9285.png)

とりあえず、モジュールを導入したら、以下のコードを実行する

“`sample.py
import requests
from bs4 import BeautifulSoup

# ニュースサイトを入れる
URL = “https://news.yahoo.co.jp/”
# HTMLのデータを取得する
res = requests.get(URL)
# BeautifulSo

元記事を表示

1500語の進撃の巨人IME変換辞書を5時間で作った話

#何の成果も!!得られませんでした!!
結論から言います。
何の成果も!!得られませんでした!!

私は進撃の巨人が大好きで、特に現在(2022/1/30)アニメ進撃の巨人final season part2を毎回楽しみに見ています。
ちなみに漫画は最後まで読んでいます。

進撃の巨人には有名なセリフがとても多く、とても汎用性が高いです。

https://animanch.com/archives/20704042.html

セリフが多いんだし、IMEの辞書でも作るかと思って、IME変換辞書が何なのかもわからないまま作り始めました。
結果として、タイトル通り、1500のセリフのIME変換辞書は5時間で作ることができました。
しかし、セリフのほとんどが長文で、全部タイプして変換を押して、やっと原作のセリフになるという使用になってしまいました。
文字を打っていったら、予測変換に登録したセリフが出てこればいいかなと思っていましたが、IME辞書はそういうものではありませんでした。

何はともあれ、辞書は完成したので、配布はします。`shingekiIME.txt`というものです。

元記事を表示

SIGNATEのコンペに初挑戦!

# はじめに

Qiita初投稿!!

今回、プログラミング初心者である私は[SIGNATE](https://signate.jp/)で行われているコンペに初挑戦することにしました。

挑戦したコンペは、[【練習問題】都市サイクルの燃料消費量予測](https://signate.jp/competitions/129)です。

# コンペの概要
> 車の情報を元に、燃料消費量を予測します。

> 課題種別:回帰
> データ種別:多変量
> 学習データサンプル数:199
> 説明変数の数:9
> 欠損値:あり

与えられたデータ

* 学習用データ(train.tsv)
* 評価用データ(test.tsv)
* 応募用サンプルファイル(sample_submit.csv)

|カラム名|説明|データ型|
|:———–:|:————:|:————:|
|id|インデックス|int|
|mpg|燃料消費量|int|
|cylinders|シリンダー|int|
|displacement|変位|int|
|horsepower|馬力(一部欠損)

元記事を表示

PyTorchでの分散学習時にはDistributedSamplerを指定することを忘れない!

PyTorch DDPでのマルチプロセス分散学習時のデータセットの指定方法について誤解していたので動作挙動を示したメモ。

## TL;DR

分散学習時にDataLoaderを作成するとき、samplerオプションにDistributedSamplerを指定しないとプロセス間でミニバッチサンプルを分割してくれないので注意(同じデータが各プロセスに送られる)

## 挙動の確認

### データセットの用意

まず初めにデータセットを(適当に)作る。0から99までの整数をintとfloatで返すデータセットを作る。学習データとラベルデータの対を返すイメージ(二つ返ればなんでもよい)

“` Python
train_dataset = torch.utils.data.TensorDataset(
torch.from_numpy(np.arange(100)),
torch.from_numpy(np.arange(100.))
)
“`

元記事を表示

SageMaker Studio上でGluonTSを使った時系列予測の解説(前半)

今回はAmazon SageMaker Studio上で、GluonTSというPythonの時系列予測用ライブラリにある複数のアルゴリズムを使い、比較検証する方法について紹介したいと思います。
AWSが用意しているチュートリアルについて自分なりに噛み砕きたいので、コードの中身を一部アレンジして記事にしてみました。以下のGitがチュートリアルになります。

https://github.com/aws-samples/amazon-sagemaker-gluonts-timeseriesforecasting-with-debuggerandexperiments

#GluonTSとは
AmazonがリリースしたPythonライブラリで、深層学習をベースにした時系列モデルを構築、評価できます。

GluonTSの特徴は以下の4つになります。

>・新規モデル構築のための高レベルなコンポーネント。Sequence to Sequence モデルなどの一般的なニューラルネットワーク構造、モデリングや変動確率分布のためのコンポーネントを含みます
・時系列データのためのデータ取り込みと反復処

元記事を表示

【Python】macOS Big Sur でのPython環境構築まとめ

# はじめに

 超初心者の自分がmacOS BigSurでPythonの仮想環境の構築方法を自分用のメモ程度に、NOSHIで書き殴り残しておきます。

 Pythonのバージョンによってはパッチが必要なものもありますのでご注意ください。

 あくまで自分用のメモ程度なので、日本語、コード、認識ポンコツでしたらごめんなさい。

## かいてるもの

・mac BigSur homebrew+pyenvでPython/Djangoの環境構築
・Python ver 3.9.0
・Django ver 4.0.2

## pyenvを用いたpythonインストール
**▼homebrewでpyenvをインストールする。**

“`
brew install pyenv
“`
> ◯Homebrewの準備とpyenvのインストール
> https://qiita.com/ramma/items/5c3cb3bb371e6a6286f1
> ◯pyenvの使いかた
> https://qiita.com/mogom625/items/b1b673f530a05ec6b423

**▼インス

元記事を表示

スクレイピング基礎備忘録

#Pythonを使ったスクレイピング技術(実務No2)
お小遣い稼ぎでデータ収集やGASによりシートないの自動化アプリを開発しています。
今回は実務の際に基本的操作をコピペできるよう経験から学んだことを備忘録として書き留める

目次

– スクレイピングする前の注意点
– 基本操作
– ブラウザの起動(よくあるエラー)
– htmlタグの取得(aタグの取得⇨再度検索)
– 広告対処
– ファイルを開いてファイルに格納
– with open ~ 書き込みと読み込みの方法
– タイムスリープの設定

スクレイピングする前の注意点

1.著作権について調べる
Webコンテンツは全て配信者の著作物になるので、勝手に使用することは基本的にNG。以下の用途での使用ならOKと考えて良い
– 個人や家族間で使用する。
– Web検索サービスを提供する。
– 情報解析をする。

2.robot.txtを調べる
検索するurlに/robot.txtで検索すると以下のような指示が書かれている
“`
User-Agent:*
Disallow: /admin/
Di

元記事を表示

Griffin-Limアルゴリズムの適切な反復回数はどのくらいだろう?

#はじめに
[前の記事](https://qiita.com/ma-szk/items/fe5c3d010b281dcd3537)でGriffin-Limアルゴリズムを紹介しました。
その中でGriffin-Limアルゴリズムは十分な反復回数を行うことで品質の良い結果が得られますと述べました。
しかし、実装ではtorchaudio.transforms.GriffinLimのデフォルトの反復回数である32回とその十倍の320回を試しましたがデフォルトの反復回数と十倍の反復回数で品質が良くなったのかイマイチわかりませんでした。
そこで本当に品質が良くなっているのかMOSの自動算出プログラムであるViSQOLをつかってスコア形式で見ていきたいと思います。

ViSQOLについての記事はこちら

https://qiita.com/ma-szk/items/2d2156892245b13f6c4f

#品質確認方法
以下の反復回数で試行します。

8回
16回
32回
100回
320回
500回
1000回
3200回

位相をランダムで初期化しているため反復回数ごとに3回動かしてみます。

元記事を表示

ニーチェの名言を藤原竜也化してみよう

##はじめに
みなさん、今日この頃いかがお過ごしですか。
自分は**値上げと、値上げと、値上げと、値上げ**で気が参っています。

コロナもそうですし、何かと暗い話題が多いですよね。
そんな時こそ笑える内容を見たいと思い、Qiitaで勉強ついでに面白そうなものを探していました。

そうしたら・・・

https://qiita.com/Euglenach/items/8b17ac2338f90d7b13c2

クスッと笑えたので、これを使って簡単なアプリを作ることにしました。

##画面
入力する言葉は何がいいかなーて考えていたら、ふとニーチェの言葉が浮かんだので試すことに。
送信ボタンを押すと、勝手に藤原竜也化してくれます。戻るボタンで他の言葉もまた入れられます。

![入力画面.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1259951/937e413f-c3ea-b011-df49-6d4ebf6e2a8a.jpeg)
![出力画面.JPG](https://qiita-image-store.

元記事を表示

【PyTorch】大規模な機械学習のためのHDF5操作

よくわからなかったので忘れないように…

# HDF5はなに?
* たくさんのいろんな種類のデータをひとつのファイルで管理できる便利なファイルフォーマット
* ディレクトリ構造によって管理できて直感的
* またPythonでもNumPyやPandasみたいに扱える
* HDF開発団体からビュワーアプリも公開されていて扱いやすい

# HDF5とPyTorch?
ディレクトリとそのデータとして扱えるので機械学習用のデータを管理するのにとっても都合がいいだけでなく、HDF5形式で扱うとデータが大規模過ぎてメモリにのらないよ~、データの読み書きに時間がかかりすぎてキレそうだよ~といったときにも、一つのデータごとにメモリに高速で載せてくれたり便利。

# 使ってみる
## 既存データセットをHDF5に変換する
とりあえず、私の手元にあるデータセットをHDF形式に変換してみます。
次のようなデータ構造で保存します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/543519/cf7cec88

元記事を表示

Python: loggingの便利なテンプレート

## はじめに

Pythonでコーディングする際に、デバッグ用によく`print()`を使っていませんか?
ここでの変数やオブジェクトの値を確認したい、、、みたいな。
でも、Pythonにはそれ専用の`logging`モジュールがあります。
分かってはいるけどセットアップが面倒で、ついつい`print()`を使ってしまうんですよね。

私もそうでした。。。はい。
そんなわけで、簡単にloggingをセットアップするための関数を作成しました。

興味のある方がいましたらお使いください。

## 開発環境

Python 3.8, VisualStudio 2019 Community

## コード

コードはおもに2種類あります。
各ファイルの先頭付近でインポートする部分とヘルパー関数を定義しているファイルです。

“`Python:setup_log.py
import os
import sys
import logging

def setup_log(filename, level=’INFO’, output_file=False, output_strm=True):

元記事を表示

Jupyter Notebookが動かない?

#はじめに
Jupyter Notebookが動かなかった。
色々試した結果、動くようになったのでそれについての備忘録。

#環境
anaconda
python 3.6.13

#Jupyter Notebookが動かなくなった流れ
1、python 3.6.13の仮想環境を作る。
![JN1_LI.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2423332/e7af93ad-6193-a3be-1059-0b7d12d6e4cf.jpeg)
2、ANACONDA NAVIGATORのHome画面からJupyter Notebookをインストールする。
![JN2.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2423332/25944121-cde1-6396-d840-183fc37add4c.png)
3、Jupyter Notebookからセルを実行すると以下の画面から動かない。
![JN3.PNG](htt

元記事を表示

Windows10でfastTextを使うためにやったことメモ

# はじめに
windows10でfastTextを使用するため環境を整えようとしたところ、いろいろエラーが出て、いくつかの記事をはしごしました。まとまった記事があっても良いな~と思ったので下記、一連の流れをざっくりとした記録として残します。
主に参考にしたURLに関しては★を付けています。

# 手順0. 環境
– Windows10 64bit
– Python 3.9.7
– pip 22.0.2

# 手順1. Microsoft C++ Build Toolsを手に入れる
入れ方は下記を参照。
★参照URL1:https://self-development.info/%E3%80%8Cmicrosoft-visual-c-14-0-or-greater-is-required-%E3%80%8D%E3%81%8C%E5%87%BA%E3%81%9F%E5%A0%B4%E5%90%88%E3%81%AE%E5%AF%BE%E5%87%A6%E6%96%B9%E6%B3%95/

簡単に書くと、
①ダウンロードページにて、exeファイルをダウンロード
②ダウンロードしたexeフ

元記事を表示

python matplotlibでX軸が文字列、Y軸が数字のcsvファイルを読み、棒グラフを書く

このようなファイルを棒グラフ化したいとする。。

US,125
NL,90
FR,89

X軸が文字列
Y軸が数字である。

このように書く。。

import numpy as np
import matplotlib.pyplot as plt
import pandas as pd
import sys
args = sys.argv

data = pd.read_csv(args[1], header = None)

df = pd.DataFrame(data)

X = df.iloc[:, 0]
X = X.astype(str)

Y = list(df.iloc[:, 1])

print(X)
print(Y)
plt.bar(X, Y, color='b', label="Total Population")

ticks =3
plt.xticks(np.arange(0, len(X), ticks), X[::ticks], rotation=60)
#plt.xticks(rotation=90)
plt.sho

元記事を表示

OTHERカテゴリの最新記事