クラスタリング

クラスタリング 手法 ユーザーを属性に基づいてクラスタリングするためには、いくつかの手法があります。以下に代表的なものを紹介します: 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 分

LLM: ペルソナ

ペルソナ 生成 AI との融合で素早く深くペルソナを理解する!AI インタビューのご紹介

2024年11月7日 · 1 分

SQLModel

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

2024年10月17日 · 1 分

javascript: ページのURLを取得

Javascript ページ内のアンカーの取得 ブラウザの「検証」でコンソールからプログラムを実行 1 2 3 4 5 6 // ページ内のすべてのアンカー要素を取得 const anchors = document.querySelectorAll('a'); // アンカーのhref属性を配列に格納 const urls = Array.from(anchors).map(anchor => anchor.href); // 結果をコンソールに表示 console.log(urls);

2024年10月14日 · 1 分

Wordpress: 脆弱性

Wordpress脆弱性 Advanced Custom Fields (ACF) https://rocket-boys.co.jp/7886/

2024年10月14日 · 1 分

gunicorn

Gunicorn max_requests / max_requests_jitter Gunicornでメモリリークを避けるために子プロセスを定期的に再起動するには、max_requestsとmax_requests_jitterの設定を利用するのが効果的です。これにより、一定のリクエスト数を処理した後にワーカープロセスが自動的に再起動されます。 以下はその設定方法です: max_requests: 各ワーカープロセスが再起動される前に処理するリクエストの最大数を指定します。 max_requests_jitter: 再起動のタイミングをランダム化するためのオプションです。これにより、全てのワーカープロセスが同時に再起動されるのを防ぎます。 Gunicornの設定ファイル(例:gunicorn.conf.py)に以下のように追加します: 1 2 3 4 # gunicorn.conf.py max_requests = 1000 # 1000リクエストごとに再起動 max_requests_jitter = 50 # 再起動タイミングをランダム化 または、コマンドラインで起動する際にオプションとして指定することもできます: 1 gunicorn --max-requests 1000 --max-requests-jitter 50 myapp:app これにより、各ワーカープロセスは1000回のリクエストを処理した後、ランダムに最大50回のリクエストを追加で処理してから再起動されます¹(https://qiita.com/ryu22e/items/2668a2243a5191bcdc78)²(https://zenn.dev/xknzw/articles/d2d337ae2f8966)³(https://qiita.com/_konishi_/items/1dc2bbfc386f57d06934)。 この設定により、メモリリークの影響を最小限に抑えつつ、サービスの安定性を保つことができます。 ¹(https://qiita.com/ryu22e/items/2668a2243a5191bcdc78): gunicorn(>=19.2)ではmax_requestsと一緒にmax_requests_jitterも使おう - Qiita ²(https://zenn.dev/xknzw/articles/d2d337ae2f8966): gunicorn syncワーカーの全体像メモ - Zenn ³(https://qiita.com/_konishi_/items/1dc2bbfc386f57d06934): gunicornでディスク使用量が増え続ける現象への対処 - Qiita (1) gunicorn(>=19.2)ではmax_requestsと一緒にmax_requests_jitterも使おう. https://qiita.com/ryu22e/items/2668a2243a5191bcdc78. (2) gunicorn syncワーカーの全体像メモ - Zenn. https://zenn.dev/xknzw/articles/d2d337ae2f8966. (3) gunicornでディスク使用量が増え続ける現象への対処 - Qiita. https://qiita.com/_konishi_/items/1dc2bbfc386f57d06934.

2024年10月11日 · 1 分

ltsv

ltsv ltsv から csvに変換 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 #!/usr/bin/env python import click import pandas as pd import csv import re @click.group() @click.option("--tf_output", "-to", default=None) @click.pass_context def group(ctx, tf_output): pass @group.command() @click.argument("src") @click.pass_context def ltsv2csv(ctx, src): """LTSV to CSV""" output = f"{src}.csv" def get_line_dict(line): return dict(re.search(r"^([^\:]+)\:(.*)$", i).groups() for i in line) with open(src) as f: data = pd.DataFrame(map(get_line_dict, csv.reader(f, delimiter="\t"))) data.to_csv(output, index=False) if __name__ == "__main__": group()

2024年10月11日 · 1 分

alembic: マイグレーションツール

Alembic リレーション フェイクマイグレーション

2024年10月10日 · 1 分

NPS

NPS(Net Promoter Score) Net Promoter Score (NPS) とは、顧客が企業や製品、サービスを他人に推薦する可能性を測定する指標です。 NPSは、顧客満足度やロイヤルティを評価するために広く使用されています。 NPSは、次のような質問に基づいて計算されます: 「この製品/サービスを友人や同僚に推薦する可能性はどのくらいありますか?」顧客は0から10のスケールで回答します。 9-10: 推奨者 (Promoters) - 非常に満足しており、積極的に推薦する可能性が高い。 7-8: 中立者 (Passives) - 満足しているが、積極的に推薦する可能性は低い。 0-6: 批判者 (Detractors) - 不満を持っており、他人に推薦しない可能性が高い。 NPSは、推奨者の割合から批判者の割合を引くことで計算されます。例えば、100人の顧客のうち60人が推奨者、20人が中立者、20人が批判者の場合、NPSは40(60% - 20%)となります。 NPSは、企業が顧客のフィードバックを理解し、改善点を見つけるための重要なツールです。 例 NPSの設問はシンプルで、次のように記述されます: 「この製品/サービスを友人や同僚に推薦する可能性はどのくらいありますか?」 回答は0から10のスケールで行います。具体的には以下のような形式です: 0 - 全く推薦しない 1 2 3 4 5 6 7 8 9 10 - 非常に推薦する この設問に続けて、自由記述欄を設けることも一般的です。例えば: 「この評価の理由を教えてください。」 これにより、顧客の具体的なフィードバックを収集しやすくなります。 記事 第113回: NPS(Net Promoter Score)という名の推奨意向 NPS®(ネットプロモータースコア)とは?

2024年10月6日 · 1 分

アンケート

アンケート 「ランキング(順位回答) 「ランキング(順位回答)」形式の設問を設定する際には、回答者に複数の選択肢を提示し、それらを順位付けしてもらう形になります。具体的な記述例を以下に示します: 設問例 Q1. 以下の旅行先を、行きたい順に1位から5位まで順位付けしてください。 パリ ニューヨーク 東京 ローマ シドニー 回答方法 回答者は、各選択肢に対して順位を記入します。例えば: 1位: 東京 2位: パリ 3位: シドニー 4位: ニューヨーク 5位: ローマ このように、回答者が自分の好みに基づいて順位を付けることで、アンケートの結果から人気のある選択肢や優先順位を分析することができます。

2024年10月6日 · 1 分