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

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

特徴量エンジンKaskada利用イメージ: 機械学習モデルのトレーニング

# はじめに

先日、以下の記事を発表しました。

https://qiita.com/yoshiyuki_kono/items/7dc7bdad5e02ff986f5d

新しいテクノロジーに触れる時はいつでも楽しいものです。

まだまだ勉強中ですが、公式ドキュメントの学習過程の記録として、以下の記事をまとめてみました。

本稿情報のソースとして、下記ドキュメントを参照ください。

https://github.com/kaskada-ai/kaskada/blob/main/examples/ML_example.ipynb

## このサンプルについて

この例では、ゲームプレイヤーの行動に関するイベントを扱います。
ユーザーがアップグレードの料金を支払うかどうかを予測する機械学習モデルを構築するためのトレーニングデータをKaskadaを使って準備します。

## Kaskada 環境のセットアップ
“`
!pip install kaskada
“`
“`python
from kaskada.api.session import LocalBuilder
session

元記事を表示

【Python】メソッド一覧

# 【Python】メソッド一覧

学んだメソッドをまとめてみた。

|メソッド | 内容 |
|———-|————————–|
|split(sep) |文字列をsepで分割したリストを返す |
|join(list) |引数のリストを連結した文字列を返す |
|replace(old, new)|文字列の中のoldで表される文字列をnewで置き換えた文字列を返す|
|strip() |文字列の先頭を末尾の空白文字を削除した文字列を返す|
|append() |1つのリストの要素追加 |
|extend([ , ]) |複数のリストの要素追加。リスト[ ]で指定 |
|remove() |指定した内容の要素の削除 |

元記事を表示

python dataframe get values by index

“`python
index = df.index
value = df.loc[index_name]
“`

元記事を表示

【Python】穴掘り法とA*アルゴリズムによる迷路自動生成プログラムの作成

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3527824/99dfe28f-55da-5fb2-df06-bf6ab7f403a2.png)
# はじめに
今回はPythonのTkinterを使ってプレイすることのできる迷路自動生成プログラムを作ってみました。
プログラムの説明というよりかは穴掘り法とA*アルゴリズムの説明になっています。
簡単で分かりやすく説明したつもりなのでよかったら見ていってください。
また、classをまだあまり使いこなせていないのでこのプログラムはclassなしの物になっています。

# 1. 穴掘り法とは?

穴掘り法というのは迷路を作成するためのアルゴリズムの1つで、その名の通り「壁に穴を掘っていく」ことで迷路を作成するアルゴリズムです。
穴を掘り、その穴からさらにランダムに決めた方向に穴を掘るを繰り返すことで迷路を作成します。これによりほかの迷路を作成するアルゴリズムよりも比較的簡単で複雑な迷路を作成することができます。

## 実際の流れ

① 奇

元記事を表示

python find local package instead of global

“`python
import sys
import os
sys.path.insert(0, os.path.abspath(os.path.join(os.path.dirname(__file__), “..”)))
“`

元記事を表示

wifiルーターを用いたクローズドネットワークでのソケット通信

## 目的
 本記事では`デバイス間`(PCとラズパイ)でのソケット通信を、`wifiルーター`を用いた`クローズドネットワーク内`で実装してみたいと思います。

 ゆくゆくはクローズドネットワーク内で複数のドローンと通信を確立して、制御を行いたいと思っています。

## 使用したハード・ソフト
– MacStudio (2022) ←メイン
– MacBookPro(2016) ←サブ
– RaspberryPi 4B
– VisualStudioCode
– WiFiルーター(BUFFALO WSR-2533DHP)

## アジェンダ
– WiFiルーターのクローズドネットワーク設定
– ソケット通信の実装

## WiFiルーターのクローズドネットワーク設定
 今回はソケット通信を用いますが、ソケット通信というのはネットワークにおいて、ソケットという「`出入り口`」を作ることで、通信を行うものです。(超簡単な説明)
 
 これを世界中と繋がる`オープン`なネットワークで行うこともできますが、セキュリティの面や自分のやりたいことは手元のデバイスを接続できれば良いため、インター

元記事を表示

python upgrade package

“`
python -m pip install numpy –upgrade
“`

元記事を表示

Nishikaのコンペの参加準備のために、LightGBMで予測モデルを作成する

# なんのコンペ?
皆さんはNishikaというデータ分析コンペについてご存じでしょうか?
かくいう私も、Udemyの講座を受け始めて興味を持ち、その講座内でNishikaのトレーニングコンペのデータをLightGBMを用いて分析したことをきっかけに参加してみようと決意しました。
Nishikaについて興味ある方は下記のURLから覗いてみてください。

https://www.nishika.com/

さて、コンペの内容はと言いますと、画像のような中古マンションの価格予測です。
現在、2023年夏の部の中古マンションの価格予測のコンペも開催されているのでちょうどいいですね。
こちらの予測モデルを練習がてら作成し、開催されているコンペに参加してみようと思います!

![konpe.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3524375/3c5e3179-69a0-337e-d035-3b793c9bcd3b.png)

# データ分析で大事なこと
わたしがデータ分析を行う上で注意していること。

元記事を表示

【Python】3つの数字の合計

# 作る関数
与えられた整数の配列から、3つの数の組み合わせを見つけて返す関数。
→ その3つの数の合計が目標の合計値(targetSum)と一致する組み合わせを出力する。

# 実装
“`python:three_sum.py
def threeNumberSum(array, targetSum):
# まず、入力された配列を昇順にソートする。
array.sort()
# 返すべき結果を保存する空のリストを作成する。
res = []

# 配列の各要素を順番に見ていく。
for i in range(len(array)):
# 与えられた数値と他の2つの数値の和がtargetSumになるかをチェックする。
twoSum(array, i, res, targetSum)
# すべての組み合わせをチェックした後、結果のリストを返す。
return res

def twoSum(array, i, res, targetSum):
# 左のポインタはiの次の位置からスター

元記事を表示

Django 関数ベースビュー演習(自分用メモ)

## Django自分用メモになります
今回は関数ベースビューについてまとめます

## 開発環境
OS:mac
エディタ:vscode
python:3.10.9
django:4.1.0

##その他新しく学ぶこと
・Modelのシグナル機能、Modelマネージャー
・Messegesライブラリでの画面上でのメッセージの表示
・AJAXを用いたUIの作成
・キャッシュを用いたメモリ上へのデータの保存

### ユーザ登録をした際にis_activeをTrueにする
“`python:models.py
class UserActivateTokens(models.Model):
token = models.UUIDField(db_index=True) #tokenを起点に検索するのでdb_indexをTrueにしておく
expired_at =models.DateTimeField()
user = models.ForeignKey(
‘Users’,on_delete=models.CASCADE
)

元記事を表示

【Python】関数について

# 【Python】関数について

## 関数とは
`何かしらの値を渡すと処理を行い、何かしらの値を渡す`ものです。
関数から見ると、値を貰って返す。ってことかな~

②そして、渡す値`引数`と呼ばれているものを関数に渡してます。
関数を実行して戻ってくるものを`戻り値`と言われてます。

③関数の仕様によっては、引数も戻り値も省略できるみたいです。
(言葉で言われてもよく分からない。)

④ちなみに関数は英語で「function(ファンクション)」と言うみたいです。
よく例で def func()て見るけどこの略称なんだと最近知りました。。。

—-

# 関数の定義

関数は「def文」を使用します。
ちなみに「def」は「define(ディファイン)」の略称で、さらに日本語で定義

【google colaboratory】入門:強化学習の基礎と簡単なモデルの作成

## 強化学習とは?

強化学習は、人間のように経験を通じて学習することができるai(人工知能)の一種です。強化学習では、エージェントと呼ばれる主体が環境と相互作用しながら、報酬の最大化を目指す学習手法です。

具体的には、エージェントが環境に対して行動を選択し、その結果として報酬を得ます。エージェントは報酬を最大化するように行動を学習していきます。また、エージェントが行動を選択する際には、状態(環境の現在の状況)に基づいて最適な行動を選択するための方策を持っています。

強化学習は、自律的に行動を選択するエージェントが必要な問題に適しています。例えば、ロボットの制御やゲームのaiなど、状況に応じて柔軟に行動する必要がある場合に強化学習を活用することがあります。

## google colaboratoryの概要

google colaboratoryは、データサイエンティストや機械学習エンジニアが無料で利用できる、googleが提供するクラウドベースのノートブック環境です。colabとも呼ばれています。

colabは、pythonをベースとしたjupyterノートブックのような

print内でifを使う

配列の中に、指定の要素があるかどうか出力をしたかったが、ごちゃごちゃしたくなくて試してみた。

## 0-0.書いてみる
“`python
i = [[0,0],[0,1]]

x = [0,0]
y = [1,1]

print(“xあるよ” if x in i else “xないよ”)
print(“yあるよ” if y in i else “yないよ”)
“`

## 0-1.実行結果
“`
xあるよ
yないよ
“`

## まとめ
すぐに忘れちゃうから、忘れない脳みそが欲しい。

## 1-0.検索時間
リスト、タプル、辞書型で検索時間に差が・・・
“`python
import time

list_ = [x for x in range(100000)]
ans = 99999
time_s = time.time()
print(“xあるよ” if ans in list_ else “xないよ”)
time_e = time.time()
print(time_e – time_s)

tuple_ = tuple([x for x in range(10

Flask-SQLAlchemyについて色々

## SQLAlchemyとは
Pythonでよく使われるORMの一つ

https://www.sqlalchemy.org/

## Flask-SQLAlchemyとは
SQLAlchemyのエンジンとかsessionmaker/factoryとかテーブルの生成記述を省略したりできる。

https://flask-sqlalchemy.palletsprojects.com/en/3.0.x/

version2.xではcreate_engine()とかSQLAlchemyにある機能も搭載されていたが、
version3.xのドキュメントから消えているのでなくなったっぽい?

前のAPIが見たい方はコチラ

https://flask-sqlalchemy.palletsprojects.com/en/2.x/api/

## 実際のコードの違い
### SQLAlchemyのモデル定義方法
~~~
from sqlalchemy import String, create_engine
from sqlalchemy.orm import DeclarativeBase, M

Djangoのテンプレートでリストをforを使用して1件ずつ表示するとき、N件ごとにタグを入れて分割表示したい

# 結論
`forloop.counter0`・`forloop.counter`・`divisibleby`を組み合わせて実現しました。

# やりたいこと
djangoのviewクラスがリストをテンプレートに渡します。
テンプレートでforを使用して1件ずつ表示するときに、N件ごとにタグを入れて分割表示したいです。
例えば、下記のように6件のリストに対して、3件ずつに分割してテーブルとして表示するというイメージです。
“`views.py
# …

class IndexView(TemplateView):
# …
def get_context_data(self, **kwargs):
# 表示したいリスト
kwargs[“members”] = [
{ “name”: “taro”, “age”: 25 },
{ “name”: “jiro”, “age”: 26 },
{ “name”: “hanako”, “age”: 29 },

AWS CDKでDocument DBを作成してみた

CDKを使ってDocument DBを構築してみたので、備忘的に記録を残しておきます。今回は、EC2を踏み台として使ってDocument DBに接続する構成を目標としています。また、EC2への接続はSession Managerを使って行う形としています。

全コードはGithubを参照してください。
[Githubはここ](https://github.com/ShinyaT1994/cdk-documentdb.git)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/660703/45f8d20e-9a89-5a4a-096c-702b60e06c0d.png)

## 前提条件
– AWS CDK v.2 がインストールされていること
– Python 3.x がインストールされていること
– AWSアカウントがあり、AWS CLIが設定されていること

※Cloud9を使うとこの辺りがPassできるため、Cloud9を使って今回の記事の内容は作成しています。

## 構築手順

【amazon connect】pythonを活用したリアルタイムデータ分析ソリューションの構築

## amazon connectについて初心者エンジニアに向けて、pythonを活用したリアルタイムデータ分析ソリューションの構築

こんにちは。今回は、amazon connectについて初心者エンジニアに向けて、pythonを活用したリアルタイムデータ分析ソリューションの構築についてご紹介します。amazon connectは、クラウドベースのコンタクトセンターサービスであり、顧客対応などのコミュニケーションを一元化するためのツールです。この記事では、amazon connectのデータをリアルタイムに取得し、pythonを使ってデータの可視化やフィルタリング、クエリの実行、カスタムレポートの作成、モニタリングとアラートの設定について解説していきます。

## インストールとセットアップ

まずは、amazon connectのpython sdkをインストールしましょう。以下のコマンドを実行してください。

“`bash
pip install boto3
“`

そして、awsのクレデンシャル情報を設定します。awsのコンソールにログインし、iamを開き、新しいユーザーを

Pyenvでpythonをインストールできたが、is not installedエラーが出た場合の対処

# Pyenvでpythonをインストール失敗した件
## 実行したコマンド
“`
$ pyenv install 3.9.12
$ pyenv versions
$ pyenv local 3.9.12
“`

ここで、pyenvでpython 3.9.12がインストールされて、切り替えたことを確認できましたが

“`
$ pip install black flake8
“`
すると、以下のエラーが出ました。
“`
pyenv: version `3.9.12′ is not installed (set by /Users/xxxx/.python-version)
“`

### 対処
pyenvを再インストールします。

1. **pyenvのアンインストール:** まず、現在のpyenvをアンインストールします。ターミナルで以下のコマンドを実行します。
“`
$ rm -rf ~/.pyenv
“`

2. **pyenvの再インストール:** pyenvを再インストールします。GitHubからpyenvのリポジトリをクローンしてインストールします。以下のコ

Flaskを使って簡単なtodolist appを作る

app.py

“`python
from flask import Flask, render_template, request, redirect
from flask_sqlalchemy import SQLAlchemy

app = Flask(__name__)
app.config[‘SQLALCHEMY_DATABASE_URI’] = ‘sqlite:///todo.db’
db = SQLAlchemy(app)

class Todo(db.Model):
id = db.Column(db.Integer, primary_key=True)
task = db.Column(db.String(255))
done = db.Column(db.Boolean, default=False)

@app.route(‘/’, methods=[‘GET’, ‘POST’])
def index():
if request.method == ‘POST’:
task = request.form[‘task

matplotlib: collectionsを使って描画時間を短縮(2023.08.08)

## はじめに
2023年7月30日に、以下の記事を上げた。

[matplotlib ポリゴン塗りつぶし高速化(2023.07.30投稿)](https://qiita.com/damyarou/items/be77ad4e49b3e7d07026)

その後、思い直して、PatchCollectionとLineCollectionの使用例として、再整理してみた。

##### PatchCollectionの参考ページ

[https://matplotlib.org/stable/gallery/shapes_and_collections/patch_collection.html#sphx-glr-gallery-shapes-and-collections-patch-collection-py](https://matplotlib.org/stable/gallery/shapes_and_collections/patch_collection.html#sphx-glr-gallery-shapes-and-collections-patch-collection