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

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

AtCoder Beginner Contest 099 過去問復習

#所要時間
スクリーンショット 2020-04-11 10.34.05.png

#感想
普通のDPを書くのに異常に時間がかかった(C問題)上に問題文を誤読しました(D問題)。
落ち着いてやる以外に対処法が思いつきません…。
今日は比較的コンテスト→復習の流れがスムーズだったので、毎日コンテスト解いて復習できるように頑張ります。

#[A問題](https://atcoder.jp/contests/abc099/tasks/abc099_a)

ABDかACDを出力すればいいだけなのにそのあとの数字も出力しなければならないと思っていたので時間がかかってしまいました。

“`python:answerA.py
n=int(input())
x=n-999 if n>999 else n
if n>999:

元記事を表示

スパコン ITO のフロントエンドで Jupyter を使う方法

[スパコンITO](https://www.cc.kyushu-u.ac.jp/scp/index.html) では [フロントエンド](https://www.cc.kyushu-u.ac.jp/scp/system/ITO/frontend/) を利用することで,ログインノードではできないような,比較的長時間で大規模な仕事をインタラクティブに実行できます.あらかじめ利用する資源をフロントエンド予約システム([日本語環境](https://ito-portal.cc.kyushu-u.ac.jp/cgi-bin/reserve.ja/index.cgi?),[英語環境](https://ito-portal.cc.kyushu-u.ac.jp/cgi-bin/reserve.en/index.cgi))で予約します.割り当てられた `Floating IP` を用い,SSHエージェントフォワーディング と X11フォワーディング を利用して,ログインノード経由でフロントエンドノードにログインします.
予約に際しては,ハードウェアと利用形態や契約条件に応じてオプションを選択します.予約

元記事を表示

二値分類可能な判別器を自作のロジスティック回帰により作成することで、理解を深めようとした

#はじめに

 今回はロジスティク回帰について、scikit learnなどのフレームワークを用いずに実装することで理解を深めた内容をまとめます。

 概要は下記です。

+ 回帰分析とロジスティク回帰
+ ロジスティック回帰を実装して理解に努める

##回帰分析とロジスティク回帰

 ロジスティック回帰を説明する前に、回帰分析についてまとめます。
 回帰とは、目的変数$y$について説明変数$x$を使った式で表すことをいいます。そしてこの$y$は連続の値を取ります。$x$が一次元なら単回帰、二次元以上なら重回帰と呼びます。
 例としては、

+ 土地面積(説明変数)の広さから土地価格(目的変数)を予測
+ 広告宣伝費(説明変数)から店の来店者数(目的変数)を予測
+ 身長(説明変数)のから体重(目的変数)を予測

等が挙げられます。土地価格や来店者数などは連続した値であることが分かります。
 一方、ロジスティック回帰とは、説明変数からあるクラスに属する確率(例えば、メールがスパムかどうか)を推算する方法のことを呼びます。
 線形回帰と同じように、説明変数を元に線形計算を実施します。

元記事を表示

UnicodeDecodeError: ‘utf-8’ codec can’t decode byte 0x91 in position 1: invalid start byte

エラー
UnicodeDecodeError: ‘utf-8’ codec can’t decode byte 0x91 in position 1: invalid start byte

解決方法
df = pd.read_csv(‘data.csv’, encoding=’shift_jis’)

参考記事
https://insilico-notebook.com/python-unicodedecodeerror/

元記事を表示

興味のある記事が投稿されたら声で教えてほしい

RSSフィードなどで興味のあるブログの更新は検知できますが、タイトルを見て「まあ読まなくてもいいか」となることがたまにありますよね?
一々タイトルを読むのも面倒なので、興味のありそうな記事が投稿されたら、Voiceroidの東北イタコさんに読んでもらうことにしました。

# 興味のありそうな記事の抽出
## Flairを利用した記事の分類
[Flair](https://github.com/flairNLP/flair)は最先端の自然言語処理を簡単に実行できるライブラリです。
今回は、[TextClassifier](https://github.com/flairNLP/flair/blob/master/resources/docs/TUTORIAL_7_TRAINING_A_MODEL.md#training-a-text-classification-model)を利用して、記事のタイトルの興味あり/なしを判定する分類器を作ります。

## 記事のラベリング
今回は、LifeHackerの最新記事の[RSSフィード](https://www.lifehacker.jp/fee

元記事を表示

Djangoで複数のモデルオブジェクトをランダムに取得する方法

# 開発環境
– Python 3.7.3
– Django 3.0.5

※Class-Basedで開発していきます。

# 一番簡単な書き方

“`python:views.py
from django.views.generic import ListView

from .models import SampleModel

class SampleListView(ListView):
model = SampleModel

def get_queryset(self):
return SampleModel.objects.order_by(‘?’)[:5]

“`

– “`.order_by(‘?’)“` オブジェクトの並び順をランダムにする
– “`[:5]“` 配列の先頭から5番目まで([0]~[4])スライス

# ちょっと長い書き方

“`python:views.py
from django.views.generic import ListView

from .models import SampleMod

元記事を表示

Kerasのfit実行時におけるCallbackとGeneratorの実行タイミングについて

Keras の学習時に使用する fit ですが、独自に処理を追加したい場合、
fit_generator を使う場合と引数の Callback を追加する方法があります。
(それぞれ役割が違いますけど…)

それぞれの役割はともかく実行タイミングはぱっと見同じタイミングに見えるものがあるので、
実際に実行して違いを見てみました。

# Callbackの定義

“` python:MyCallback
class MyCallback(keras.callbacks.Callback):
def on_batch_begin(self, batch, logs=None):
print(“[Callback]on_batch_begin {}”.format(batch))

def on_batch_end(self, batch, logs=None):
print(“[Callback]on_batch_end {}”.format(batch))

def on_epoch_begin(self, epoch, lo

元記事を表示

Pythonの仮想環境とパッケージ on Ubuntu

# はじめに

– 詳しく知りたい人は、[公式のチュートリアル](https://docs.python.org/ja/3/tutorial/venv.html)へどうぞ。
– [Pythonの仮想環境とパッケージ on Windows](https://qiita.com/sireline/items/597e70099b9273587e64)

# venvで仮想環境の構築

“`sh:Python環境インストール
$ sudo apt update && upgrade
$ sudo apt install python3-pip
$ sudo python3 -m pip install pip -U
$ sudo apt install python3-venv
$ sudo apt install python3-tk
“`

“`sh:仮想環境構築
$ python3 -m venv myapp
“`

“`sh:仮想環境の有効化
$ cd myapp
$ source bin/activate
(myapp) $ pip install pip –upgr

元記事を表示

ウイルス感染の簡易シミュレーション

## はじめに

March 14, 2020 のワシントンポスト紙の記事に、以下のような記事が掲載されました。

* ***Why outbreaks like coronavirus spread exponentially, and how to “flatten the curve”***
https://www.washingtonpost.com/graphics/2020/world/corona-simulator/

日本語版は、下記にあります。

* ***コロナウイルスなどのアウトブレイクは、なぜ急速に拡大し、どのように「曲線を平らにする」ことができるのか***
https://www.washingtonpost.com/graphics/2020/health/corona-simulation-japanese/

ボール同士の接触という簡単な原理を使って、
ウイルスの感染者数がどのように増えて、そして減少していくのかを紹介した記事で、
とても理解しやすかったかと思います。

ちなみに、Python(JupyterLab)で再現されている方も

元記事を表示

AWS RDSでデータを管理する

# はじめに

– AWS上でリレーショナルデータベースを扱うには、以下の方法があります。

– AWS EC2を構築して、DBを乗せる
– AWS RDSを使う

# AWS RDS無料枠

– 無料枠は以下の内容

> – 750 時間/月の db.t2.micro データベース使用 (適用可能な DB エンジン)
> – 20 GB の汎用 (SSD) データベースストレージ
> – 20 GB のデータベースバックアップおよび DB スナップショット用ストレージ

# 簡単作成 – MySQL –

– [MySQL DB インスタンスを作成してデータベースに接続する](https://docs.aws.amazon.com/ja_jp/AmazonRDS/latest/UserGuide/CHAP_GettingStarted.CreatingConnecting.MySQL.html)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/89366/faee68d5-57

元記事を表示

Heroku+pythonでLINEbotしようとしたらrequirements.txtでエラーが出た(解決)

# やろうとしたこと
Heroku + PythonでLINEbotの開発をしようとしたところ、Herokuへのデプロイでエラーが発生しました。

# ファイル構成
├ main.py
├ scrape.py
├ Procfile
├ runtime.txt
└ requirements.txt #エラー部分
# エラー部分
`$ git push heroku master`

“`
Enumerating objects: 27, done.
Counting objects: 100% (27/27), done.
Delta compression using up to 8 threads
Compressing objects: 100% (22/22), done.
Writing objects: 100% (27/27), 3.94 KiB | 1.31 MiB/s, done.
Total 27 (delta 8), reused 0 (delta 0), pack-reused 0
remote: Compressing source files… done

元記事を表示

Pythonで毎日AtCoder #32

### はじめに
[前回](https://qiita.com/taxfree_python/items/ce5470607b74efe79bc7)

### #32
[問題](https://atcoder.jp/contests/panasonic2020/tasks/panasonic2020_c)

**考えたこと**
本番で爆死した問題です。普通に計算すると精度がでなくてWAなのでdecimalを使って精度を上げるか、式変形して解くかの二択です。decimal使っても楽しくないので、式変形で解きます。といっても簡単な変形ですが。

スクリーンショット 2020-04-11 0.25.11.png

上を実装すると、

“`python
a, b, c = map(int,input().split())

元記事を表示

クライアントのブラウザからスパコン ITO の Jupyter に接続

ポート転送を利用して,クライアントのブラウザ(Windows 10 Pro の Chrome で検証しています)から,[スパコンITO](https://www.cc.kyushu-u.ac.jp/scp/index.html) のログインノードで起動した,Jupyter Notebook(JupyterLab も可能)に接続する方法を紹介します.これによりスパコン上での計算結果をそのまま解析図化できるようになり,大変便利です.クライアントでは [MobaXterm](https://mobaxterm.mobatek.net/) を利用します.
この方法はスパコンでの利用に限らず,ポート転送を利用して,クライアントのブラウザからサーバー上で起動した Jupyter に接続する方法として,一般性のあるものです.[こちらの資料](https://www.cc.kyushu-u.ac.jp/scp/support/faq/faq008.html)を参考にさせて頂きました.

# 事前の準備:SSHエージェントの有効化
[MoberXterm](https://mobaxterm.mobat

元記事を表示

Scrapyで簡単webスクレイピング

webスクレイピングを可能にするframeworkであるScrapyの実行方法を分かりやすく記載いたしました。
参考になれば幸いです。

参考:
Python – Scrapyを使ってクローラーを作る
https://qiita.com/naka-j/items/4b2136b7b5a4e2432da8

所要時間15分
内容
1.Scrapyのインストールとプロジェクト作成
2.Spiderについて
3.実際にwebページ情報を取得してみよう!

#1.Scrapyのインストールとプロジェクト作成

ターミナル上で下記のpipを実行しscrapyをインストール

“`python
pip install scrapy
“`
その後、scrapyプロジェクトを作成したいディレクトリに移動し下記を実行しましょう

“`python
scrapy startproject sake
“`

このあと日本酒関係のwebサイトをスクレイピング致しますのでプロジェクトの名前を”sake”に致しました
そうすると現在のディレクトリ以下に下記のフォルダが構成されます。

![Screen S

元記事を表示

yukicoder contest 243 参戦記

# yukicoder contest 243 参戦記

## [A 1020 Reverse](https://yukicoder.me/problems/no/1020)

手で実際にやってみると K番目からN番目までが順に並んだ後に1番目からK-1番目が順に並んだり、逆に並んだりすることがわかります. 1番目からK-1番目の並びが順になるか逆順になるかは当然操作回数が奇数か偶数かに依存します. よって以下のようなコードで解けました.

“`python
N, K = map(int, input().split())
S = input()

if (N – K) % 2 == 0:
print(S[K-1:] + S[:K-1][::-1])
else:
print(S[K-1:] + S[:K-1])
“`

## [B 1021 Children in Classrooms](https://yukicoder.me/problems/no/1021)

ポインタを移動しながら配列を書き換えて、ポインタの情報をもとに結果を出力することも考えましたが、や

元記事を表示

Sympyモジュールを使ってグラフを作成する

# Sympyでグラフを作成する
Sympyを使って代数計算をしているときに、この数式のグラフはどんな形をしているのか、サッとみてみたいということがあります。Pythonでグラフといえば、まず思いつくのはmatplotlibだと思いますが、$y=f(x)$としたときの$x$はnumpyのarangeを使って値を代入する必要があるので何とも面倒です。こんなとき使えるのは、SympyのPlotting モジュールです。これは、式をそのままグラフにしてくれる上に、かなり込み入ったこともやってくれます。

# 必要なモジュールをインポート
まず、必要なモジュールをインポートします。Sympyでは、”from sympy import ~”を使うことが多いようです。変数を定義するvarのほか、今回はPlotting モジュールのすごさを実感できる”plot_implicit function”を使ってみます。また、実はSympyのグラフは、裏ではmatplotlibが動いているので、これもimportします。

“`python3:必要なモジュールなどをimport
from sympy im

元記事を表示

whileループで使用するタイマー

# やりたいこと

低温調理器の作成用に、タイマーを作成しました。
流儀的には、threadingを使用するのが良いのかなと思いましたが、自分の知識の範囲でさくっと作ってみました。

whileループでの使用を想定しておりまして、設定時間内であればTrueを返し続け、設定時間を超えるとFalseを返すという仕様です。
タイマーは、インターバルと、処理時間を事前に設定し稼働させます。

インターバルの時間を短くすると、処理時間の精度が向上します。

処理時間に求められる精度は、用途によってまちまちなので可変にしました。

低温調理の場合は、処理時間が数時間となることが多いのでさほど短いインターバルで回さなくても大丈夫でしょう。

“`python:python
import sys
import time

print(‘何時間後にとめますか?’)
hour = float(input())
set_time = hour * 60*60
print(str(set_time) + ‘秒後にとめますね’)

print(‘カウント間隔’)
interval = float(input(

元記事を表示

EV3とPCで相互通信して2*2*2ルービックキューブを高速で解く!(MQTT)

LEGOで2*2*2ルーブックキューブをカラーセンサーで色を読み取って自動で揃えてくれる機械を作成してる途中のこと。

# はじめに
EV3上で2*2*2ルービックキューブをIDA*アルゴリズムで解くプログラム動かしてみました。が、EV3のCPU性能の低さ(と自分のアルゴリズム理解度の低さ)のせいで9手で解けるルービックキューブを解くのに10分近くかかったので、MQTTを用いて、

1. EV3がルービックキューブの色を読み、パソコンにルービックキューブの状態を送信する
2. パソコンがルービックキューブの解法を求め、EV3に送信する
3. EV3が解法に基づいてルービックキューブを揃える

という形にしようと思います。
この記事では、「EV3がルービックキューブの状態をパソコンへ送信し、パソコンで解いて、EV3へ解法を送信する」ということまでやります。

# MQTTとは?
MQTTとは、IBMが開発したTCP/IPをベースにした軽量な通信プロトコルです。軽量なので、IoT機器によく利用されているようです。
Publisher(送信者)、Broker(仲介者)、Subscriber(

元記事を表示

【Python/PyRoomAcoustics】ILRMAでブラインド音源分離

ブラインド音源分離の手法の一つであるILRMA(独立低ランク行列分析に基づくブラインド音源分離)がPythonモジュールのPyRoomAcousticsで使えたので試してみました。

収録する際のマイクロホンや音源の種類や位置,部屋の形状等の情報(混合系)が未知の状況でも音源を分離することができる統計的信号処理アルゴリズムを**ブラインド音源分離(blind audio source separation: BASS)** や、**ブラインド信号源分離(blind source separation: BSS)** といいます。

# ILRMAとは
ILRMAについての詳細はこちらから。

– 論文 http://d-kitamura.net/pdf/paper/Kitamura2017EA10.pdf
– 北村さんの音源分離デモ http://d-kitamura.net/demo-ILRMA.html
– 北村さんのオリジナルソースコード(MATLAB) https://github.com/d-kitamura/ILRMA

複数のマイクロホンを使うことでブラインド音源分離がで

元記事を表示

PythonでcURL

標準ライブラリのurllibか、サードパーティライブラリのRequestsを使う方法があるが、urllibの方でやってみる。

# GET

“`python:get.py
import urllib.request
import json

url = ‘https://petstore.swagger.io/v2/store/inventory’

try:
with urllib.request.urlopen(url) as response:
body = json.loads(response.read())
headers = response.getheaders()
status = response.getcode()

print(headers)
print(status)
print(body)

except urllib.error.URLError as e:
print(e.reason)
“`

“`
>python get.py

元記事を表示

OTHERカテゴリの最新記事