タグ

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

  • scikit-learnで多項式回帰にスパースモデリングを試す - Qiita

    はじめに スパースモデリングは、解のスパース性を仮定して、少ないデータからでもデータの関係をモデル化できるようにする手法です。大量のデータがあることを前提にデータの関係をモデル化するディープラーニングとは対照的なものです。 理解を深めるため、scikit-learnで「ほとんどの係数がゼロの多項式関数」と解のスパース性を仮定した多項式回帰の問題を解いてみます。 この記事でやること スパースモデリングの概要説明 多項式回帰を、sklearn.linear_modelのRegressors with variable selectionを使って解く Google Colaboratoryでこの記事に用いたソースコードの全文を実行できます (ただし、題材となる多項式関数はランダムに決定されるため、この記事と完全に同一とはなりません) この記事でやらないこと 詳細な数学的解説 最新アルゴリズム(各

    scikit-learnで多項式回帰にスパースモデリングを試す - Qiita
    sh19910711
    sh19910711 2024/06/18
    "スパースモデリング: 解のスパース性を仮定して、少ないデータからでもデータの関係をモデル化 / Elastic Netは、(Lasso回帰で使われる)L1正則化項に加え、(Ridge回帰で使われる)L2正則化項も加えたもの" 2021
  • scikit-learn数値系特徴量の前処理まとめ(Feature Scaling) - Qiita

    KaggleのTitanicチャレンジで前処理をスムーズにできないかを調べていたら、知らないことも多く勉強となりました。もともと、標準化と正規化という単語すら毎回思い出している程度の理解度だったのでいい機会となりました。標準化と正規化程度しか知らなかったですが、意外と処理方法が多く異常値への考慮で多くの知見を得ることができました。 scikit-learnの数値系特徴量に対する前処理(preprocessing)モジュールを整理しています。基的にscikit-learn ユーザガイド 6.3. Preprocessing data中心です。当はカテゴリ型変数もやろうと思ったのですが、数値系だけで書くこと多すぎたので他記事に書くと思います。 scikit-learnのユーザガイドは素晴らしいのだけど、一方で単語で理解に時間がかかることも多いですね(私の英語力や数理的能力不足)。 カテゴリ

    scikit-learn数値系特徴量の前処理まとめ(Feature Scaling) - Qiita
    sh19910711
    sh19910711 2024/06/18
    "scikit-learnのpreprocessingモジュールに機械学習向け前処理用関数があり / 正規化(normalization): 特徴量の値の範囲を一定の範囲におさめる変換 / 標準化(standardization): 特徴量の平均を0、分散を1にする変換" 2021
  • カテゴリ変数系特徴量の前処理(scikit-learnとcategory_encoders) - Qiita

    カテゴリ変数系特徴量の前処理について書きます。記事「scikit-learn数値系特徴量の前処理まとめ(Feature Scaling)」のカテゴリ変数版です。調べてみるとこちらも色々とやり方あることにびっくり。 前処理種類一覧 カテゴリ変数系特徴量に対する前処理種類の一覧です。有名どころだけを一覧化しています(Entity Embeddingは有名でもない?)。 種類 内容

    カテゴリ変数系特徴量の前処理(scikit-learnとcategory_encoders) - Qiita
    sh19910711
    sh19910711 2024/06/18
    "Target Encoding: ラベルごとの目的変数平均値を割当 + 目的変数の情報を使っているのでリークが起きやすい / Scikit-Learnには該当関数が2021年5月時点でありませんが、category_encodersにはTarget Encoderがあります" 2021
  • FeatureUnionで特徴量結合するシンプルな方法 - Qiita

    Scikit-LearnのFeatureUnion関数が初見で結構わかりにくかったのでメモしておきます。「Marking imputed values」を見ていて?となり、学習しました。 これは特徴量エンジニアリング時に特徴量を一括処理をしてまとめてくれます。Piplelineモジュールに含まれており、有名なPipeline関数の兄弟みたいなものです。 FeatureUnionの簡易版でmaike_union関数があります。使うときは、どちらがいいか検討すべきですね。 シンプルな使い方 irisデータを読み込み、1列目の「sepal length (cm)」だけをDataframeに設定します。DataFrame化せずにNumpy配列のままでもOKですが、単純に私がNumpy慣れしていないので入れているだけです。 import pandas as pd from sklearn impor

    FeatureUnionで特徴量結合するシンプルな方法 - Qiita
    sh19910711
    sh19910711 2024/06/18
    "FeatureUnion: 特徴量エンジニアリング時に特徴量を一括処理 + Piplelineモジュールに含まれており、有名なPipeline関数の兄弟みたいなもの / FeatureUnionにはn_jobsというパラメータがあり並列処理が可能" 2021
  • scikit-learnで単変量特徴量選択をやってみた - Qiita

    特徴量の選択方法についてまとめてみました 特徴量の選択法の一つとして、単変量特徴量選択(univariate feature selection)という手法があり、scikit-learnのSelectKBestとSelectPercentileで実装が可能である。 Kaggle Grandmasterに学ぶ 機械学習 実践アプローチではこれら2つの手法を組み込んだラッパークラスが紹介されており、使ってみた。 # 単変量特徴量選択(univariate feature selection)のラッパークラスを作成 class UnivariateFeatureSelection: def __init__(self, n_features, problem_type, scoring): if problem_type == 'classification': valid_scoring =

    scikit-learnで単変量特徴量選択をやってみた - Qiita
    sh19910711
    sh19910711 2024/06/18
    "特徴量の選択法の一つとして、単変量特徴量選択(univariate feature selection)という手法があり、scikit-learnのSelectKBestとSelectPercentileで実装が可能 / これら2つの手法を組み込んだラッパークラスが紹介されており" 2022
  • scikit-learnのデータセットfetch_lfw_people - Qiita

    from sklearn.datasets import fetch_lfw_people import numpy as np %matplotlib inline import matplotlib.pyplot as plt fetch_lfw_people(*, data_home=None, funneled=True, resize=0.5, min_faces_per_person=0, color=False, slice_=(slice(70, 195, None), slice(78, 172, None)), download_if_missing=True, return_X_y=False) 引数を大雑把に説明 resizeは各顔写真の比率で元のデータからの比率となるらしい。defaultは0.5 min_faces_per_personは同一人物の写真が最低何枚

    scikit-learnのデータセットfetch_lfw_people - Qiita
    sh19910711
    sh19910711 2024/06/18
    "このデータセットには1、2枚しか画像がない人物の写真が大量にある / 主成分分析は分散が大きい方向から順番に主成分を取り出す / inverse_transformメソッドを使えば、主成分の重ね合わせから画像を再構成できる" 2022
  • データフレーム出力可能なsklearnライクな変数選択器を実装してみる - Qiita

    やりたいこと 自作のfeature selectorをパイプラインに組み込み、前処理から学習を一括管理したい。 その際、削除された変数を確認したいので、データフレームで出力できるようにする。 最低限の実装 今回は練習用に、同じ値の要素が閾値以上の列を削除するfeature selectorを実装してみる。 似たような機能を持つsklearnのVarianceThreshold1のソースコード2を参考に作成した。 データフレームでの出力方法以外は、すでに解説記事3があるのでそちらを参照して頂きたい。 まずは最低限の実装を示す。 こちらの実装では、fitメソッドの引数Xはデータフレームでなければならない。 from scipy.stats import mode from sklearn.base import BaseEstimator from sklearn.feature_select

    データフレーム出力可能なsklearnライクな変数選択器を実装してみる - Qiita
    sh19910711
    sh19910711 2024/06/18
    "自作のfeature selectorをパイプラインに組み込み、前処理から学習を一括管理したい / 同じ値の要素が閾値以上の列を削除するfeature selectorを実装してみる / 似たような機能を持つsklearnのVarianceThresholdのソースコードを参考" 2023
  • ガウス過程回帰とデータ数・次元数・計算時間 - Qiita

    背景 ガウス過程回帰はデータ数nが増えると、n×nの行列計算が必要になりメモリや計算量を圧迫してしまうという欠点が存在する。 実務上どの程度影響するのかを把握するため、疑似データでモデル構築の時間を計測した結果をまとめる。 環境 Google Colab 実験コード import time import warnings import matplotlib.pyplot as plt import numpy as np import pandas as pd from sklearn.gaussian_process import GaussianProcessRegressor from sklearn.gaussian_process.kernels import WhiteKernel, RBF, ConstantKernel, Matern, DotProduct warning

    ガウス過程回帰とデータ数・次元数・計算時間 - Qiita
    sh19910711
    sh19910711 2024/06/18
    "ガウス過程回帰: データ数nが増えると、n×nの行列計算が必要になりメモリや計算量を圧迫してしまうという欠点 / よりデータ数・次元数が多い場合はGPyTorchというGPUで演算可能なライブラリを利用することも検討" 2023
  • SimpleImputerを使った欠損値の補完方法のまとめ - Qiita

    機械学習で使うデータは、多くの場合欠損値を含みます。scikit-learnではすべての項目に値が設定されていると仮定されているので、欠損値と相性が悪いです。 あまりにも欠損値が多い列は列ごと捨ててしまうこともありますが、一部だけ欠損している場合だともったいないですよね。なんらかの値で補完する場合の備忘録として、sklearn.impute.SimpleImputerの使い方をまとめました。 SimpleImputerの使い方 デフォルト 欠損値 np.nan を 平均値で補完します import numpy as np import pandas as pd from sklearn.impute import SimpleImputer imputer = SimpleImputer() # すべての列を補完する場合 # この方法だと列名が消えてしまうので、元に戻してあげる必要がありま

    SimpleImputerを使った欠損値の補完方法のまとめ - Qiita
    sh19910711
    sh19910711 2024/06/18
    "欠損値が多い列は列ごと捨ててしまうこともありますが、一部だけ欠損している場合だともったいない / SimpleImputer: 欠損値 np.nan を 平均値で補完 + np.nan 以外にも様々な値を欠損値として指定することができます"
  • Scikit-learn v1.4で強化された新機能 謎のmetadata routingを探る - Qiita

    機械学習やってる人なら必ず使うsklearn、リリースハイライトの記事はとても面白いので毎回楽しみに読んでいます。 v1.3でmetadata routingという仕組みが導入されました。出てきた頃はサンプルコードも少なく、日語の情報も少ないのでよくわからんが大体こういうものかなと浅い理解で済ませていたのですが、よく調べると自分が理解していたものと全然違いました。公式ドキュメントのサンプルコードはやや難しいので、極限まで簡単な例で記事にしてみます。 from sklearn.linear_model import LinearRegression import matplotlib.pyplot as plt x = [[1], [2], [3], [4], [5]] y = [1.1, 1.9, 3.3, 3.7, 5] lr = LinearRegression() lr.fit(x

    Scikit-learn v1.4で強化された新機能 謎のmetadata routingを探る - Qiita
    sh19910711
    sh19910711 2024/06/18
    "v1.3でmetadata routingという仕組みが導入 / sample_weightは回帰のハイパーパラメーターではない / パラメーターはLinearRegression()でインスタンスを作るときに与えるので、fit時に与えるこれはデータ + メタデータと呼んでいる"
  • PythonとQuartoでデータ分析レポートを速攻作成 - Qiita

    はじめに Quartoを使ってみたらPythonでのデータ分析レポート作成がとても便利だったので紹介します。 想定読者: Pythonデータ分析をしている方、これから始めようとしている方。(Pythonおよびマークダウンを書いたことがあると想定します) なおR Markdown+RStudioと非常に似ていますが、R/RStudioをインストールしなくても使える点が便利です。 Quartoとは 公式サイト解説(抜粋・翻訳) QuartoはPandocを使って科学技術ドキュメントを生成するオープンソースのシステムです MarkdownまたはJupyter notebookからドキュメントを生成できます Python, R, Juliaに対応 HTML, PDF, MS Word, ePubで出力可能 Jupyterlabによるレポート作成(HTML出力)よりも優れている点 ソースコードが短

    PythonとQuartoでデータ分析レポートを速攻作成 - Qiita
    sh19910711
    sh19910711 2024/06/17
    "Quartoを使ってみたらPythonでのデータ分析レポート作成がとても便利だった / R Markdown+RStudioと非常に似ていますが、R/RStudioをインストールしなくても使える点が便利" 2022
  • pydanticを1行の入力チェック関数として使う - Qiita

    この記事について 入力ライブラリのPydanticで、(クラス定義を通さずに)関数で値をチェックする方法を紹介します 検証環境のバージョン Python 3.10 pydantic 1.10.7 pydanticって何? 入力をチェックするPythonのライブラリです # ユーザー情報クラスを定義する class UserInfo(BaseModel): user_name: str password: str # もし入力パラメータが{"user_name": "文字列", "password": "文字列"}の形式でなければ例外を投げる UserInfo.parse_raw(input) BaseModelを継承したクラスの型ヒントから、値を入力チェックすることができます。 この記事で実現したいこと、実現すること 実現したいこと JSONのような入力チェックなら標準の使い方そのままでい

    pydanticを1行の入力チェック関数として使う - Qiita
    sh19910711
    sh19910711 2024/06/17
    "プリミティブなデータに対して直接入力チェックを使いたい / これをpydanticでチェックするためにclassを書きたくありません / DataModelクラスをpydanticで使えるクラスに変換してくれる関数" 2023
  • Pydanticのデータ定義をJSONで書く色々な方法 - Qiita

    はじめに この記事では、JSON形式でスキーマを定義して、PyDanticのクラスを作成する方法を2つ紹介します。 型名と引数を書いたJSONをPyDanticのクラスに変換する JSONSchema形式で書いたJSONをPyDanticのクラスに変換する どういうメリットと、どういうメリットがあるの? JSONで定義するメリットとしては、定義をアプリの外部に置くことができるので、 利用者の数が変わる昼と夜で閾値を変えたい クラウド側に定義ファイルを置きたい といった要望があった時に対応できることが考えられます。 デメリットとしては、IDEから定義が全く見えないせいで自動補完が効かず、ツールとしての恩恵を受けにくいことです。 型名と引数を書いたJSONをPyDanticのクラスに変換する この方法では、スキーマには、 型の名前(キー名: type, str型) Fieldクラスに渡す引数(

    Pydanticのデータ定義をJSONで書く色々な方法 - Qiita
    sh19910711
    sh19910711 2024/06/17
    "JSON形式でスキーマを定義して、PyDanticのクラスを作成する / 利用者の数が変わる昼と夜で閾値を変えたい + クラウド側に定義ファイルを置きたい / 自動補完が効かず、ツールとしての恩恵を受けにくい" 2023
  • toml 形式で作ったテーブルの配列を Pydantic でバリデーションして受け取る - Qiita

    背景 toml 形式のファイル シミュレーションコードの入力部として、toml 形式の入力ファイルを考えている。特に、可変長個のリストを受け渡し可能にして、柔軟なシミュレーションを行うことを想定している。たとえば、以下のような構成である。 [[floor]] name = "groundfloor" floor_type = "middle" ceilingheight = 2.8 [[floor.room]] area = 18.0 windows = [0, 1, 2, 3] [[floor.room]] area = 20.0 windows = [4, 5] [[floor]] name = "firstfloor" floor_type = "middle" ceilingheight = 2.4 [[floor.room]] area = 35.0 windows = [6,

    toml 形式で作ったテーブルの配列を Pydantic でバリデーションして受け取る - Qiita
    sh19910711
    sh19910711 2024/06/17
    "Pydantic で TOML のテーブルの配列を扱う / 入力のチェックを充実させるには、Annotated に AfterValidator, BeforeValidator を加えたり、model_validator を使ってひとつのパラメータに閉じない形で、入力のチェックや変換を行う"
  • pythonでギブス・サンプリングによるベイズ線形回帰を実装してみた - Qiita

    はじめに 記事は簡単な線形回帰モデルのベイズ推定に関するものである。具体的にはギブス・サンプリングを用いてマルコフ連鎖モンテカルロ法(通称:MCMC)をpythonで実装を行なった。pythonでのMCMCの実行は、pymcというモジュールによるものが有名であるが、今回は敢えてpymcを用いずにnumpyとscipyのみで実装を試みた。この記事を書くにあたって古澄さんの『ベイズ計算統計学』(朝倉書店)を大いに参考にした。 理論 実装の前に簡単ではあるが理論を振り返る。推定したい線形回帰モデルは y_i=\boldsymbol{x}_{i}'\boldsymbol{\beta}+u_i, \ \ u_i\sim N(0,\sigma^2) \ \ (i=1,\cdots,n) と表される($y_i$は非説明変数、$\boldsymbol{x}$はk×1の説明変数ベクトルで、$u_i$は平均

    pythonでギブス・サンプリングによるベイズ線形回帰を実装してみた - Qiita
    sh19910711
    sh19910711 2024/06/17
    "擬似データを生成して、そのデータからベイズ推定を行い結果の分布が元のパラメーターに近づくか検証 / pymcを用いずにnumpyとscipyのみで実装を試み / 古澄さんの『ベイズ計算統計学』(朝倉書店)を大いに参考" 2017
  • Sample Adaptive MCMC - Qiita

    1. Overview "Sample Adaptive MCMC$^{[1]}$"という新しいMCMCをNIPS2019のProseedingで見つけたので実験してみた。Numpyroには既に実装済み。興味を持たれた方は是非論文を見てください。 MCMC法では提案分布の調整が重要だが、手法はサンプル値に基づいてパラメトリック提案分布(正規分布等)のパラメータ(平均、共分散行列)を適応的に調整する手法である。また、有効サンプルサイズを稼ぎやすい手法である。 [1] Michael Zhu, Sample Adaptive MCMC (https://papers.nips.cc/paper/9107-sample-adaptive-mcmc) 2. Algorithm アルゴリズムの概要は、$N$個のサンプル値から平均$μ$と共分散行列$Σ$を計算し、この平均$μ$と共分散行列$Σ$をパ

    Sample Adaptive MCMC - Qiita
    sh19910711
    sh19910711 2024/06/17
    "MCMC法では提案分布の調整が重要だが、本手法はサンプル値に基づいてパラメトリック提案分布(正規分布等)のパラメータ(平均、共分散行列)を適応的に調整 / Numpyroには既に実装済み" 2020
  • Pythonによるマルコフ連鎖モンテカルロシミュレーション - Qiita

    Pythonによるマルコフ連鎖モンテカルロシミュレーション モデル関数のパラメータの最適解の推定方法は、モデルとサンプルの残差を最小にするようにモデルパラメーターを決定する最小二乗法や、ある確率分布からサンプルを生み出すと考えられる尤もらしさ(尤度関数)を最大化するようにモデルパラメーターを決定する最尤法などあるが、今回はマルコフ連鎖モンテカルロ法(MCMC : Markov chain Monte Carlo methods)によるサンプリング手法を用いて、サンプルとモデルの差により得られる尤度関数を最適化することにより、局所最適解を探索する回帰分析の手法を紹介する。 MCMC法(Markov chain Monte Carlo methods)とは MCMCは多次元の確率密度関数を事前分布として持つ標準集団に、詳細つり合い条件が成り立つことを仮定してマルコフ連鎖を繰り返すことで、サンプ

    Pythonによるマルコフ連鎖モンテカルロシミュレーション - Qiita
    sh19910711
    sh19910711 2024/06/17
    "MCMC: 多次元の確率密度関数を事前分布として持つ標準集団に詳細つり合い条件が成り立つことを仮定 / EMアルゴリズムにおけるEステップの積分計算をモンテカルロ法を用いてかつマルコフ性を仮定してサンプリング" 2021
  • pytestでSparkアプリケーションのテストを書いてみる - Qiita

    Sparkで動くアプリケーションをPythonで書いたので、pytestでテストしたい! 大規模データでもテストしたいので、YARNクラスタにも投げたい! ある意味 pytestに入門してみたメモ の続編です。 pytestプラグインとかあるみたいですが 今回は手の内が分かったうえで自分でいろいろやりたかったので、前回の復習も兼ねて自前で作ってみることにします。 spark-submitコマンドを使わずにSparkにアクセス Spark向けに書いたスクリプトを実行する時、普通はspark-submitコマンドを使うと思いますが、今回はpytest経由で実行したいので、spark-submitを使わずに普通のPythonからpysparkモジュールを呼びたいわけです。 そのためには、来spark-submitがやっている諸々の設定を自分でやればいいはず。spark-submitの処理を追い

    pytestでSparkアプリケーションのテストを書いてみる - Qiita
    sh19910711
    sh19910711 2024/06/17
    "大規模データでもテストしたいので、YARNクラスタにも投げたい / spark_session: conftest.pyに移して、scope="session"と変更すれば、複数のスクリプトを回すときでも全体で1回だけ初期化することになるはず" 2018
  • 【FastAPI】テストケース毎に独立したDBデータを使用する(GitHub Actions付き) - Qiita

    ORMと連携した機能のテストを行う際、テストケース(= テスト関数)毎にクリーンなデータベースが欲しい(テストケース間の依存関係が生まれてほしくない)。 この点についていい感じの方法が実現できたためご紹介する。 参考(一部重複内容あり) FastAPIでテスト用のクリーンなDBを作成してpytestでAPIUnittestを行う 記事のソースコード:skokado/fastapi-tutorial 環境 Python: 3.8 fastapi==0.68.2 SQLAlchemy==1.4.25 SQLAlchemy-Utils==0.37.8 pytest==6.2.5 factory-boy==3.2.0 アプリケーション準備 ユーザ認証とブログ管理を行う簡単なアプリケーションを用意する。 ※アプリケーション体のコードは割愛するためリポジトリを参照 ※ディレクトリ構成 . ├──

    【FastAPI】テストケース毎に独立したDBデータを使用する(GitHub Actions付き) - Qiita
    sh19910711
    sh19910711 2024/06/17
    "クリーンなデータベースが欲しい / テスト用データベースを使用する設定をconftest.pyに仕込んでおき、データベースをfixtureとして使用できるようにしておく / ポイントはdbフィクスチャのスコープをfunctionとしている点" 2021
  • Pythonデータ加工での自動テスト: pandas & pytest - Qiita

    Pythonデータ加工での自動テスト: pandas & pytest やること pandasによるデータ加工をpytestで自動テストする 対象読者 Python, pandasでのデータ加工を普段やってる人 データ加工処理の品質を向上させたい人 背景 データ分析の現場ではテストがほとんどなくて、処理がちゃんと正しく動いているのか自信を持てなかった。 SIerの現場でテストをした際、「これ、人間がやる必要ある…?」と感じた。 を読むと、世のプログラマーは「テストコード」なるものを書き、「自動テスト」をしているそうではないか。 Pythonではどのように自動テストをするのか...?pytestだ!! お断り とりあえずpytestを導入するということをテーマとした記事です。あんまりスマートなコードではないです。 そもそも筆者は探り探りでやっているので、ベストプラクティスはわかっていないで

    Pythonデータ加工での自動テスト: pandas & pytest - Qiita
    sh19910711
    sh19910711 2024/06/16
    "テストがほとんどなくて、処理がちゃんと正しく動いているのか自信を持てなかった / テストしやすさを基準にコードを書く / 数ヶ月後に自分のコードを読むと絶望するのが常だが、テストコードがあるとだいぶマシ" 2023