請求入金

請求入金 マッチング 文字列の揺らぎがある場合、ベクトルデータを使ったマッチングは非常に有効です。 具体的には、文字列の類似度を計算するために、自然言語処理(NLP)の技術を利用することができます。 以下は、fuzzywuzzyライブラリを使用して文字列の類似度を計算し、マッチングを行うサンプルコードです: まず、必要なライブラリをインストールします: 1 pip install pandas openpyxl fuzzywuzzy 次に、サンプルコードです: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 import pandas as pd from fuzzywuzzy import fuzz # 入金リストと請求明細のファイルパス payments_file = 'payments.xlsx' invoices_file = 'invoices.xlsx' # Excelファイルからデータを読み込む payments_df = pd.read_excel(payments_file) invoices_df = pd.read_excel(invoices_file) # 類似度の閾値を設定 similarity_threshold = 80 # マッチング結果を格納するリスト matched_records = [] # 入金リストと請求明細をマッチングさせる for _, payment in payments_df.iterrows(): for _, invoice in invoices_df.iterrows(): # 金額が一致するか確認 if payment['金額'] == invoice['請求金額']: # 振り込み依頼人と顧客名の類似度を計算 similarity = fuzz.token_sort_ratio(payment['振り込み依頼人'], invoice['顧客名']) if similarity >= similarity_threshold: matched_records.append({ '入金ID': payment['入金ID'], '請求ID': invoice['請求ID'], '金額': payment['金額'], '振り込み依頼人': payment['振り込み依頼人'], '顧客名': invoice['顧客名'], '類似度': similarity }) # マッチング結果をデータフレームに変換 matched_df = pd.DataFrame(matched_records) # マッチング結果を表示 print(matched_df) # マッチング結果を新しいExcelファイルに保存 matched_df.to_excel('matched_results.xlsx', index=False) このコードでは、以下の手順を実行しています: ...

2025年2月13日 · 1 分

hatch

hatch https://hatch.pypa.io/1.9/ 最近気になるツール「Hatch」でPythonプロジェクトを管理する

2025年1月26日 · 1 分

nix

nix NIXで管理するpython環境 uv https://docs.astral.sh/uv/ nix: https://github.com/pyproject-nix/uv2nix

2025年1月5日 · 1 分

uv

uv https://docs.astral.sh/uv/ nix: https://github.com/pyproject-nix/uv2nix インストール 1 % curl -LsSf https://astral.sh/uv/install.sh | sh 1 2 3 4 5 6 7 8 9 10 11 downloading uv 0.5.14 aarch64-apple-darwin no checksums to verify installing to /Users/hdknr/.local/bin uv uvx everything's installed! To add $HOME/.local/bin to your PATH, either restart your shell or run: source $HOME/.local/bin/env (sh, bash, zsh) source $HOME/.local/bin/env.fish (fish) 1 2 3 % source .local/bin/env % which uv /Users/hdknr/.local/bin/uv 1 2 % uv --version uv 0.5.14 (9f1ba2b96 2025-01-02) uvx (uv tool run) uvではdevelop環境で利用するtoolをuv tool(uvx)というコマンド別管理することが可能 ...

2025年1月5日 · 1 分

Gradio

Gradio https://www.gradio.app/ 機械学習向けWeb UIライブラリ Gradio Gradio: Pythonで簡単にAIをWebアプリ化 gradio 入門 (1) - 事始め gradio 入門 (2) - Interface gradio 入門 (3) - Blocks gradio 入門 (4) - 主な機能

2024年12月30日 · 1 分

Python: HTTP

Python: HTTP 簡単なHTMLサーバー(http.server + SimpleHTTPRequestHandler) ディレクトリ一覧を返す 1 2 3 4 5 6 7 8 9 10 import http.server import socketserver PORT = 8000 Handler = http.server.SimpleHTTPRequestHandler with socketserver.TCPServer(("", PORT), Handler) as httpd: print("serving at port", PORT) httpd.serve_forever()

2024年12月15日 · 1 分

scikit-learn: 異常検知

異常検知 sklearnを用いた異常検知のサンプルコード sklearn(サイキットラーン)は、Pythonで機械学習を行うための強力なライブラリです。異常検知も、sklearnの様々なアルゴリズムを用いて行うことができます。 異常検知の手法選択 異常検知の手法は、データの種類や異常パターンによって異なります。代表的な手法としては、以下のものが挙げられます。 One-Class SVM: データの境界線を学習し、その境界から離れた点を異常と判定します。 Isolation Forest: データ点を孤立させるような決定木を複数作成し、異常度をスコア化します。 Local Outlier Factor (LOF): データ点の近傍の密度に基づいて異常度を計算します。 サンプルコード(Isolation Forest) ここでは、Isolation Forestを用いた異常検知のサンプルコードをPythonで記述します。 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 from sklearn.ensemble import IsolationForest import numpy as np # サンプルデータ生成 np.random.seed(42) X = np.random.randn(100, 2) # 正常データ X = np.r_[X, np.random.randn(20, 2) + [3, 3]] # 異常データ # Isolation Forestモデルの作成 clf = IsolationForest(contamination=0.2) # 異常データの割合を指定 clf.fit(X) # 異常度の予測 y_pred = clf.predict(X) # 異常データの抽出 anomalies = X[y_pred == -1] # 結果の表示 print("異常データ:") print(anomalies) コード解説 データの生成: 正常なデータと異常なデータを生成します。 モデルの作成: IsolationForestのインスタンスを作成し、contaminationパラメータで異常データの割合を指定します。 モデルの学習: fitメソッドでモデルを学習させます。 異常度の予測: predictメソッドで各データの異常度を予測します。 異常データの抽出: 予測結果が-1のデータを異常データとして抽出します。 その他の注意点 contaminationパラメータ: 異常データの割合を事前にある程度把握している場合に、このパラメータを指定することで、より正確な異常検知が可能になります。 特徴量のスケーリング: 特徴量のスケールが異なる場合、標準化や正規化を行うことで、モデルの性能が向上する場合があります。 ハイパーパラメータのチューニング: Isolation Forestには、他にも様々なハイパーパラメータが存在します。GridSearchCVなどを用いて、最適なパラメータを探索することができます。 より詳細な情報 sklearnの公式ドキュメント: IsolationForestの詳しい説明や他の異常検知アルゴリズムについては、sklearnの公式ドキュメントを参照してください。 Qiitaなどの技術ブログ: 多くの技術ブログで、sklearnを用いた異常検知の具体的な事例や解説が紹介されています。 応用 異常検知は、不正検出、故障検知、品質管理など、様々な分野で活用されています。 ...

2024年12月12日 · 1 分

Django Email

メール送信 Djangoでメールを送信する際に、都度サーバーを切り替える方法はいくつかあります。以下の手順で実装できます。 メールサーバーの設定を動的に変更する: DjangoのEmailMessageクラスを使用して、メール送信時にサーバー設定を動的に変更できます。例えば、以下のようにconnectionパラメータを使用して異なるサーバーを指定します。 1 2 3 4 5 6 7 8 9 10 11 12 13 from django.core.mail import EmailMessage, get_connection def send_email(subject, message, from_email, recipient_list, server_settings): connection = get_connection( host=server_settings['EMAIL_HOST'], port=server_settings['EMAIL_PORT'], username=server_settings['EMAIL_HOST_USER'], password=server_settings['EMAIL_HOST_PASSWORD'], use_tls=server_settings['EMAIL_USE_TLS'], use_ssl=server_settings['EMAIL_USE_SSL'], ) email = EmailMessage(subject, message, from_email, recipient_list, connection=connection) email.send() サーバー設定のリストを用意する: 複数のサーバー設定をリストで管理し、メール送信時にランダムまたは順番に選択する方法です。 ...

2024年11月28日 · 1 分

クラスタリング

クラスタリング 手法 ユーザーを属性に基づいてクラスタリングするためには、いくつかの手法があります。以下に代表的なものを紹介します: K-meansクラスタリング: ユーザーを事前に決めた数のクラスタに分ける手法です。各クラスタの中心(セントロイド)を計算し、ユーザーを最も近いクラスタに割り当てます。 階層的クラスタリング: ユーザーを階層的にクラスタリングする手法です。デンドログラムと呼ばれる木構造を作成し、ユーザーを段階的にクラスタに分けます。 DBSCAN(Density-Based Spatial Clustering of Applications with Noise): 密度に基づくクラスタリング手法で、データの密度が高い部分をクラスタとして識別します。ノイズや外れ値を扱うのに適しています。 Gaussian Mixture Models(GMM): データが複数のガウス分布から生成されていると仮定し、各クラスタをガウス分布としてモデル化します。クラスタの形状が楕円形の場合に有効です。 主成分分析(PCA): 次元削減の手法ですが、クラスタリングの前処理として使用されることが多いです。データの重要な特徴を抽出し、クラスタリングの精度を向上させます。 これらの手法を使うことで、ユーザーを効果的にクラスタリングし、属性に基づいた分析やマーケティング戦略の立案が可能になります。どの手法が最適かは、データの特性や目的によって異なるため、いくつかの手法を試してみると良いでしょう。 どの手法について詳しく知りたいですか?または、具体的なデータの例があれば教えてください。 DBSCAN 以下に、Pythonを使ってDBSCANでデータをクラスタリングするサンプルコードを示します。この例では、scikit-learnライブラリを使用しています。 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 import numpy as np from sklearn.cluster import DBSCAN from sklearn.datasets import make_blobs import matplotlib.pyplot as plt # サンプルデータの生成 X, _ = make_blobs(n_samples=300, centers=4, cluster_std=0.60, random_state=0) # DBSCANの実行 dbscan = DBSCAN(eps=0.3, min_samples=5) clusters = dbscan.fit_predict(X) # クラスタリング結果のプロット plt.scatter(X[:, 0], X[:, 1], c=clusters, cmap='viridis') plt.xlabel('Feature 1') plt.ylabel('Feature 2') plt.title('DBSCAN Clustering') plt.show() このコードでは、以下の手順を踏んでいます: ...

2024年11月17日 · 1 分

SQLModel

SQLModel テーブル定義 SQLModel で簡単なテーブルを作成する Alembic マイグレーション SQLModel で設計したモデルを Alembic でマイグレーション Alembic で複数モデルを扱う alembic + SQLModelでデータベースをマイグレーションする

2024年10月17日 · 1 分