タグ

pythonと*dataに関するsh19910711のブックマーク (344)

  • StanとPythonでベイズ統計モデリング その1 - Easy to type

    StanとRでベイズ統計モデリング(通称アヒル)をだいたい読みました。 StanとRでベイズ統計モデリング (Wonderful R) 作者: 松浦健太郎,石田基広出版社/メーカー: 共立出版発売日: 2016/10/25メディア: 単行この商品を含むブログ (8件) を見る の紹介 既に様々な書評もありますし、方々から賛辞の声を挙げられているです。僕としても非常に分かりやすく、使えるだと感じました。著者の松浦さんがウリを書いてくださっているので、まずそれを読むのが良いと思います。様々な方の書評も纏められています。 statmodeling.hatenablog.com 読んでみての感想を、良い点と改訂版に期待する点(笑)で書いてみたいと思います。 良い点 使えそうな分布が結構紹介されている これは僕の専門分野が生命情報解析、著者の松浦さんの専門が医療統計で近いということもあるの

    StanとPythonでベイズ統計モデリング その1 - Easy to type
    sh19910711
    sh19910711 2024/06/21
    "「あいまいさ自体をパラメータ化してしまう」という特徴が他にどのように活かせるのか理解しやすく / 難しいところは「パラメータを生み出す分布がある」という感覚の理解 / Stan: 2.10.0辺りで新しい文法が提案" 2017
  • Great Expectations(GE) によるノートブック型環境(Databricks)でのデータ品質保証方法のまとめ - Qiita

    Great Expectations(GE) によるノートブック型環境(Databricks)でのデータ品質保証方法のまとめPythonSparkデータ分析DatabricksGreatExpectations 概要 記事にて、Great Expectations(GE) によるノートブック型環境(Databricks)でのデータ品質保証方法を共有する。GE がツールの概要を提示した上で、コードとその実行結果を提示する。 実行コードとその出力結果を Github に配置してあり、次のリンクで確認が可能。 Great Expectations とは Great Expectations (GE) とは、データに対する検証、ドキュメント化、および、プロファイリングにより、データ品質の保証と改善を支援する OSS の Python ライブラリである。データに対する品質保証条件(GE では Ex

    Great Expectations(GE) によるノートブック型環境(Databricks)でのデータ品質保証方法のまとめ - Qiita
    sh19910711
    sh19910711 2024/06/20
    "Great Expectations: 生成されるドキュメントは、下記の項目が表示される HTML ファイル + 静的サイトとしてホストすることができる / spark データフレームでも実行できる + パフォーマンスに課題" 2022
  • Bokehを使ってグリグリ動かせるベータ分布を描画する - Qiita

    こんな奴を作ります。 きっかけ ベータ分布という名前を聞いたことはあるでしょうか。 ベータ分布は、コインの表裏のような2値のいずれかを選ぶときに用いられるベルヌーイ分布や二項分布などの、共役事前分布としてよく使われる確率分布です。正の実数a, bを定義したときμ ∈ (0, 1)となるμの取りうる確率を生成します。 この分布は2つのパラメータによって制御されるのですが、2つの値の取り方によって分布の形がとても大きく変化します。そのため、多くの参考書では様々なパラメータで分布の形がどう変わるのか挿絵を入れています。 今回は対話型の描画が出来るBokehというモジュールを用いて、2つのパラメータを自由に操作しながら分布の動きをリアルタイムに確認できる図を作っていきたいと思います。 (参考)ベータ分布の数式的な理解 ベータ分布とは確率密度関数が $$ Beta(\mu | a, b) = C_B

    Bokehを使ってグリグリ動かせるベータ分布を描画する - Qiita
    sh19910711
    sh19910711 2024/06/19
    "ベータ分布: ベルヌーイ分布や二項分布などの、共役事前分布としてよく使われ / Bokehというモジュールを用いて、2つのパラメータを自由に操作しながら分布の動きをリアルタイムに確認" 2018
  • コイン投げを例題にPythonを使ってベイズ統計学の勉強 - Qiita

    概要 次のようなコイン投げの問題をベイズ統計学の観点から考えていきます。計算や結果の確認に Python を利用していきます。なお、ベイズの定理の基については、理解していることを前提とします(ベイズの定理の基については、「天気の子」を題材にゼロから学ぶ「ベイズの定理」を参照ください)。 あるコインについて「イカサマなコイン」かどうかを調べたい。このコインを3回投げたとき「裏」「表」「表」がでた。 コインの表がでる確率(スタンダードな統計学) スタンダードな統計学(ネイマン・ピアソン統計学)では、次のように扱います。 あるコインについて「イカサマなコイン」かどうかを調べたい。このコインを3回投げたとき「裏」「表」「表」がでた。そのコインにおいて表がでる確率 $P(表)$ を求めよ。 表がでる確率 $P(表)$ は、次のように求めることができます。 $$P(表)=\frac{2}{3}$$

    コイン投げを例題にPythonを使ってベイズ統計学の勉強 - Qiita
    sh19910711
    sh19910711 2024/06/19
    "ベイズ統計学では、母数に関する確率分布(=母数を確率変数とした確率密度関数)を扱い / 「表がでる確率 𝜃」ではなく「表がでる確率 𝜃 の確率分布(確率密度関数 𝑓(𝜃) )」を求めるところがベイズ" 2019
  • 正規分布の確率密度関数を理解してみる - Qiita

    正規分布は代表的な分布の一つであり、統計の分野で頻出する分布です。 しかし正規分布の確率密度関数は↑式のようにとてもややこしく、多くの初学者を葬り去ってきました。 かく言う僕も統計の勉強を始めて、初めてこの式を見た時は頭痛と眩暈を覚えた記憶があります。 記事では、↑式の係数部分($\frac{1}{\sqrt{2\piσ^2}}$)と指数部分($-\frac{(x-μ)^2}{2σ^2}$)に分けて、なぜこのような形になったのかを記述していきます。 指数部分 世の中の多くの事象は平均値を取る確率が最も大きく、平均値から離れるにつれその値を取る確率は小さくなります。 これを簡単に表す式が、 import numpy as np import matplotlib.pyplot as plt def normal_dist(x, ave = 0, disp=1): return np.exp

    正規分布の確率密度関数を理解してみる - Qiita
    sh19910711
    sh19910711 2024/06/18
    "正規分布は代表的な分布の一つであり、統計の分野で頻出する / 正規分布の確率密度関数は↑式のようにとてもややこしく、多くの初学者を葬り去ってきました / 初めてこの式を見た時は頭痛と眩暈を覚えた記憶" 2020
  • 1次元のデータをカーネル密度推定(KDE)でクラスタリングする - Qiita

    data=[3016,1556,348,1185,341,1189,342,425,343,419,349,1190,340,424,345,422,347, 423,344,1187,343,1189,354,1166,350,423,345,1188,345,425,342,425,342,424, 345,421,347,1184,346,1187,347,419,345,425,344,421,346,422,346,424,345, 8269,3014,1561,344,1183,345,1188,343,432,335,428,344,1185,343,421,346, 425,342,427,342,1187,343,1185,345,1187,342,424,344,1188,343,419,349,424, 344,424,346,424,343,1188,343,118

    1次元のデータをカーネル密度推定(KDE)でクラスタリングする - Qiita
    sh19910711
    sh19910711 2024/06/18
    "クラスタリングといえばk-meansが定番ですが、これは多次元データ向けのクラスタリング手法 / ソートしてから次元を増やせば適用できそうですが、おそらくオーバースペック" 2021
  • 難しく考えずにベイジアンABテストを試してみた - Qiita

    Ateam Commerce Techのアドベントカレンダー 15日目は @o93 が担当します! はじめに 1年程前,書籍を参考にベイジアンABテストを実装してみたのですが,簡単にJupyter Notebook作っただけでそのまま社内のgitlabに放置していました...今回アドベントカレンダーを機会に記事にすることにしました.ベイズ統計に関してまだまだ理解が追い付いていない身ですが,事象の曖昧さを定量的に表現するアプローチとして,仕事を超えて自分の考え方に大きく影響を受けていたりします,,, 難しい数式などを省いて,できるだけ解りやすくエンジニアライクに説明してみたつもりです.興味ある方は是非ご覧ください! 使用している技術 Python - プログラミング言語 JupyterLab - プログラムの実行環境 NumPy - ABテストのシミュレートと計算 Matplotlib -

    難しく考えずにベイジアンABテストを試してみた - Qiita
    sh19910711
    sh19910711 2024/06/18
    "クリック率はX軸であり,Y軸は,「ABテストの結果としてAのクリック率が0〜1の間の何処かの値になるが,まだテスト前だから,1つの値に初期化しとこう」という状態のクリック率が取り得る値の確率分布" 2021
  • ガウス過程回帰をnumpyで実装 - Qiita

    import numpy as np np.random.seed(1) import matplotlib.pyplot as plt from itertools import product # 目的関数 def function(x): y = 0.2*np.sin(x) + 0.1*x return y # データを生成 n_sample = 40 X = np.random.uniform(-2*np.pi, 2*np.pi, n_sample) Y = function(X) + np.random.normal(loc=0, scale=0.05, size=n_sample) # 推定したいXの値 X_pred = np.linspace(-2*np.pi, 2*np.pi, 101) # データ数 N = n_sample # プロット plt.figure(figsi

    ガウス過程回帰をnumpyで実装 - Qiita
    sh19910711
    sh19910711 2024/06/18
    "GPyなどの便利なライブラリもあるが、今回はnumpyで実装 / sin関数+1次関数に、正規分布のノイズ / ガウス過程回帰では予測モデルは平均0、共分散行列𝐾のガウス分布から生成されるとする" 2022
  • pythonで統計学(平均、母比率の区間推定) - Qiita

    統計学をpythonにやってもらおう#2 初めに 前回は、正規分布とt分布をpythonで表現する方法を解説しましたが、今回は区間推定について扱っていきます。前回の記事 特に平均を中心に区間推定を行っていきます。 目次 1,区間推定とは 2,母分散が既知の場合の母平均の区間推定 3,母分散が未知の場合の母平均の区間推定 4,母比率の区間推定 1,区間推定とは 区間推定とは、『真の値θが区間[L,U]に入る確率が(1-α)以上になるように保証する』という推定方法です。 簡単に言うと、真の値を1点で求める点推定とは反対に、真の値をある区間内(信頼区間)にいるという推定をするということです。 図のpは母比率ですが真の値と考えてもらって大丈夫です。 参考(区間推定について) 定義や理論だと私はわかりずらかったので、具体例を考えていきます。 2,母分散が既知の場合の母平均の区間推定 例えば10人の男

    pythonで統計学(平均、母比率の区間推定) - Qiita
    sh19910711
    sh19910711 2024/06/18
    "区間推定: 真の値をある区間内(信頼区間)にいるという推定 / 不偏分散 u² を代入することで、新しく出てきた標準化変数 T は、数学的な議論によって標準正規分布にではなく、自由度 n - 1 の t 分布に従うことが証明" 2022
  • NumpyやPySparkで大量の確率モデルの確率密度関数を積分する - Qiita

    はじめに 業務で行っていたとある分析で、大量の確率モデルの確率密度関数を積分して確率を求める機会があったので、この記事ではその際に調べたことを、架空の問題設定を通して紹介していこうと思います。 問題設定 今回はダミーのデータセットを用いて説明しようと思います。 ECサイトのユーザの毎月の決済回数を集計して、平均と標準偏差を算出したという体で、以下のようにしてNumpyとPandasでダミーデータを作成します。 rg = np.random.default_rng() models = [] for i in range(100000): id = str(i) usage = rg.uniform(0, 30, 12) # 各ユーザの12か月の利用回数を0~30の一様分布で生成 mean = float(np.mean(usage)) std = float(np.std(usage))

    NumpyやPySparkで大量の確率モデルの確率密度関数を積分する - Qiita
    sh19910711
    sh19910711 2024/06/18
    "大量の確率モデルの確率密度関数を積分して確率を求める / 平均と標準偏差をパラメータとして持つ正規分布を各ユーザの月間決済回数を表すモデルとして、そこから月間決済回数が3回以上となる確率を計算したい" 2022
  • [Python / numpy] EMアルゴリズムで一次元の混合正規分布のパラメータ推定を行う - Qiita

    概要 EMアルゴリズムのうち、一次元の混合正規分布に対するパラメータ推定についての解説になります。 EMアルゴリズムの数式を見て挫折しかけている方にとって、何かしらの参考になることを期待しています。 また、プログラムでデータの生成や計算を行う際は、なるべく数式そのものを自分でコーディングするスタイルで実装しています。 記事作成の背景 私は、数学を高校までしか習っておらず、大学の数学は独学。 ですが、とあるきっかけでEMアルゴリズムを学ぶことになりました。 そこで、続・わかりやすいパターン認識と、 以下の記事を読んだのですが、 それでも、一次元の混合正規分布に対してEMアルゴリズムを適用する場合の数式の導出方法がわかりませんでした。上記書籍も記事も非常にわかりやすかったのですが、私には前提知識が足りなかったからか、まだわからない所がかなり残っていました。 そんな状態で、その他色々な記事の記述

    [Python / numpy] EMアルゴリズムで一次元の混合正規分布のパラメータ推定を行う - Qiita
    sh19910711
    sh19910711 2024/06/18
    "EMアルゴリズムのうち、一次元の混合正規分布に対するパラメータ推定について / データの生成や計算を行う際は、なるべく数式そのものを自分でコーディングするスタイル" 2023
  • 対応する3次元点群データから回転行列を推定する方法 - Qiita

    概要 3次元回転のを参考に、回転の推定を実装してみた記事です。 点群データ(a1,...,aN)を回転行列Rだけ回転させた点群データ(a'1,...,a'N)があったとします。このとき、回転前と回転後のデータをもとに、Rを推定する手法を実装していきます。今回は、データに等方性誤差が発生している場合の手法をまとめています。等方とは誤差の出方が空間の方向によらないことです。データに誤差が無いときの手法はこちらを参照してください。 手法を2つ紹介しますが、どちらも回転前と回転後の対応する点同士の位置の最小2乗問題を解くことになります。 J=\frac{1}{2}\sum_{\alpha=1}^N\langle a\prime_\alpha-Ra_\alpha,a\prime_\alpha-Ra_\alpha \rangle\\ =\frac{1}{2}\sum_{\alpha=1}^N(\la

    対応する3次元点群データから回転行列を推定する方法 - Qiita
    sh19910711
    sh19910711 2024/06/18
    "点群データ(a1,...,aN)を回転行列Rだけ回転させた / 回転前と回転後のデータをもとに、Rを推定する手法 / データに等方性誤差が発生している場合の手法をまとめています。等方とは誤差の出方が空間の方向によらない" 2023
  • np.zerosとnp.zeros_likeはdtypeに気を付けよう - Qiita

    Abstract np.zerosとnp.zeros_likeはdtypeに関する振る舞いが異なるので気を付けようという話 環境 Windows 10 Python 3.10.9 numpy 1.24.2 >>> x = np.arange(0, 5, 0.2) >>> x array([0. , 0.2, 0.4, 0.6, 0.8, 1. , 1.2, 1.4, 1.6, 1.8, 2. , 2.2, 2.4, 2.6, 2.8, 3. , 3.2, 3.4, 3.6, 3.8, 4. , 4.2, 4.4, 4.6, 4.8]) >>> a = np.zeros(x.shape) >>> a array([0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.

    np.zerosとnp.zeros_likeはdtypeに気を付けよう - Qiita
    sh19910711
    sh19910711 2024/06/18
    "np.zerosはdtypeを引数で指定しない場合はnp.float64になります / 一方でnp.zeros_likeは受け取ったnumpy配列のdtypeを引き継ぐようになっています / 単にshapeが同じ配列を作りたいという時は、意識しておいてdtypeを指定しましょう" 2023
  • numpyでgroupbyの集計を行うとpandasより速いのかを検証 - Qiita

    はじめに 特徴量エンジニアリングやデータ解析のための前処理で pandas の集計(groupbyしてsum, mean, std, median とか)を使用していると「遅い」と感じることがしばしばありました。 検索してみると、pandas を用いずに numpy だけで集計している方々がいるようだったので、実際に速いのか試してみました。しかも、numpy であれば Numba を用いることができるため、合わせて検証をしてみることにしました。 【参考】だから僕はpandasを辞めた【NumPyだけでgroupby.mean()する3つの方法 篇】 また、この記事では Numba の解説はしません。 とりあえず、読んで頂くだけであれば、python の処理を高速にするモジュールぐらいの感覚でもよいです。下記リンクに Numba を解説くださっている方の記事がありますので、気になる方は読んで

    numpyでgroupbyの集計を行うとpandasより速いのかを検証 - Qiita
    sh19910711
    sh19910711 2024/06/18
    "pandas の集計(groupbyしてsum, mean, std, median とか)を使用していると「遅い」と感じることがしばしば / numpy であれば Numba を用いることができるため、合わせて検証をしてみる" 2023
  • numbaのvectorizeを使いこなす - Qiita

    Pythonのコードを機械語にコンパイルして処理を高速化するライブラリnumbaにはvectorizeとguvectorizeというデコレーターが用意されており、これを使うことで簡単に関数をベクトル化することができます。このデコレーターの使い方を解説します。 vectorizeによるベクトル化 numbaのvectorizeというデコレーターを関数に付けるだけで、その関数をベクトル化することができます。例えば2つの数$x$と$y$を受け取って$x^2 + y^2$を返す関数dist_sqの場合は次のようになります。 from numba import vectorize, float64 @vectorize([float64(float64, float64)]) def dist_sq(x, y): return x**2 + y**2 次のように、これだけでdist_sqは配列を受け

    numbaのvectorizeを使いこなす - Qiita
    sh19910711
    sh19910711 2024/06/18
    "numba: Pythonのコードを機械語にコンパイルして処理を高速化するライブラリ / vectorizeとguvectorizeというデコレーターが用意されており、これを使うことで簡単に関数をベクトル化することができます" 2023
  • sqlite-vssとnumpyのバイナリ化はちょっと違う - Qiita

    Pythonからsqlite-vssを使っていて、ベクトルの値の一部が非数もしくは無限と認識されてしまい、近似近傍探索の実行ができないエラーに遭遇しました。記事ではその理由と解決方法を示します。なお、理由についてはある程度は調べてみましたが、100点の理解ではないのでそこはご承知ください。 記事はPython, numpyおよびsqlite-vssについて基的なことを知っている人向けの記事です。例えば以下の記事のことをわかっているという前提で解説します。 sqlite-vss入門 (MURAOKA Taro氏) https://zenn.dev/koron/articles/8925963f432361 SQLiteでベクトル検索ができる拡張sqlite-vssを試す (西見 公宏氏) https://note.com/mahlab/n/n5d59b19be573 これらの記事は筆者

    sqlite-vssとnumpyのバイナリ化はちょっと違う - Qiita
    sh19910711
    sh19910711 2024/06/18
    "sqlite-vssを使っていて、ベクトルの値の一部が非数もしくは無限と認識されてしまい近似近傍探索の実行ができない / numpyのtobytesメソッドでバイナリに変換しSQLiteのテーブルに保存していますがこれをやめ" 2023
  • Scikit-learnの決定木からノードの分岐条件を抽出、データとして格納する - Qiita

    全体の実行ipynbはこちら。 先人たちの軌跡 Understanding the decision tree structure 公式のScikit-learnサイトにおいて決定木の構造をテキストで可視化する方法を紹介しています。稿ではこちらを主に参考にして分岐条件の抽出を行います。 [Python]Graphviz不要の決定木可視化ライブラリdtreepltをつくった 直接試してはいませんが、GraphVizを使用せずにMatplotlibで類似の画像を描画する試みも存在します。テキストでの可視化は直感的ではないので、理解のためには画像での描画は必須ですね。 dtreeviz : Decision Tree Visualization こちらは論点がずれますが、GraphVizを使用しつつ、ノードにおける分岐条件をよりリッチにした描画を可能にしたものです。ただ、情報がリッチになりすぎ

    Scikit-learnの決定木からノードの分岐条件を抽出、データとして格納する - Qiita
    sh19910711
    sh19910711 2024/06/18
    "GraphVizを使用した可視化: 人間が直感的に理解するには良い + データとして決定パスの情報を利用できない + GraphVizとの連携が少し煩雑なためサクッと可視化できないといった問題" 2019
  • Lasso回帰による線形回帰分析とカーネル法による非線形データへの適用 - Qiita

    はじめに こんにちは,(株)日立製作所 研究開発グループ サービスコンピューティング研究部の露木です。 機械学習の勉強を始めると「損失関数」や「正則化」といった言葉をよく見かけるかと思います。この正則化の効果を理屈と感覚で理解したいならば,シンプルな回帰モデルであるLasso回帰が題材として最適です。そこで記事ではLasso回帰の特徴を簡単に説明した上で,scikit-learnのプログラムを動かしながらその振る舞いを調べます。特に,Lasso回帰のハイパーパラメータを変えながら非線形データの回帰を繰り返し,正則化の効果を確認します。 Lasso回帰の特徴 Lasso回帰は数値データに対して、線形回帰を行う手法の一つです。例えば特徴量が $n$ 次元あるときに,与えられたデータに対して以下の式の重み係数 $w_i$ と切片 $b$を最適化すること(線形回帰)を考えます。 $$ \hat{

    Lasso回帰による線形回帰分析とカーネル法による非線形データへの適用 - Qiita
    sh19910711
    sh19910711 2024/06/18
    "正則化の効果を理屈と感覚で理解したいならば,シンプルな回帰モデルであるLasso回帰が題材として最適 / Lasso回帰のハイパーパラメータを変えながら非線形データの回帰を繰り返し,正則化の効果を確認" 2020
  • Pythonで多次元尺度法 (MDS) 〜距離行列から位置関係を再現する〜 - Qiita

    n個体間の非類似度または距離が与えられているとき、それらn個体の位置関係を(低次元の)座標で表現する手法として、多次元尺度法 (MDS : Multi-Dimensional Scaling) があります。 MDSの数理的な解説は別の機会に譲るとして、今回はscikit-learnのパッケージを使ってMDSを試してみます。MDSには大きく分けて計量MDSと非計量MDSに分けられますが、今回扱うのは計量MDSになります。 ライブラリのインポート scikit-learnでは sklearn.manifold.MDS をインポートすることでMDSサブパッケージを利用できます。 import numpy as np import pandas as pd import matplotlib.pyplot as plt from tqdm import tqdm # forループの進捗バーを表示す

    Pythonで多次元尺度法 (MDS) 〜距離行列から位置関係を再現する〜 - Qiita
    sh19910711
    sh19910711 2024/06/18
    "多次元尺度法: n個体間の非類似度または距離が与えられているとき、それらn個体の位置関係を(低次元の)座標で表現する / MDSには大きく分けて計量MDSと非計量MDSに分けられ" 2020
  • Pythonで長い会議を見える化〜特徴量mfccを採用して全面リライト〜 - Qiita

    Pythonで長い会議を見える化」シリーズ、先日の動向記事で得た知識をもとに、全面リライトしてみました。 以下のような修正を加えました。 特徴量として、フーリエ変換した周波数成分を使っていたが、人間が聴く音の特徴量として基的に利用されているMFCC(メル周波数ケプストラム係数)を採用 無音有音のクラスタリングであるVAD(Voice Activity Detector)と、有音部の話者ダイアリゼーションを区別して、段階的に処理することに変更 全体的にクラスとメソッドに書き換えて、汎用性・再利用性を向上 来、話者ダイアリゼーションには、i-vecterやx-vectorといった特徴量を使うのですが、複雑になるため、それらの基礎となるMFCCを使っています。結果として12次元のMFCCでも、十分な結果を得られることができました。 なお、MFCCについては、前回の記事でもリンクしています、

    Pythonで長い会議を見える化〜特徴量mfccを採用して全面リライト〜 - Qiita
    sh19910711
    sh19910711 2024/06/18
    "話者ダイアリゼーションには、i-vecterやx-vectorといった特徴量を使う + それらの基礎となるMFCCを使って / 12次元のMFCCでも、十分な結果 / 人間の声同士を区別するのは、ある程度は可能ですがそれほど得意では無い" 2020