Python関連のことを調べてみた2021年08月21日

Python関連のことを調べてみた2021年08月21日

SQLAlchemyで動的にテーブルクラスを作る方法

SQLAlchemyでテーブルクラスを作るときに、既存のテーブル情報を使って動的に作り出したいニーズがあって、ややハマったので方法をメモしておきます。

# 普通の作り方

公式ドキュメントなどでは、既存の`user`テーブルにマッピングする`User`クラスはこのような作り方が紹介されています。`declaratibe_base`という機能を使うことで、`__tablename__`で指定したテーブルと自動的にマッピングが作られるというわけです。

“`python
from sqlalchemy import Column, Integer, String, ForeignKey
from sqlalchemy.orm import declarative_base

# declarative base class
Base = declarative_base()

# an example mapping using the base
class User(Base):
__tablename__ = ‘user’

id = Column(Integer,

元記事を表示

GCP ; API GCPのText to Speech API を利用しナレーションを作成する

# GCPのText to Speech API を利用しナレーションを作成する

“`

import google.cloud.texttospeech as tts

def text_to_wav(voice_name: str, text: str):
language_code = “-“.join(voice_name.split(“-“)[:2])
text_input = tts.SynthesisInput(text=text)
voice_params = tts.VoiceSelectionParams(
language_code=language_code, name=voice_name
)
audio_config = tts.AudioConfig(audio_encoding=tts.AudioEncoding.LINEAR16)

client = tts.TextToSpeechClient()
response = client.synthesize_speech(

元記事を表示

PC超絶初心者が3か月プログラミング学んでみた

#[はじめに]
初めまして。PC超絶初心者のtencyouです。
どれくらい初心者かというと、今だにブラインドタッチできません:persevere:
それ位、初心者です!

今回はそんな私が、一大決心して3か月プログラミングを学んだ結果を書いていこうと思います。少しでも、PC初心者、プログラミング初心者の方の希望になればと思います。(PC初心者でも、これくらい出来るようになります)

##今回の環境
os windows
python 3
Jupyter Notebook

##今回やった事

* 過去2か月の実データのデータ成形
* 重回帰分析を使った売数の予測

##今記事の主な内容
今回、一番時間を割いた事は実際のデータ(私が働いている店の売上データを使いました)を分析に使えるDataFrameに直すところです。

機械学習を学ぶうえで、よくデータセットを使います。データセットは、データ量は多いですが目的変数と説明変数が分けやすいような形になっています。
しかし、実際のExelなどのデータはどうでしょうか?使用者が感覚的に使いやすいように表を作っているので目的値やその他のデータの

元記事を表示

yukicoder contest 310 参戦記

# yukicoder contest 310 参戦記

## [A 1650 Moving Coins](https://yukicoder.me/problems/no/1650)

少なくともどれかのコインは目標の場所に移動できるはずなので、移動できるやつを一つ一つ順に動かしていけば答えになる. 移動できるやつを毎回全ての中から探すと *O*(*N*2) になってしまい TLE になるが、*A**i* を移動して新しく移動可能になりうるものは *A**i*-1 と Ai+1 しかないので、最大でも *O*(3N) となる.

“`python
from collections import deque

N = int(input())
A = list(map(int, input().split()))
B = list(map(int, input().split()))

def is_movable(n):
if A[n] == B[n]:
r

元記事を表示

Teaching Python to the Dogelog Runtime

We had that feeling that the full potential of the Dogelog runtime was not yet demonstrated. Although there was a lot of progress concerning the Dogelog runtime over the last weeks we
![teach_doge.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/416192/e0829a46-6aef-1490-257b-4aebff02a80c.jpeg)
were only working for the JavaScript platform. So we started a new side quest porting the Dogelog runtime to the Python language. This would demonstrate that cross compiling needs less wo

元記事を表示

TOYPRO TTC002 (非公式)解説/参加記

[TOYPRO TTC002](https://app.toy-pro.net/user/contests/TTC002)に参加したので解説と参加記をまた書くことにします。

**今回はWriterの人が公式解説を用意してくれているので想定解はその解説をご覧ください。**

# 1 – 円錐

:::note warn
半径$r$, 高さ$h$の円錐があります。円周率を3.14としたとき
体積は?(小数点以下切り捨て)
:::

下の式を実装すればよいです。

“`math
V = \frac{πhr^2}{3}
“`
円錐の体積は「底面積×高さ×$\frac{1}{3}$」
また、底面積は$r*r*π$であるので、上の式が導けます。

“`python:ACコード
r = 3
h = 2

print(int(((r*r*3.14)*h)/3))
“`

# 2 – 回転寿司

:::note warn
青、赤、金、それ以外の皿があってそれぞれ100円、200円、300円、不明である。
入力されたお皿の値段は?
:::

入力されたお皿の色をif文を使って判定してあげると良い

元記事を表示

AI分野で必須の知識:誤差逆伝播法(バックプロパゲーション)の基礎について学習

今回の記事では、誤差逆伝播法(バックプロパゲーション)について、Udemyの講座にて学習した内容を要約する。なお、本記事に掲載しているコードは、すべて下記URLに掲載しているUdemy講座から抜粋している
– 事前にUdemy講座の講師から許可を頂いています。

Udemy講座URL
[みんなのAI講座 ゼロからPythonで学ぶ人工知能と機械学習 【2021年最新版】](https://www.udemy.com/course/learning-ai/)

#目次

[1.誤差逆伝播法(バックプロパゲーション)の概要](#1-誤差逆伝播法(バックプロパゲーション)の概要)
[2.出力層の学習](#2-出力層の学習)
[3.中間層の学習](#3-中間層の学習)
[4.学習部分の実装コード](#4-学習部分の実装コード)

#1-誤差逆伝播法(バックプロパゲーション)の概要

– 順伝播:入力→出力 分類で使用
– 逆伝播:出力→入力 学習で使用
– 誤差逆伝播法(バックプロパゲーション)
– 出力と正解の誤差を小さくするように重みとバイアスを更新
– 誤

元記事を表示

機械学習におけるデータの前処理の基礎について学習

今回の記事では、機械学習分野に必須のデータの前処理について、Udemyの講座にて学習した内容を要約する。具体的には、以下の内容について纏める。

– 欠損値の扱い
– データのエンコーディング
– フィーチャースケーリング
– 訓練用データセットとテスト用データセットへのデータの分割

なお、本記事に掲載しているコードは、すべて下記URLに掲載しているUdemy講座から抜粋している
– 事前にUdemy講座の講師から許可を頂いています。

Udemy講座URL
[【世界で74万人が受講】基礎から理解し、Pythonで実装!機械学習26のアルゴリズムを理論と実践を通じてマスターしよう](https://www.udemy.com/course/ml-with-python/)

#目次

[1.ライブラリのインポート](#1-ライブラリのインポート)
[2.データセットのインポート](#2-データセットのインポート)
[3.欠損値の処理](#3-欠損値の処理)
[4.カテゴリ変数の処理](#4-カテゴリ変数の処理)
[5.訓練用データセットとテストデータセットへの分割](#

元記事を表示

モンティ・ホール問題を一般化して解いてみる

####モンティ・ホール問題
モンティ・ホール問題とは確率論に関する有名な問題で、ご存じの方も多いでしょうが、設定を簡単に説明すると次のようになります。
1) 3つの選択肢があり、その中に当たりが1つ存在する。
2) まず、挑戦者が3つの中から1つを選ぶ。
3) 次に、当たりの選択肢を知っている司会者が、残りの2つの中からハズレのものを1つ選んで挑戦者に知らせる。
4) このとき、挑戦者は最初に選んだ選択を維持するべきか、それとも残るもう1つの選択肢に変更すべきか?
この状況において、選択肢を変更した方が有利であるというのがモンティ・ホール問題の答えなのですが、この問題設定をより一般化してみようというのが、この記事の目的です。
####モンティ・ホール問題を一般化する
一般化と言っても、そのやり方はいろいろと考えられますが、今回は次のような設定にしてみたいと思います。
1) 選択肢の数は$\,N(\ge3)$個、この中に当たりが1つ存在する。
2) 挑戦者はこの中から1つを無作為に選ぶ。
3) 当たりを知っている司会者は残りの$\,N – 1\,$個の中から、ハズレの選択肢$\,M(\

元記事を表示

IPv4アドレスの取得(5言語間の移植用)

リモート接続をするコンピュータ上でプログラムを動かすとき、何かしら固有のIDを自動的に振りたいときがあります。

それはPythonで使いたいときがあれば、C++で使いたいと思うときがあったり、Bashで使いたいと思うときもあったり…

しかし、自分でいちいち探してカスタマイズするのも面倒に感じ、ほとんど同じ挙動をするIPv4アドレス取得プログラムを作ろうと思いました。

この記事では、Raspberry Piでよく使われる言語であるC・C++・Python・Bash・Rustの5種類においてIPv4アドレスを取得する関数を作成しました。プログラム作成や移植に役立ててください。

## 動作環境
– OS : Ubuntu20
– Python : Python3.8
– C++/C : cmake version 3.16.3
– Rust : cargo 1.54.0

## 共通の挙動

プログラムは全て以下のリポジトリにUPしています。

https://github.com/Ar-Ray-code/ip4_detector

実際のGitHubのソースコードと異なって省略して

元記事を表示

Python pptxで簡単な自動スライド作成アプリを作成してみた。

# python-pptx
皆さんはパワーポイントを自動で作成したいと思ったことはありませんか?
というより、作成したいと思ったからこのページへと飛んできているんですよね。
そこで便利なのが、「python-pptx」。
こいつを使えば、オブジェクト指向でどんなスライドでも作成することができます。

今回はその中でも私が個人的に使いたい要素として、
1. タイトルスライド
2. 画像貼り付け
3. テーブル貼り付け

の三種類を実装しようと思います。
とはいえ、備忘録のための駆け足実装ですので、説明不足感が否めないですがご容赦ください。

では行きましょう。

# python-pptxの導入
導入はおなじみ、pipで簡単にinstallできます。

“`bash
$pip install python-pptx
“`

#0. 共通設定
タイトルスライドを入れる前に、必要な設定は先にしてしまいましょう。

“`python:sample.py
from pptx import Presentation
from pptx.util import Cm, Pt

元記事を表示

【Python演算処理】環論(Ring Theory)に立脚した全体像再構築③ベクトル空間(Vector Space)としての構成

どうやら**ベクトル**(Vector)というと矢印の演算しか頭に浮かべられない様では「**高校数学と大学数学の狭間**」を上手く乗り越えられない様なんです。

[空間ベクトル – Wikipedia](https://ja.wikipedia.org/wiki/%E7%A9%BA%E9%96%93%E3%83%99%E3%82%AF%E3%83%88%E3%83%AB)

>いわゆる矢印ベクトルは物理学の教育では力学の初歩から導入されるため、ベクトルも古典力学と同時(17世紀ごろ)に発生したと思われるかもしれないが、実はもっと後の19世紀になって現れたものである。今でこそベクトルや行列などを使って、物理学や幾何の問題を解くといったことは常識であるが、ベクトルが誕生する以前の数学や物理学では初等幾何学、解析幾何学や四元数などを利用していた。今日我々が知っているベクトルの概念は、およそ200年もの時間を掛けて徐々に形成されてきたものである。そこでは何十人もの人々が重要な役割を果たしてきた。

まずは現時点における「**安定版**」の定義に当たってみましょう。

[ベクトル空間 – 物理の

元記事を表示

AtCoder Beginners Selection Python

# 目的
本記事は、自身のAtCoderで実装能力を可視化するために備忘録として残していくためのものなのであしからず。初心者なので実装が拙いのはご容赦ください。

#模範解答

https://qiita.com/drken/items/fd4e5e3630d0f5859067

# [Product](https://atcoder.jp/contests/abs/tasks/abc086_a)

“`python
# -*- coding: utf-8 -*-
a,b = map(int,input().split())

if (a*b)%2 ==0:
print(“Even”)
elif (a*b)%2 == 1:
print(“Odd”)
“`

#[Placing Marbles](https://atcoder.jp/contests/abs/tasks/abc081_a)

“`python
s = input()
print(sum([i

元記事を表示

Python/pandas DataFrameにて、特定の文字列以降を抽出する方法

調べてみると、意外に適したものがなかったので、メモ。

pandasのdataFrameの特定カラム(URL)があったとして、ここから’?’以降を抽出する方法
‘https://dummy.com/index2.html?abc=1’

▼サンプルのデータ

“`python
import pandas

my_dict = {‘A’: [1, 2, 3, 4, 5], ‘url’: [‘https://dummy.com/index.html’, ‘https://dummy.com/index2.html?abc=1’, ‘https://dummy.com/index2.html?def=2’, ”, ‘https://dummy.com/index2.html?abc=1’]}
df = pd.DataFrame.from_dict(my_dict)
“`

最初思いついたのは、正規表現でのreplaceだった

“`python
df[‘parms’]=”
df[‘parms’]=df[‘url’].replace(‘(.*?)\?’,’?’,regex=Tr

元記事を表示

LeetCode “49. Group Anagrams”にPythonで挑んだ話

自分には、setを使いたがるという悪い手癖が付いているようです。
setを使うやり方を思いついた時には、代案も考えるようにします。

#方針1

キーを整数、値を空の集合とした辞書を作ります。
各キーごとに、そこが空の集合なら、手元にある文字列を文字に分解してその集合に入れます。また、そのインデックスの答えにも格納します。
そこがすでに要素のある集合なら、その集合と、手元にある文字列を文字に分解した集合との、和集合を作ります。
その和集合がもともとの要素と長さが変わらないなら、同じ文字列で構成されていると考え、そのインデックスの答えに格納します。

“`py

class Solution:
def groupAnagrams(self, strs: List[str]) -> List[List[str]]:

n = len(strs)

if n <= 1: return [strs] sets = {i : set() for i in range

元記事を表示

Pythonを使ったデシル分析とRFM分析

サンプルデータを使って、デシル分析とRFM分析をしてみました。

#私の環境について
・python3
・windows10
・Chrome
・Jupiter anaconda

#サンプルデータのダウンロード
下記から架空のECのデータをダウンロードします。(Kaggle)
Online Retail Data Set

#データタイプを指定、データの状態を確認
データ型を指定します。
また、`df.info()`を使ってデータの状態を確認します。

“`py
import pandas as pd
dtypes = {‘InvoiceNo’:’str’, ‘StockCode’: ‘str’, ‘Description’: ‘str’, ‘Quantity’: ‘int’, ‘InvoiceDate’: ‘datetime64’, ‘UnitPrice’: ‘float’, ‘CustomerID’: ‘str’, ‘Country’: ‘str’}
retail_data = pd.read_csv(‘./OnlineRetail.c

元記事を表示

Fn (OCI Functions) の Function を FDK を使わずに作成する

# はじめに

掲題に関するコードをGitHubに公開していますが、そもそも素直にFDKを使っておけばいいのに、何でこんな一見無駄に思えることをやってみたのかという動機から、実際にやってみて分かった Fn コンテナの通信の仕組みなどについて、諸々お話をしたいと思います。

https://github.com/tkote/fn-netty

https://github.com/tkote/fn-fastapi

# 動機

Fn には各種言語用の FDK (Function Development Kit) があって、これを使えばあまり難しいことを考える必要もなく、シンプルに入力を受け取って処理をして出力を返すことだけを実装すれば済みます。単純な処理であれば実際 FDK だけで十分でしょう。
しかしなから逆に、何で実装が FDK に縛られないといけないのかという疑問の方が強くなってきました。世の中には様々な言語の優れたフレームワークがあるので、それを流用できた方がいいことが多くあるのではないか? 例えば (Javaの例ですいません…) JAX-RS 準拠のフレームワークで F

元記事を表示

facebook Graph API を使ってworkplaceにメッセージを通知する

業務案件で、facebook Graph API を使ってworkplaceにメッセージを通知する事があったのでメモ。
※ちなみに送信できるメッセージは2000文字です。

“` python
import requests

def _send_message_workplace(message: str):
“””
workplaceにメッセージを送信
“””
# メッセージの上限を超えた部分は削除して送信する
if len(message) > 2000:
warn_msg = ‘message is omitted to first 2000 characters.’
print(warn_msg)
message = message[:2000]

# アクセストークンを事前に生成しておく必要がある
token = ‘xxxxxxxxx’

# 通知先のグループチャットのID
thread_key = ‘t_xxxxxxxxxxxxxxx’

元記事を表示

PyTorch Tutorialの例題がWarm-upから解りにくかったので書き足した【勾配降下法】

PyTorchに深層学習を勉強するための[Tutorial](https://pytorch.org/tutorials/index.html)に例題が豊富にあって大変有り難いのですが、初っ端から何をやっているのか全然わからなかったので、解説を付け加えました。
今回解らなかったのは[勾配降下法を説明したページ](https://pytorch.org/tutorials/beginner/pytorch_with_examples.html)です。

# そもそも勾配降下法とは
深層学習や機械学習では、人工的な関数(モデル)を作って、それをできるだけ自然界に近似させることをしているのですが、コンピュータは現時点の関数が目標に近づいているのか遠のいているのかを知らないといけません。それを知る方法というのが勾配降下法です。目標までの距離を図るのが目的関数あるいは損失関数と呼び、損失が最小になるように、モデルを最適化します。

例えば下図で、青い線を損失関数とすると、その最小値に到達するようにモデルを最適化しますが、現時点から左右のどっちに行けば最小値に近づくかは、その場所での傾き(勾配)か

元記事を表示

Discord.pyで1からスーパーグローバルチャット導入

#グローバルチャットとは

グローバルチャットとは、Discordのチャンネルを跨いで会話出来るチャットの事です。
特定のチャンネルのメッセージをBOTが受信し、他のチャンネルへメッセージを転送することで、別のサーバーにいる相手とも、あたかも同じチャンネルで会話しているような感覚でチャットを行えます。
![スクリーンショット 2021-08-20 16.02.34.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/224667/95c772f7-7091-70f9-0dbd-d8df7554c643.png)

#スーパーグローバルチャットとは

従来のグローバルチャットでは、BOTがメッセージを仲介して他のチャンネルへと送信する仕組みのため、同じ会話に参加したければ、同じBOTを導入する必要があります。
また、グローバルチャットを導入しているBOTが増えすぎたために、結局会話が分散してしまい、グローバルチャットをサーバーに導入しようと思っても、どのBOTを入れれば良いのか混乱してしまいます。
そこで、BO

元記事を表示

OTHERカテゴリの最新記事