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

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

Delta Lake 3.2 の新機能である型拡張(Type widening)に関する検証結果

## 概要

Delta Lalek 3.2 の新機能である型拡張(Type widening)に関する検証結果を共有します。本記事では、 OSS Delta Lake ではなく、 Databricks にフォーカスした記事となっております。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/24031/041165aa-2929-baa4-08fa-b591167b9a6c.png)

引用元:[型拡張 | Databricks on AWS](https://docs.databricks.com/ja/delta/type-widening.html)

## 型拡張(Type widening)について

### 型拡張(Type widening)とは

Delta Lake 3.2 にて実装された機能であり、ソースのデータ型に応じてターゲットのターゲットテーブルのデータ型をデータ書き込み時に変更する機能です。

![image.png](https://qiita-image

元記事を表示

Pythonで決定性チューリングマシンのシミュレーションを行う

## 動機
学校の課題で決定性チューリングマシンの設計があったので, それの答え合わせ用にチューリングマシンのシミュレーションを行うためのPythonコードを書きましたので共有します。
何回か動作は確認しましたが保証はできません。
## コード
“`dtm.py
from typing import List, Dict, Tuple
from enum import Enum

class Transition(Enum):
“””
Enum representing the direction of transition in a Turing Machine.

Attributes:
RIGHT (int): Represents a move to the right on the tape.
LEFT (int): Represents a move to the left on the tape.
“””
RIGHT = 1
LEFT = -1

class State:

元記事を表示

GitHubで個人アクセストークンを発行する方法

## はじめに
GitHubの個人アクセストークン(Personal Access Token、以下PAT)は、APIやCLIツールを使ってGitHubのリポジトリにアクセスする際に必要となる重要な認証手段です。この記事では、GitHubで個人アクセストークンを発行する手順と設定方法について説明します。

## 1. 個人アクセストークンとは

個人アクセストークンは、GitHubアカウントのユーザー名とパスワードの代わりに使用することができる認証トークンです。これにより、API呼び出しや、Gitコマンドの実行時にセキュアにアクセスすることができます。
例えば、VertexAIワークベンチのコード管理やlookerのモデル管理をしたい場合に使用します。

## 2. 個人アクセストークンの用途

個人アクセストークンは、以下のような用途に使用されます:
– GitHub APIの認証
– Gitコマンドでリポジトリにアクセスするため
– CI/CDパイプラインでの自動化ツールによる認証
– その他のツールやサービスがGitHubリポジトリにアクセスする際の認証

## 3. 個人アクセ

元記事を表示

numpy.datetime64と別形式の相互変換

## はじめに

numpyでの日付処理は速度を最優先にするためpandasやdatetimeと異なった形式で格納される。

公式サイトを見るとわかる通り、Unix時間を単位[s or msなど]に応じて整数で格納される。
msの場合はUnix時間の秒数を1000倍にして整数にして格納する。
もちろんタイムゾーンもつけない。
numpy.datetime64に変換する際はタイムゾーンを外して行う必要がある。今のところエラーにはならないが、非推奨。

## タイムゾーン付文字列(ISO 8601形式)からnumpy.datetime64に変換する

“`python
import datetime

import numpy as np

dateList = [‘2021-01-01T12:00:00Z’, ‘2021-01-02T12:00:00Z’, ‘2021-07-02T12:00:00+09:00’]
datetimeList

元記事を表示

GeminiのAPIがタダなので論文を自動で要約

GeminiのAPIがタダなので、論文をたくさんダウンロードしてスクリプトを回しておけば、事前に設定したプロンプトで論文の内容を説明してくれるやつをやりました。

https://github.com/shogo-d-nakamura/gemini_auto_summarize

自分はmain.pyのpath/to/pdfにwindowsのCドライブのDownloadsまでのパスを入れていて、ネットサーフィンしてダウンロードした論文たちをDownloads配下のフォルダにまとめて –batch [dir_name]を指定して、帰る前にmain.pyしています。

“path/to/pdf” -> “/mnt/c/Users/username/Downloads/”
論文をダウンロードするときにDownloadsがデフォルトになっているのでここにしています。

/mnt/c/Users/username/Downloads/article.pdfを説明させるときは
“`
python main.py -i article.pdf
“`

複数のpdfをbatchという名前のフォル

元記事を表示

python version 変更

# python version 変更
“`
pyenv install -l
“`
インストールできるversionの一覧を表示

“`
pyenv install 3.7.1
“`
インストールしたバージョン指定

“`
pyenv local 3.7
python –version
“`

元記事を表示

【Pyhon】venvを使って別のパソコンでも数年後でも動くスクリプトを作っておく

# venvを使っていないとき

俺:いろいろな事情で**Excelファイルを読み込んでCSVにしてさらにExcelの形式にしてさらにCSVにするツール**が必要になってしまった…。

俺:どうしてわざわざExcelファイルを経由するんだ…!? まあいっかー。

俺:Excelファイルを扱うとなると、`Pandas`がいいかなあ。`pip install`っと……。

通りすがりの先輩:Pythonを使うときは、venvを使うと便利だぞ!

俺:`venv`……?
venvを使うと、仮想環境を作ってそこで動かせるのかー。
いや、**Excelファイルを読み込んでCSVにしてさらにExcelの形式にしてさらにCSVにするツール**なんてもう二度と触る気はないし、別に使わなくてもいいか。

~数年後~

俺:まさかExcelファイルを読み込んでCSVにしてさらにExcelの形式にしてさらにCSVにする機会が再び来るとは……。
前作った便利ツールなかったっけ?
あっ、Pythonのバージョンが上がってるせいで動かせない。
このとき使ってたバージョンっていくつだっけ?
一瞬だけ動いてほしいだけ

元記事を表示

python exe化

# pythonプログラムをexe化する
exe化ツールはいくつかあるが、pyinstallerを利用
Nuitkaはexeファイルが大きくなる傾向
* pyinstaller
* Nuitka

`pyinstaller –clean –onefile –noconsole`

使ってみたけど `–noconsole` だとexeが落ちた時に気付けないので、最近は`–noconsole`は外して実行
pyinstallerもexeファイルはでかい。。。

Edgedriverexeを取り込みたい
–binary “edge.exe;edge.exe”
でうまくいかない

アイコンのオプションもあったな。
–icon=test.ico

アイコンファイルの作り方
https://service.tree-web.net/icon_converter/

元記事を表示

Pythonの標準ライブラリについて

#### 1. sys

`sys`モジュールは、Pythonインタプリタと対話するための機能を提供します。
例えば、コマンドライン引数の取得やプログラムの終了などに使います。

“`python
import sys

# コマンドライン引数の取得
args = sys.argv
print(f”コマンドライン引数: {args}”)
# コマンドライン引数: [‘script.py’]

# プログラムの終了
if len(args) < 2: print("引数が足りません") sys.exit(1) # 引数が足りません ``` #### 2. math `math`モジュールは、数学関数を提供します。 例えば、平方根や対数、三角関数などを使うことができます。 ```python import math # 平方根の計算 print(f"16の平方根: {math.sqrt(16)}") # 16の平方根: 4.0 # 対数の計算 print(f"1000の自然対数: {math.log(1000)}") # 1000の自然対数: 6.907

元記事を表示

DSPyの紹介: Signal Processing技術を採用したマシンラーニング向けPythonライブラリ→時系列データをサポート、RAG開発に有効

# DSPyの紹介: Signal Processing技術を採用したマシンラーニング向けPythonライブラリ→時系列データをサポート、RAG開発に有効

# Intro to DSPy: Simple Ideas To Improve Your RAG

参照ネタ:[https://pub.towardsai.net/intro-to-dspy-simple-ideas-to-improve-your-rag-eb76914c844d](https://pub.towardsai.net/intro-to-dspy-simple-ideas-to-improve-your-rag-eb76914c844d)

## DSPyとは?

DSPy (Differentiable Signal Processing in Python)は、信号処理技術と機械学習モデルを統合するために設計されたPythonライブラリです。ディファレンシャブルプログラミングの力を活用し、伝統的な信号処理手法と最新のディープラーニング技術のシームレスな統合を可能にします。この統合は、時系列データ、音声信号、そ

元記事を表示

BERTの日本語モデル(京都大学 黒橋・河原・村脇研究室)を用いて重要度を取得

今回作るものはタイトル通り日本語学習済みモデルのBERTを実装し、文章ないの単語の重要度を取得することである。
下記の環境で行った。homebrewやpipの環境はあるものとして進める。
# 環境
“`
mac OS
Homebrew 4.2.8
Python 3.9.6
pip 24.0
transformers 4.37.2
tokenizers 0.15.2
torch 2.2.0
“`
# 環境構築
初めに今回使用するモデルを使うための環境構築とモデルのデータを用意する。
## Juman++
Juman++のインストールを行う。
インストールは下記のページを参照した。
https://qiita.com/TakayoshiK/items/2fed43b2ed4e6433ab1b
“`
$ brew install jumanpp
$ brew tap uetchy/nlp
$ brew install knp
“`
## BERT日本語モデル

元記事を表示

BERTを用いて日本語文章の重要度を取得

**最後に今回使用したプログラムをまとめて記載しています。**

# Mac(Intel)環境の構築

BERT(文脈解析)だけでは日本語の理解をするには難しい場合があるため、Mecebを用いて形態素解析をし、その結果を文脈解析をすることで精度をあげることにする。

初めにmecabを実行するための環境を作るために下記を実行。
“`console
$ brew install mecab
$ brew install mecab-ipadic
$ pip install mecab-python
“`

BERTで用いる環境を構築するために下記を実行。
“` console
$ pip install transformers
$ pip install fugashi
$ pip install ipadic
“`

mecabで形態素解析のプログラムを作成する。
簡単なので一気に示す。
“`mecab_words.py
import MeCab

print(“テキストを入力してください。”)
text = input()
wakati = MeCab.Tagger(‘

元記事を表示

KaggleのTitanicでスコア0.77751を獲得

# KaggleのTitanicでスコア0.77751を獲得した際のプログラムの話
最後のまとめにプログラムの全貌を書いているのでプログラムの解説がいらない方は、まとめを見ればすぐできます。
また、今回RandomForestの木の本数の最適な値を探るプログラムと実際の予測データを書いているプログラムの2つプログラムを作成しています。

## 使用環境
– GoogleColaboratory
– Python

# 木の本数を探るプログラム
## 使用ライブラリ
RamdomForestを使用するのと、csvファイルからデータを読むのでここまでは、脳死で書く。
最適な木の本数を知りたいので、プロットするためにmatplotlibを使う。
“`Titanic_train.py
import pandas as pd
from sklearn.preprocessing import MinMaxScaler
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import Mi

元記事を表示

KaggleのHouse Pricesに挑戦(0.16781)

# KaggleのHousePriceに挑戦した話
前回、Titanicに挑戦し、今回はHousePriceに挑戦しただけです。
ネットで見た感じラッソ回帰が主流?のようですが、アンサンブル学習をしたことがないので挑戦します。
今回も前回同様、まとめにプログラムの全容が載っているので結果だけ知りたい方はそちらに。
[この記事](https://www.kaggle.com/code/walzer55/house-prices)をかなり参考にしました。初めのやっていることは同じ…

# 使用環境
– GoogleColaboratory
– Python

# 使用モデル
– Lasso
– ElasticNet
– Kernel Ridge Regression
– Gradient Boosting Regression
– XGBoost
– LightGBM
– Random Forest
– Support Vector
上記のモデルを使用してアンサンブル学習を行ってみます。

# 相関関係を探る
“`test.py
import pandas as pd
import

元記事を表示

KaggleのSteelPlateコンペティション

# マルチターゲット回帰の方法について
タイトルにあるようにKaggleのコンペティション(SteelPrice)で、複数のターゲットが存在する。学習を行うことになり、初めてであったので記録として残そうと思います。

“まとめ”にプログラムの全容を記載しています。解説いらんという方は、そちらを見てください。

## 環境
– Python
– GoogleColabratory
– Lasso回帰
– MultiOutputRegressor

## データの相関関係
今回ターゲットとなるデータが
“`
[‘Pastry’, ‘Z_Scratch’, ‘K_Scatch’, ‘Stains’, ‘Dirtiness’, ‘Bumps’, ‘Other_Faults’]
“`
となっている。またデータ数も多いのでターゲットカラムとそれ以外のカラムの相関関係を出力したい訳です。
後々学習の際に見直すことを考えてファイルで出力します。
“`test.py
import pandas as pd
import matplotlib.pyplot as plt

df = pd.read_

元記事を表示

SpaceShip Titanicに挑戦()0.77998

# KaggleのSpaceShip Titanicに挑戦した話
まとめにプログラムの全容あり。
モデルは

# 使用環境
– GoogleColabratory
– Python

# 相関関係の出力
– csvファイルでTransportedのターゲットカラムと他のカラムの相関係数を書き出します
– 数値データでないものはダミーデータを代入し、欠損値には平均値を代入します
– 相関係数の計算の前に正規化します
– 値の自由度の高い”Name”カラムなどは除外します
– 関係のありそうな”Cabin”カラムは先頭の英語文字のみ抽出します
– ‘PassengerId’については先頭4字と最後2字に分割し、それぞれターゲットとの関連度を生成します
– 行き先を書いている”Destination”カラムは何種類あるのか。(量が5以下ならダミーで置き換えるのありだな。)

ということで、初めに
“Destination”カラムに何種類の値が含まれているのかを出力する
“`test.py
import pandas as pd

df = pd.read_csv(‘train.csv’)

元記事を表示

KaggleのStoreSalesに挑戦(2.11256)

# KaggleのStoreSalesに挑戦
時系列予測が必要なため、時系列予測などに強いモデルを使用する。
ARIMAが季節性を取り入れることも可能であり比較的簡単に医用できるので採用。
しかし、より高度な時系列予測も必要そうなデータセットを使用していたので、VAR(VectorAutoRegression)を使用します。
したがって、ARIMAとVARのアンサンブル学習を行います。

# 環境
– GoogleColaboratory
– Python

# データ処理

### データを見てみる
“`python
import pandas as pd
import matplotlib.pyplot as plt

train_df = pd.read_csv(‘train.csv’)
oil_df = pd.read_csv(‘oil.csv’)
tran_df = pd.read_csv(‘transactions.csv’)

train_df.head(10)
“`
|id |date |store_nbr |family |sales |onpromotion|

元記事を表示

NLP with Disaster Tweetsに挑戦(0.82224)

# 使用環境
– GoogleColaboratory
– Python
– BERT

# データの確認
あとで出てきますが、トークナイズする際`max_length`をいうのを宣言しないといけません。
`max_length`とはトークンかする際の最大長です。これ以上長いトークンは切り捨てられ、短いものはパディングで埋められます。そのため、この値を最適にすることは重要です。(最適というのに解答はないです。)
“`python
from transformers import BertTokenizer, TFBertForSequenceClassification
import pandas as pd
import matplotlib.pyplot as plt
import numpy as np

data = pd.read_csv(‘train.csv’)

tokenizer = BertTokenizer.from_pretrained(‘bert-base-uncased’)

# 文章の長さを最適化するために単語数分布を出力
tokens = data[‘t

元記事を表示

3次元以上の配列の内積をMATLABで計算する方法(Pythonでのnp.dot関数)

# はじめに

MATLABでは配列を`*`演算子で掛け算させると「行列の内積」になってしまう、これはMATLAB入門でよく注意事項として挙げられることですね。
“`matlab
ar1 = [1 2 3
4 5 6];
ar2 = [1 2
3 4
5 6];
ar = ar1*ar2
“`
“`:結果
ar =

22 28
49 64
“`

そのため普通の要素ごとの掛け算が欲しい場合は`.*`を書けなければならないのは厄介なことです。

詳しくはこの基本の記事にも書いてあります。

https://qiita.com/phyblas/items/3a24b0e3745156a78d6b

でも逆にいうと、内積の計算をしたい時にただ`*`でけかけばよくて簡潔で書くことができて便利です。

Pythonではただの演算子ではこのような計算ができず、`np.dot`などの関数を使わなければならないのだから。
“`python
import numpy as np
ar1 = np.array([[1,2,3

元記事を表示

【Python】条件付き反復(while文)

Pythonのwhile文は、特定の条件が満たされるまでコードを繰り返し実行するために使われる制御構造です。条件がTrueである限り、while文の中のコードが繰り返されます。条件がFalseになるとループが終了します。
# while文の基本構造
以下が基本的なwhile文の構造です。

“`python
while 条件:
実行するコード
“`
## 簡単なサンプルコード
**サンプル1: カウンタを使ったwhileループ**
“`python
# カウンタ変数を初期化
count = 0

# countが5より小さい間、ループを実行
while count < 5: print("Count is:", count) count += 1 # カウンタを1増やす ``` 説明: このコードは`count`が5未満である間、`"Count is:"`と`count`の値を表示し、`count`の値を1ずつ増やします。 **サンプル2: ユーザー入力を使ったwhileループ** ```python # 無限ループを使う場合の例 while True

元記事を表示

OTHERカテゴリの最新記事