Python3関連のことを調べてみた

Python3関連のことを調べてみた

LIMEによる機械学習モデルの局所説明

# はじめに
こんにちは、@sasshi_iです。

本日はXAIの手法の1つであるLIME(Local Interpretable Model-agnostic Explanations)について説明したいと思います。

LIMEは**局所説明**の手法です。

LIMEはある入力に対して機械学習モデルの出力に寄与した特徴量を算出します。
局所説明って何?という方はこちらの記事をご覧ください。

https://qiita.com/sasshi_i/items/400b7672d8b80bfc3a28

それでは、LIMEがどのように機械学習モデルを説明するのかを説明していきます。

# LIMEとは?
LIMEは、**複雑な機械学習モデルを説明するための解釈可能な機械学習モデルを作ります**。

LIMEがどのように機械学習モデルを説明しているかみていきましょう。

## どのようにして解釈可能な機械学習モデルを得るのか
LIMEは、複雑な識別境界や内部ロジックを持つ機械学習モデルであっても、説明対象の近傍に限れば、単純な(解釈可能な)機械学習モデルで近似できると仮定しています。

元記事を表示

PythonでExcelグラフを出力したのに最後のデータが反映されない問題を解決しました

## PythonのExcelグラフはめちゃめちゃ癖が強かったというお話
私は毎年読書の記録をスプレッドシートでつけています。

年末には集計して読了数、購入媒体、ジャンルなどをグラフ出力しているのですが、Pythonでグラフのひな形を書いておいて出力したら楽かな?と思い立ち、PythonのExcelグラフ出力を試みてみました。

とりあえずラフにデータを書き込んで出力させてみたのですが、どういうわけか3つ項目があるうちの2項目までしかグラフに反映されず詰まってしまいました。

#### テスト用にラフに作ったExcelの元データ(2024read.xlsx)
![xl01.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2984316/528c0b35-1e51-b07f-64df-d8b59e3ac6d6.jpeg)

#### パイチャートを出力させるために書いたコード
※openpyxlライブラリをインストールする必要があります

“`python
import openpyxl
from op

元記事を表示

ABC346、D問題の解説

## 0. はじめに
前処理による解法です。やってることは[公式解説](https://atcoder.jp/contests/abc346/editorial/9639)と同じですが、公式解説より理解が容易だと思います。

## 1. 問題とACコード
https://atcoder.jp/contests/abc346/tasks/abc346_d

https://atcoder.jp/contests/abc346/submissions/51620912

## 2. 解法概要
1. 与えられた文字列Sを、0と1が交互に出現する文字列と1と0が交互に出現する文字列、文字列「0101…」と「1010…」に変更することを考え、そのための累積コストを計算します。
1. 「0101…」と「1010…」の文字列を各位置でつなぎかえると、問題文で求められている**良い文字列**ができます。(例、5文字の文字列の4文字目以降をつなぎかえる)
* 01001
* 10110
1. 文字列「0101…」と「1010…」を作成するための累積コストを前処理と

元記事を表示

連想配列(query)、ソートと検索(通常・query)

https://paiza.jp/works/mondai/query_primer/query_primer__map_normal

何も見ずに解いたもの。
もっともクラスを使えばもっとスマートにかけるのかもしれないですが。
一応辞書という意味ではこんな感じになるのかなと。

“`py

N,K = map(int,input().split())
A = dict(input().split() for _ in range(N))
for _ in range(K):
command = input().split()
if command[0] == ‘call’:
print(A[command[1]])
elif command[0] == ‘leave’:
del A[command[1]]
elif command[0] == ‘join’:
A[command[1]] = command[2]
“`

https://paiza.jp/works/mondai/query_prime

元記事を表示

pythonのfor文(match文)python3.10~

phpなどでは、子の変数にはこの数字しかない!答えが一つしかないときはif文よりswich文。

swich文がpythonでは実装されていなかったが、python3.10よりmatch文として実装。

“`py
face = [‘目’,’口’,’鼻’,’喉’,’耳’,’手’]
for f in face:
match f:
case’目’:
print(‘eyes’)
case’口’:
print(‘mouth’)
case’鼻’:
print(‘nose’)
case’喉’:
print(‘throat’)
case’耳’:
print(‘ear’)
case n:
print(n + ‘は存在しない’)
#出力結果
eyes
mouth
nose
throat
ear
手は存

元記事を表示

[Python3]csvファイルからjsonファイルを作成する方法

## 要 旨
python3においてcsvファイルからjsonファイルを作成する方法について記述します。
## 実施要領
data.csvファイルからdata.jsonファイルを作成するpython3コードの一例は、以下の通り。
“`python3:csv2json.py
#! /usr/bin/env python3
# coding: utf-8
import pandas as pd

#入力するのcsvファイルの読み込み
inputFileName = “data.csv”
df = pd.read_csv(inputFileName, encoding=”utf-8″)

#JSONのレコード形式にて出力・保存
outputFileName = “data.json”
df.to_json(outputFileName, orient=”records”)
“`
## 結 言
今回は、python3においてcsvファイルからjsonファイルを作成する方法について記述しました。

元記事を表示

【Python】issubsetの使い方と注意点。サンプルコードで解説

# 概要
Pythonの`issubset`(イズサブセット)を使ってみたので、紹介。

`issubset`とは、あるセットが他のセットの部分集合(すべての要素が他のセットに含まれている)であるかどうかをチェックするためのメソッド。

実際にコードを見てみるとわかりやすいです。

# サンプルコード解説

“`py
# セットの定義
set1 = {1, 2, 3}
set2 = {1, 2, 3, 4, 5}

# set1がset2の部分集合であるかチェック
is_subset = set1.issubset(set2)

print(is_subset) # Trueを出力
“`

上記の場合、`set1`が`set2`の部分集合であるかをチェックしています。
`set1`の全ての要素が`set2`に含まれているため、`True`ですね。

### リストに対して使用する場合は`set()`を使う

“`py
# リストの定義
fruits_in_fridge = [‘apple’, ‘banana’, ‘lemon’, ‘mango’, ‘grape’]
fruits

元記事を表示

Redis・Pythonで検証用データを作る(セット型で大量の要素を登録する)

## はじめに

Redisの検証を行う際に、検証用のデータを作成する必要が生じまして、その方法を考えました。

文字型やリスト型などで、キーと値だけ定義できればよいならredis-benchmarkが使えるのですが、redis-benchmarkでは以下のようなことはできないようでした。

* セット型で1つのキーに複数の要素を持たせる
* キーに有効期限を設定する

他にも、ソート済みセット型やHyperLogLog型などを登録してみたいと思いましたが、いずれもredis-benchmarkではできないようでした。そもそも、redis-benchmarkはRedisのベンチマークツールです。

今回はSet型で1つのキーに複数の要素を持たせるようにしたかったので、Pythonのクライアントライブラリredis-pyを使ってみました。

1つのSet型に1000万・2000万という要素を持たせると、キーの削除には数秒かかり、その間はブロックが発生します。このブロックをわざと発生させるための方法を考えていて、Set型に1000万単位で要素を登録することを思いついて、その処理にクライアン

元記事を表示

pythonのコメントアウト

## コメントアウト
“`py
#一行だけ

“””
複数行
複数行
複数行
“””
“`

元記事を表示

クエリシリーズ > 連想配列

https://paiza.jp/works/mondai/query_primer/query_primer__map_easy

辞書をつかった問題だと直感してたのだけど、自分自身ちょっと忘れてたので前に書いた記事にコメントくれてたのを思い出したので下記で復習(ありがとうございます)

https://qiita.com/Atsulabo/items/081ef794c729bb6709e6

辞書を作るにはdict。これ勉強。
これを思い出す前に{}の内包表記でなんとかしようとしてました。。。
というわけで、

“`py
N,K = map(int,input().split())
A = dict(input().split() for _ in range(N))
#次の連想配列のために出力
#{‘1’: ‘Sin’, ‘2’: ‘Sakura’, ‘3’: ‘Kayo’, ‘4’: ‘Yui’}
for _ in range(K):
print(A[input()])
“`

こうですね。
しかしですね、今回は辞書、ではなく連想配列。なので、
ちょっと違うんで

元記事を表示

「ipinfoのAPIアクセストークン」を取得する方法

### 環境
>iMac macOS Ventura13.2
python 3.10.4

### 概要
>ipinfo.ioは、IPアドレスに関する情報を提供するウェブサイトです。
このサイトでは、特定のIPアドレスの地理的な位置、ネットワークプロバイダー、使用されているデバイスなどの情報を取得することができます。

### ipinfo.ioのトークンを取得するまでの流れ
#### 1、無料アカウントにサインアップ :
https://ipinfo.io/signup

#### 2、必要項目に入力(私は、Continue with Googleで始めました)
IPinfo Loginで「次へ」をクリックしたから メールアドレス、パスワードを入力
Googleを使わない場合は、随時項目に入力します。
![スクリーンショット 2024-03-21 8.37.27.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/634708/47bf3b83-b4a2-a39e-6bcd-1e66197ce77d.pn

元記事を表示

【Python】ttkbootstrapでGUIアプリ制作&改修

# GUIアプリの概要
以前投稿したアプリを改修したのでそれを共有したいと思います。
以前投稿したアプリは以下の記事になります。

https://qiita.com/kensaka1228/items/3663fc18ed7c893feeee

ttkbootstarpのGoogle検索をしたら二番目にヒットします。
是非合わせてお読み下さい。

## 改良点
ソースコードをクラスで作成
QRコードの作成を自分で指定した場所に作成できるように改修
日記を書けるように改修

## アプリ概要
### QRコード
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2759758/2bf43cfc-8c0e-9e9a-38f2-5c5ae525fee4.png)

### 勤怠計算
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2759758/441b8800-fa5c-6b9f-dddf-197

元記事を表示

pygameでの文字列の位置合わせ

# はじめに
pythonのゲーム用ライブラリpygameでちょっとしたゲームを作成したのだが、文字列の位置合わせに若干時間を要してしまったのでまとめた。

# 環境
次の環境で確認した

+ pygame V2.5.2
+ Python V3.9.13
+ Windows Windows Pro (64bit) 22H2

:::note info
pygameモジュールのバージョンを確認するコマンド

“`
python3 -m pip show pygame
“`
:::

# フォントを指定して文字列を表示する

以下のプログラムを実行すると

“`py
import pygame

BLACK = (0,0,0) # 黒色
RED = (255,0,0) # 赤色
WHITE = (255, 255, 255) # 白色

WIDTH = 320 # 画面の横幅
HEIGHT = 240 # 画面の高さ

X = WIDTH/2

元記事を表示

クエリシリーズ

https://paiza.jp/works/mondai/query_primer/query_primer__single_insertion

“`py

N,K,Q = map(int,input().split())
A = [int(input()) for _ in range(N)]
A.insert(K,Q)

for a in A:
print(a)

“`

https://paiza.jp/works/mondai/query_primer/query_primer__single_search

“`py
N,K = map(int, input().split())
A = [int(input()) for _ in range(N)]
flag = ‘NO’
for a in A:
if a == K:
flag = ‘YES’
break

print(flag)

“`
よく考えたら、前にもリストの中にKがなかったらというのがありましたね。。。
忘れてました。それさえあれば下記の様に短くできます

元記事を表示

【Django】クエリセットの和集合を使ってみたのでサンプルコード付で解説

# 概要
Djangoにおけるクエリセットの和集合「` | `」を使ってみました。
サンプルコードで解説します。

## 前提
以下のように、国に関するDBテーブルを作成。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2710373/6647194f-e8f8-ec9b-66e5-d8906a65ba8e.png)

# サンプルコード

以下のようにして使います。
ここでは、アジアとヨーロッパの国を取得するクエリセットを作成し、その後に和集合を利用して結合しています。

“`py
# from django.db import models
from response.models import Country

asia_countries = Country.objects.filter(continent=’Asia’)
europe_countries = Country.objects.filter(continent=’Europe’)

countries = a

元記事を表示

pythonのリスト型の使い方(要素の連結、要素の取り出し:extend,スライス機能)

## リストの連結
“`py
>>> f_list = [‘モモ’, ‘みかん’, ‘バナナ’, ‘イチジク’, ‘ブドウ’]
>>> list_int = [-1, 1, 2, 4]
>>> f_list + list_int
[‘モモ’, ‘みかん’, ‘バナナ’, ‘イチジク’, ‘ブドウ’, -1, 1, 2, 4]
“`
## リストの連結。メソッド「extend」
“`py
>>> list_int.extend(f_list)
>>> print(list_int)
[-1, 1, 2, 4, ‘モモ’, ‘みかん’, ‘バナナ’, ‘イチジク’, ‘ブドウ’]
“`
## 要素を取り出す。スライス機能
“`py
>>> list_f = [0,1,1,2,3,3,2,5,23,4,35]
>>> list_f[0:3]
[0, 1, 1]
>>> list_f[2:6]
[1, 2, 3, 3]
>>> list_f[:4]
[0, 1, 1, 2]
“`

元記事を表示

StableDiffusion APIから画像生成してみる。

# はじめに

[naritomo](https://twitter.com/KanagawaLo81146)と申します。

本職はインフラエンジニアを行っています。

最近生成AI(StableDiffusion)にハマり、外部PCからAPIをキックし画像入手するプログラムを作ってみました。

## 概要

StableDiffusion APIから画像を入手するためのプログラムを動かす。

必要なソースは以下にまとめてあります。

https://github.com/naritomo08/CreateAI_API.git

## 参考URL

[Stable Diffusion (AUTOMATIC1111) をAPIで操作する ~WEB UI不要で任意のサービスと連携~](https://note.com/rcat999/n/n1beb8d75d334#549b1d65-7771-4478-9578-af0377abb956)

## 事前作業

以下のサイトを参考にローカルPCまたはGoogleColabへStableDiffusionを導入する。

[【Stable Dif

元記事を表示

PythonでJSON 書き込み

## 早めの結論
– json に変換するには `json.dumps` 関数を使用する
– json ファイルに書き込むには `json.dump` 関数を使用する
– 変換できない型には `defalut` を指定すると良い
– 変換前後の型対応については[こちら](#型の対応)

## json に変換する

“`Python
import json

# json に書き込むデータ
target_dict = {
“int”: 42,
“float”: 0.5,
“bool_true”: True,
“bool_false”: False,
“none”: None,
“str”: “spam”,
“list”: [“eggs”, “ham”],
“tapple”: (“this”, “is”, “tapple”, 42),
“dict”: {“key1”: 1, “key2”: 2}
}

# json にする
target_dumped_str = json.dumps(target_dict)

元記事を表示

request.getでSSLのエラーが出たときの対処方法

### 私の環境
>iMac macOS Ventura13.2
python 3.10.4
selenium 4.18.1
requests 2.31.0

### 概要
Pythonで自作の新刊情報をTRC新刊図書オープンデータにアクセスしてdataを取得するprogramを、いつも通り実行したところ、突然、 r = requests.get(url)で以下のエラーが発生しました。
![スクリーンショット 2024-03-17 9.06.00.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/634708/b71011d1-9afd-c470-11ed-febdc2f36ff7.png)
ChatGPTに質問したところ![スクリーンショット 2024-03-17 9.07.06.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/634708/9c0ce1c4-895f-8fe

元記事を表示

Python C拡張でFortranのClassを操る

# FortranでもSOLID原則を意識してみる
オブジェクト指向をするならSOLID原則が大事なんですね。今頃になって知ることができたので、今後は`type,abstract` を効果的に使うことができそうです。なお、この記事では、計算速度のことは考えないことにします。

以下のコードは [https://github.com/sakamoti/fortran_oop_from_python](https://github.com/sakamoti/fortran_oop_from_python) から抜粋したので、動かしたい人はcloneしてみてください。

## 抽象既定クラスの定義
インスタンスが作れない、型の情報だけをまず定義します。インスタンスを生成する際には、これを継承してメソッドを上書きする必要があります。
“`fortran
type,abstract,public :: IShape
!! Interface representing a generic shape.
character(len=:),private,al

元記事を表示

OTHERカテゴリの最新記事