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

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

自然言語処理Case Study:Word Frequency in ‘Anne with an E’

この記事は自然言語処理を使って、小説の言葉使いを分析する実験である。パイプラインを作って、言葉の頻度を簡単に分析する。
I recently encountered this amazing Netflix series Anne with an E and was amazed by the story. It’s hard to find high-quality movies that pass the Bechdel Test. The story is extremely empowering for girls. Inspired by Hugo Bowne-Anderson from Data Camp, I decided to apply my knowledge in web-scraping and basic Natural Language Processing knowledge to analyze the word frequency in the original book ANNE OF GREEN GABLES.

![anne-with-an-e

元記事を表示

PandasTools.LoadSDFで読み込んだときROMolに画像が表示されないのを一旦解決

– jupyter-notebookを使っている
– RDKitで複数化合物が含まれるSDFデータをPandasTools.LoadSDFで読み込んだときROMolに画像が表示されないのをなんとかした
– 自分の環境は下記
– MacOSX 10.15.2 Catalina
– 下記を参考にしてAnacondaでRDKit環境を構築した
– [インストールの仕方 — RDKit_unofficial_translation_JP 1.00 ドキュメント](https://magattaca.github.io/RDKit_unofficial_translation_JP/Installation_jp.html#linux-and-os-x)
– anaconda3-5.3.1のPython 3.7.5を利用
– rdkit version: 2019.09.2
– pandas version: 0.25.3

下記サイトを参考にRDKitを練習してた

[RDKitでケモインフォマティクスに入門 | 化学の新しい

元記事を表示

有限要素法 事始め(1次元要素剛性マトリクス)

#今回の記事について
 今回の記事は、コロナ社発行の[Javaによるはじめての有限要素法](https://www.coronasha.co.jp/np/isbn/9784339046069/)を参考とし、書籍ではJavaで書かれているプログラムをpythonで作ってみたものとなります。また、今回は要素剛性マトリクスを作製するプログラムまでです。

#有限要素法の概略
 有限要素法とは固体力学の応力やひずみをシミュレーションすることなどに用いられます。固体力学では、物体をたくさんの小さな領域(要素)に分割し、それぞれの要素毎の状態を計算することで、物質全体の変形の様子を求めることになります。物体の状態は3つの微分方程式(応力の平行方程式、ひずみ-変位関係式、応力-ひずみ関係式(構成式))で表現されますが、有限要素法ではそれらの微分方程式を等価な積分表現(仮想仕事の原理)に置き換えることで近似的に変位やひずみを求めます。積分表現により微分方程式は連立一次方程式である剛性方程式に置き換えられます。
 また、有限要素法の計算の流れは、物体を各要素に分け、それぞれの要素で剛性方程式(要素剛性マ

元記事を表示

言語処理100本ノック-22:カテゴリ名の抽出

[言語処理100本ノック 2015](http://www.cl.ecei.tohoku.ac.jp/nlp100/)[「第3章: 正規表現」](http://www.cl.ecei.tohoku.ac.jp/nlp100/#ch3)の[22本目「カテゴリ名の抽出」](http://www.cl.ecei.tohoku.ac.jp/nlp100/#sec22)記録です。
今回は**キャプチャ対象外・非貪欲マッチ**を使います。少しずつ覚える内容が出てくるのがこの100本ノックのいい点ですね。

# 参考リンク

|リンク|備考|
|:–|:–|
|[022.カテゴリ名の抽出.ipynb](https://github.com/YoheiFukuhara/nlp100/blob/master/03.%E6%AD%A3%E8%A6%8F%E8%A1%A8%E7%8F%BE/022.%E3%82%AB%E3%83%86%E3%82%B4%E3%83%AA%E5%90%8D%E3%81%AE%E6%8A%BD%E5%87%BA.ipynb)|回答プログラムのGitHubリンク|
|[素人の

元記事を表示

[Python 入門] pandasを使ってみよう

#[Python 入門] pandasを使ってみよう
前回の続きと改善していきたい点を紹介します。
さてこんな感じで図ができていました。
![2020-02-06 (2).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/574563/8b684549-9499-b451-ec4d-5611cf118c46.png)
(前回は”matplotlib”の設定がわからず軸名に日本語が使えていませんでした。今回は修正したため、図の軸名が日本語で表示できています。)

さてもう少しこのデータで遊んでみましょう。前回の続きのコードとなります。

“`
nikkei.corr()
“`

とすると相関関係の表が得ることができます。

“`
ax = sns.heatmap(nikkei.corr(), annot=True)
“`

さらにとすればヒートマップというものを作ることができます。こんな感じ…
![2020-02-06 (1).png](https://qiita-image-store.s3

元記事を表示

Hello world!から始めるPython

## はじめに
Pythonを始める初心者向けの記事です。
今回は”Hello world!”を出力するプログラムを書いてみましょう。

## 何故”Hello world!”から始めるのか
言語を学ぶにあたり、まずは文字列の出力という一番簡単な操作を実践してみることはとても大切です。

例えグーグルの超優秀なAIエンジニアであっても、最初の一歩は必ず”Hello world!”からだったはずです。

AIエンジニアを目指した駆け出しエンジニアのあなたも、さっそく”Hello world!”をpythonで記述してみましょう。

## 環境構築
Macではpython2.7がデフォルトでインストールされているので環境構築は不要です。
Windowsを使っている方はMacを買いましょう。

## Pythonの起動
terminalを開いて、次のワンコマンドでpythonが起動できます。

“`
python
“`
## Hello world!の出力
`import __hello__`コマンドを利用します。

“`
>>> import __hello__
Hello wo

元記事を表示

Vue.jsとDjango-Rest-Frameworkで神経衰弱アプリを作ってみる【その5】~ユーザ認証編~

[<< その4](https://qiita.com/Butterthon/items/535f961aed0b3c3c6d98) # カスタムユーザ作成 >新しくプロジェクトを始める場合は、デフォルトの User で十分である場合でも、カスタムユーザーモデルを作成することを強く推奨します。

公式にこうあるのでカスタムユーザを作成します。

### usersアプリケーション作成
“`
$ django-admin startapp users
“`

### 作成したアプリケーションをsettings.pyに追記
“`settings.py
.
..

INSTALLED_APPS = [
‘django.contrib.admin’,
‘django.contrib.auth’,
‘django.contrib.contenttypes’,
‘django.contrib.sessions’,
‘django.contrib.messages’,
‘django.contrib.staticfiles’,
‘r

元記事を表示

Android端末1つでDiscordBotを作成し動作させる

「DiscordBotを作ってみたい、だけどPCを持っていない」という人向けにAndroid端末1つでDiscordBotを作って実際に動作させるまでの方法を紹介します。
なるべく初心者向けに説明していますが、Pythonやdiscord.py, Linuxコマンド, Vimコマンドなどの詳しい説明は省略しています。

##動作環境
– Android 9
– Termux 0.90
– Python 3.8.1
– discord.py 1.3.1

#1. Termuxのインストール
TermuxはGoogle Playストアからインストールできます。
https://play.google.com/store/apps/details?id=com.termux

Termuxとはroot化不要でLinux環境を用意することができるエミュレータです。
ここではPythonとVimを使ってDiscordBotを書く方法を説明します。

#2. Termuxでの準備
まずターミナルで以下のコマンドを実行し、aptの更新とPython, Vimのインストールを行います。($はコマンドラ

元記事を表示

クラスの多重継承

“`py:1
class Person(object):
def talk(self):
print(‘talk’)
def run(self):
print(‘person run’)

class Car(object):
def run(self):
print(‘car run’)

class PersonCarRobot(Person, Car):
def fly(self):
print(‘fly’)

person_car_robot = PersonCarRobot()
person_car_robot.talk()
person_car_robot.run()
person_car_robot.fly()
“`

“`:1の実行結果
talk
person run
fly
“`
PersonCarRobotクラスは、
PersonクラスとCarクラスの両方を継承している。
なので、
両方のクラスのメソッドを持っている。

ここで、
PersonクラスもCarクラス

元記事を表示

【お手軽Python】pandasによるExcelファイル読み込み

#pandasとは
pandasとは、Pythonのライブラリです。
pandasは、主にデータを操作する時に使われます。AIや機械学習にpandasは必須です。
ですが、Excelのファイルを操作する機能も搭載されています。
今回は、pandasを使ったExcelファイルの読み込みの仕方について説明していきます。

#Excelファイル読み込み

###最初のシートのみの読み込み

sample.xlsxの中身が
![bandicam 2020-01-20 16-36-57-804.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/240459/c815e4d5-f406-100b-39f2-fa83c8fe0fba.jpeg)
だった場合

“`python:main.py
import pandas as pd
df = pd.read_excel(‘sample.xlsx’)
print(df)
“`

上記のmain.pyを実行すると
![bandicam 2020-01-20 16-44-4

元記事を表示

OpenCVを使って複数動画を一発で連結する!

強化学習結果などの沢山の動画を一発で連結したかったので作ってみた.
# シチュエーション
複数の動画が入ったディレクトリあり,その中の動画を連結した一つの動画を作成するプログラム.

# ソース

“`python
import cv2
import glob

def comb_movie(movie_files,out_path):

# 形式はmp4
fourcc = cv2.VideoWriter_fourcc(‘m’,’p’,’4′,’v’)

#動画情報の取得
movie = cv2.VideoCapture(movie_files[0])
fps = movie.get(cv2.CAP_PROP_FPS)
height = movie.get(cv2.CAP_PROP_FRAME_HEIGHT)
width = movie.get(cv2.CAP_PROP_FRAME_WIDTH)

# 出力先のファイルを開く
out = cv2.VideoWriter(out_path, in

元記事を表示

[Python3 入門 23日目]12章 パイソニスタになろう(12.1〜12.6)

#12.1 コードのテスト

##12.1.1 pylint、pyflakes、pep8によるチェック

“`py:style1

a=1
b=2
print(a)
print(b)
print(c)

“`

“`py:実行結果

$ pylint style1.py
************* Module style1
style1.py:1:1: C0326: Exactly one space required around assignment
a=1
^ (bad-whitespace)
style1.py:2:1: C0326: Exactly one space required around assignment
b=2
^ (bad-whitespace)
style1.py:1:0: C0114: Missing module docstring (missing-module-docstring)
style1.py:1:0: C0103: Constant name “a” doesn’t conform to UPPER_CASE naming

元記事を表示

【Python】無限混合ガウスモデルによるクラスタリング

クラスタリングの手法のひとつに、混合ガウスモデルの推定があります。これは、データセットを複数個のガウス分布で表現、及びクラスタ分けする手法です。通常、これらのガウス分布は有限個を仮定しますが、もし無限個あったとしたら、どんなクラスタリングになるのでしょうか。

本記事では、[機械学習プロフェッショナルシリーズ『ノンパラメトリックベイズ 点過程と統計的機械学習の数理』](https://www.kspub.co.jp/book/detail/1529151.html)を参考にして、「無限混合ガウスモデル」及び「ノンパラメトリック」の概要と実装を紹介します。この本、非常に分かりやすいのでおすすめです。

詳細な理論の話は省略し、概要とストーリーを重視したいと思います。
また、実装はソースコードを記載する程度に留めます。

※前回の記事
[【Python】周辺化ギブスサンプリングを実装してみた](https://qiita.com/isuya/items/5aa9ba73d2d1e3abef91)
ただし、本記事だけ読んでも流れが伝わるように意識しています。

##無限混合ガウスモデルの導

元記事を表示

ABC134-Dから学んだ計算量の求め方

## 問題
https://atcoder.jp/contests/abc134/tasks/abc134_d

難しかった。というか問題文を読むことが難しかった。

## 今回の学び
1. 任意の整数=全ての整数のようなニュアンス
2. 後ろから順に解いていくと一意に確定する
3. $O(\sum(N/i)) = O(NlogN)$

## 計算量の求め方

発生した疑問:$O(\sum(N/i))$って間に合うの?

今回の問題では任意のiにおいて$N/i$を求める必要がある。これを考えるとき、積分を行うと良い。$\int(1/N) = logN$であることから最悪でもlogNで押さえつけることができる。

## まとめ
1. 数学的な文章になれる
2. 配列を前もしくは後ろから判定するのはよくあるし気づかなければいけない
3. **積分を考えると面積から計算時間を求めることができる。**

## コード
“`python
N = int(input())
a = list(map(int, input().split()))
a.insert(0, 0)
b = [0] *

元記事を表示

嘘つき族と正直族の問題

[嘘つき族と正直族の問題](https://teratail.com/questions/239646)を`Python`で解いてみた。
答え合わせはしていない。`Python`楽。

“`Python
import itertools

# 嘘つきなら反対を答える
def ans( person, liars, b):
if person in liars:
b = not b
return b

def print_res(liars, cards):
print(‘—–‘)
for i in range(4):
print( ‘{}:{} {}’.format(‘ABCD'[i], ‘嘘’ if i in liars else ‘正’, cards[i]))

# 嘘つきな人 と カードの組み合わせ
liars_g = itertools.combinations(list(range(4)),2) # 嘘つきな人
cards_g = itertools.permutations(list(range(1,5

元記事を表示

PythonでmongoDBを操作する~その6:aggregate編~

#当記事の記載範囲
この記事ではPythonでmongodbに接続してから、aggregate(SQLで言うところの集計関数)の使い方について記載します。
mongodbの起動やpymongoのインストール方法については以下の記事をご覧いただければ幸いです。
https://qiita.com/bc_yuuuuuki/items/2b92598434f6cc320112

# 準備データ
準備データは以下の記事でmongoDBに突っ込んだQiitaの記事情報を使用します
[[Python]Qiitaの記事情報をmongoDBに突っ込んだ](https://qiita.com/bc_yuuuuuki/items/3b89a4b4ac26a43eb20a)

# aggregateの使い方
mongoDBのaggregateの使い方はSQLに慣れているとイマイチピンと来ないです。
下表がSQLとaggregateの対比表です。

|SQL |aggregate |
|—|—|
|WHERE |$match |
|GROUP BY |$group |
|HAVING |

元記事を表示

PySparkDataFrameからPandasDataFrameへの変換でメモリエラーになるときの対処法

# はじめに

SparkのDataFrameで作ったデータをPythonの各モジュールで使いたい時、`toPandas()`メソッドを利用してPandasのDataFrameに変換するが、その際にメモリエラーが起きる場合がしばしばある。
メモリに載せられるように試行錯誤した中で、有効そうなものをまとめた。

もっといい手段がありそうなので、ご存じの方は是非教えてください!

# やり方

## daskを利用して変換する

sparkによる変換は、`spark.driver.memory`や`spark.driver.maxResultSize`の影響を受けるが、daskの場合はそれがないため、エラーを回避しやすい。

“`python:daskを利用した変換
import dask.dataframe as dd

df.write.parquet(parquet_path)
dask_df = dd.read_parquet(parquet_path)
pandas_df = dask_df.compute()
“`

## データ型を変更する

バイト数を削減するように、変

元記事を表示

SIRモデルを使って新型肺炎の感染を予測してみた:武漢編

最近,新型肺炎が流行っていますね.
以前にSIRモデルという感染症の数理モデルを使った研究をしていたので,新型肺炎のモデルに当てはめてみました.数理モデルを使うと,感染症の未来を予測できます.

今回は,発生の中心である ***武漢*** に注目して,感染症のモデル化と感染症の未来を予測します.

## keyword
疫学, SIR model, nCoV-2019, 新型肺炎, 新型コロナウィルス

## SIRモデル
SIRモデルは,感染した人数の推移を微分方程式として表したモデルです([Wikipedia](https://ja.wikipedia.org/wiki/SIRモデル)でもわかりやすく解析されています). SIRモデルでは,感染症に対して人は3つの状態を取ると考えられます.

1. 感染する可能性がある人 : S
2. 感染している人:I
3. 感染から治って免疫を獲得した人,または死亡した人 : R

時刻tにおける感染する可能性のある人,感染している人と感染から治った人をそれぞれS(t), I(t)とR(t)表記すると,SIRモデルは,

$$
\dot{S}

元記事を表示

MaxPooling2DをConv2Dのみで表現する

#はじめに:
CNNモデルにおいてよくPooling処理は畳み込み処理(Conv2D)と区別して解説が行われます。
しかし、勘の良い人なら(2,2)サイズの**AveragePooling2D()**は畳み込みフィルタ((0.25,0.25),(0.25,0.25))をstrides=2で畳み込み処理させたものに等しいことに既に気付いているでしょう。
一方で**MaxPooling2D**をConv2Dの畳み込み処理だけで表現することが可能かと問いかければ一見不可能に思えます。しかし、よくよく考えてみると実はConv2DのみでMaxpooling2Dを表現可能でしたので、それについて書いてみます。

#max関数とreluの関係:
$max(a,b)$を$relu(x)$を使って表現することを考えます。

“`math
max(a,b) = relu(a-b) + b
“`
上記の時、$a>b$で$max(a,b)=a$で、$a\leqq b$で$max(a,b)=b$であることが分かります。
つまり、$max$関数は$relu$関数を利用して表現可能ということです。

さて、**

元記事を表示

書籍「15Stepで踏破 自然言語処理アプリケーション開発入門」をやってみる – 3章Step10メモ

# 内容
[15stepで踏破 自然言語処理アプリケーション入門](https://www.amazon.co.jp/dp/4865941320) を読み進めていくにあたっての自分用のメモです。
今回は3章Step10で、自分なりのポイントをメモります。

# 準備
– 個人用MacPC:MacOS Mojave バージョン10.14.6
– docker version:Client, Server共にバージョン19.03.2

# 章の概要
8章では単純パーセプトロンから発展して多層パーセプトロンを導入し、9章では多クラス識別器を実装してみた。
10章ではニューラルネットワークの改善を目指す。

– ニューラルネットワークの層を深くする難しさ
– 重みの最適化手法
– ニューラルネットワークのチューニング方法

# 10.1 Deep Neural Networks
もともとは3層以上のニューラルネットワークをdeepと呼んでいた。
層を増やすのは `model.add` で層を増やすだけで良い。

## ニューラルネットワークの層を深くする難しさ
|項目 |解決策 |
|—

元記事を表示

OTHERカテゴリの最新記事