タグ

num*に関するsh19910711のブックマーク (132)

  • Julia によるレコメンドアルゴリズム実装 - Speaker Deck

    2018/10/04 MACHINE LEARNING Meetup KANSAI #3

    Julia によるレコメンドアルゴリズム実装 - Speaker Deck
    sh19910711
    sh19910711 2024/10/13
    "BPMF: MAP推定ではなくベイズ推定 + 因子行列のパラメータにも事前分布を設定 + ハイパーパラメータチューニングの手間が掛からない / 数値計算部分だけJulia + DB入出力等はPython" '18
  • Juliaのプロジェクト環境とパッケージ

    Juliaを使った開発では、自作パッケージを作り、それらを複数組み合わせながら開発を行うことが多くあります。その時、パッケージ、プロジェクト、環境の意味を理解していないと混乱することがあります。 その時は、https://docs.julialang.org/en/v1/manual/code-loading/を読んで下さい。 プロジェクト環境 (Project environment) プロジェクト環境とは、プロジェクトファイルProject.toml、オプションとしてManifest.tomlが含まれるディレクトリです。Project.tomlには、そのプロジェクト (以下プロジェクトA)が直接依存するパッケージやバージョンの範囲が記述されています。それらのパッケージは、別のパッケージに依存してます。これらを間接的な依存関係と呼びます。 ここで、プロジェクトファイルを含むディレクトリは

    Juliaのプロジェクト環境とパッケージ
    sh19910711
    sh19910711 2024/10/12
    "グローバル環境: 特定のプロジェクト環境がアクティブになっていない場合にデフォルトとして使用される環境 + Julia 1.9の場合、~/.julia/environments/v1.9/Project.tomlで管理" '23
  • Juliaの型推論について – isaで条件分岐したブロックにおける推論

    こんにちは、門脇宗平(Shuhei Kadowaki)と言います。 GitHubではaviateskというハンドルで活動していて、JuliaのIDE(Juno, julia-vscode)のメンテナなどをやっています。 最近Juliaの型推論システムを借用してJuliaプログラムのソースコードに対する静的な型解析を行うツールの開発[1]をしているのですが、その過程でJuliaの型推論について、その中でも特にisaを使って条件分岐した先のブロックにおける推論ついて少し知見ができたので共有します。 1. Juliaの型推論のflow-sensitivity まず前提としてJuliaの型推論は"flow-sensitive"に行われます。ここで"flow-sensitive"とはどういうことかというと、Juliaはコードをコンパイルするとき、プログラム中の様々なコードに対してその実行コンテクスト

    Juliaの型推論について – isaで条件分岐したブロックにおける推論
    sh19910711
    sh19910711 2024/10/12
    "Juliaはコードをコンパイルするとき、プログラム中の様々なコードに対してその実行コンテクストに応じた型を自動で推論する / プログラムの実行を仮想的にシミュレート" '20
  • Juliaで機械学習:Flux.jlではなくLux.jlを使ってみる - Qiita

    Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article? Julia機械学習をする場合、Flux.jlが有名かと思います。一方で、最近では、Lux.jlというパッケージもあります。名前もよく似ていますし使い方も似ている気もしますから、この二つは一体何なのだろうか?と思った方もいるかと思います。 この記事では、Flux.jlの違いを見るとともに、Lux.jlによる関数フィッティングをやってみることにします。 まず、Flux.jlで関数フィッティングをした記事は、Julia機械学習:Flux.jlで自由自在にオリジナルレイヤーを組んでみよう 2023年版にありますので、Flux.jlに興味があ

    Juliaで機械学習:Flux.jlではなくLux.jlを使ってみる - Qiita
    sh19910711
    sh19910711 2024/10/09
    "Lux.jl: 機械学習のモデルに関するパッケージ + 他のパッケージと組み合わせて学習を行う / モデルは学習可能なパラメータを持っていない / モデルにパラメータを流し込むことでモデルが値を出力"
  • Pythonによる車輪形倒立振子の運動方程式の導出 - The Negligible Lab

    はじめに P計画 前々回,前回にて台車形倒立振子の運動方程式を導出し,シミュレーション,アニメーション,線形化,最適レギュレータの作り方について書き散らして参りました。記事以後,いよいよ台車形から車輪形の倒立振子に歩みを進め,運動方程式の導出,シミュレーション,アニメーションについて書いていきます。ただし記事では紙面(?)の都合上,SymPyにおいて力学系をシステマティックに取り扱うsympy.physics.mechanicsというモジュールを用いた運動方程式の導出に焦点を当て,シミュレーションとアニメーションは次回に譲りたいと思います。 まだまだシミュレーションでしかありませんが,ここで制御設計についての理解を深めてから実機の設計・製作,ソフトウェア実装を進め,願わくば年末頃には実際の車輪形倒立振子を立てることができればと夢想しております。 完成したアニメーション 運動方程式を導出

    Pythonによる車輪形倒立振子の運動方程式の導出 - The Negligible Lab
    sh19910711
    sh19910711 2024/10/06
    "sympy.physics.mechanicsというモジュールを用いた運動方程式の導出 / 実機の設計・製作,ソフトウェア実装を進め,願わくば年末頃には実際の車輪形倒立振子を立てることができればと夢想" '23
  • FortranからJuliaへの自動変換を目指して

    FortranとJuliaはどちらも科学技術計算に強い言語ですが, Juliaのモダンな開発環境や様々な魅力*に惹かれ, Fortranで書かれた既存のコードをJuliaに移植したいと考えている人も多いのではないでしょうか. 移植にあたっては永井さんのFortranから始めるJuliaが参考になります. このようにFortranとJuliaの両方を理解できる人間からすれば手作業で移植する方が安心感がありますが, 時間がかかるので何らかのツールに頼りたくなります. Juliaで書かれた簡単なツールなどもありますが, より使いやすく, より複雑な置換操作に対応したいと考え, ブラウザ上で利用できる移植支援ツールを新たに開発しました. 作っているもの 正規表現や名前付きキャプチャグループ等を用いて, FortranからJuliaへの移植を支援するためのスクリプトを開発しています. 完成には程遠い

    FortranからJuliaへの自動変換を目指して
    sh19910711
    sh19910711 2024/09/15
    "Juliaのモダンな開発環境や様々な魅力*に惹かれ, Fortranで書かれた既存のコードをJuliaに移植したい / Fortranから始めるJuliaが参考" '23
  • MATLABで微分方程式を解いてみよう。 - Qiita

    11回目のMATLAB記事です。 今回と次回に分けて、「微分方程式」を扱いたいと思います。 微分方程式は、この世に存在する現象(ここでは自然現象や物理現象のこと)を理解、および記述するために、人間が生み出した方法の「一つ」です1。 微分方程式は物理学をはじめ、多くの分野で活躍しています。 例えば、力学においては乗り物の動き、投げたボールの動き等、これらの動きを全て微分方程式で記述します。 他にも、微分方程式の応用例は枚挙にいとまがありません。 記事は前編として、まず微分方程式の基事項を簡単に説明します。 その後、微分方程式をMATLABで定義する方法と、MATLABでの解き方を説明します。 微分方程式 微分方程式とは、ある関数 $y$ とその導関数 $y^{'}$ を含む方程式のことです。 例えば、ある方程式が $x$ の関数 $y=y(x)$ と、その導関数 $\frac{dy}{d

    MATLABで微分方程式を解いてみよう。 - Qiita
    sh19910711
    sh19910711 2024/06/27
    "微分方程式: 現象(ここでは自然現象や物理現象のこと)を理解、および記述するために、人間が生み出した方法の一つ / ある関数 𝑦 とその導関数 𝑦′ を含む方程式 + 方程式をみたす関数を求める" 2022
  • 決定木の理論とフルスクラッチ実装とその解説 - tomtom58’s blog

    最初に 決定木の理論とフルスクラッチ実装とその解説というと、既に使い古された話題の様に感じてしまいますが、今回の記事から派生して、ランダムフォレスト、GBDT、XGboost(LightGBMは扱わないつもり)、因果木、因果フォレスト、ランダムフォレスト-learnerの理論とできる部分はフルスクラッチ実装、めんどくさいものは、理論と解説に抑えて扱っていこうと考えており、そのまず初めとして、決定木自体の理論に触れないことは、できないなと思い、決定木の記事を書こうと思った次第です。(めんどくさくなって書かないパターンも全然あり得るのでご了承ください)他の記事との差別化は、数式を含めた解説と、フルスクラッチ実装のコードと数式を絡めた解説みたいな感じで、初心者に超優しい解説記事みたいな感じで仕上げて見せると、書き始めは思っております。書いていくうちに、初心者に超優しくないじゃんみたいなことになっ

    決定木の理論とフルスクラッチ実装とその解説 - tomtom58’s blog
    sh19910711
    sh19910711 2024/06/24
    "ジニ不純度: ランダムに選ばれた要素が誤って分類される確率 + 値が0に近いほどノードの純度が高い / エントロピー: データの無秩序さや不確実性を測る指標 + 最大値は log2⁡(𝑐)ですべてのクラスが均等に分布"
  • Juliaでの自動微分を使って行列で微分してみる - Qiita

    Juliaでの自動微分について調べてみる 前半とJuliaでの自動微分について調べてみる 後半で、Juliaでの自動微分について調べました。この記事では、スカラー関数の行列微分をやってみることにします。 特に、自分で作った型に対して微分を定義して、それをZygoteの自動微分を使ってやってもらうことにします。 行列での微分の定義 ある関数$f$が、$n \times n$行列$A$に依存しているとします。例えば、

    Juliaでの自動微分を使って行列で微分してみる - Qiita
    sh19910711
    sh19910711 2024/06/22
    "自分で作った型に対して微分を定義 / 行列の微分といっても要素ごとに考えれば通常の微分と変わりません / テンソルは扱うのが面倒そうですが、幸いなことに、pullbackは𝜕𝑙/𝜕𝑥ですから行列です" 2022
  • 一般化線形混合(効果)モデル(GLMM/GLME)をMATLABで簡単に実装 (1) - Qiita

    はじめに データサイエンスをする人ならきっと知っているであろう 「データ解析のための統計モデリング」 通称、「みどり」を読んだ後の結論としては: 何でもアホみたいに線形回帰すな!データの質を考えろ GLMM以上じゃないと実際問題使えないよ ということだと思います。(私見ですが同意者は多いと思う) もちろん、GLMMとして線形回帰を最終的に選択するパターンもあるのでしょうけど、データ解析をする人間のはしくれとしては、GLMMはおさえておきたいところです。 この「みどり」は名著ですが、実際にコードを手を動かして解析を進めていくと「??」が出てくるので、7章の「一般化線形混合モデル」におけるモヤモヤ点を解説しながら、MATLABで簡単に実装できることをお見せできればと思います。 今回はGLM(一般化線形モデル)まで実装して、次の記事でGLMMまでやります。 統計モデリング データの取得方法

    一般化線形混合(効果)モデル(GLMM/GLME)をMATLABで簡単に実装 (1) - Qiita
    sh19910711
    sh19910711 2024/06/21
    "「みどり本」は名著ですが、実際にコードを手を動かして解析を進めていくと「??」が出てくる / 「𝑁個中の𝑦個が生きている」というモデルなので、確率分布としては二項分布" 2019
  • Julia tips #9: CVODE (Sundials.jl) の数値積分が終わらない時の回避方法 - 元バイオ系

    追記 どうやら、せっかく設定したhminは内部でフラグチェックが行われないようです。 solve関数のmaxitersオプションで対応するしかないかもしれません。 また後程検証してみます。 以下は検証が十分ではありません。 ソルバ自体の動作に支障はありませんが、期待通りに動いているかは検証する必要があります。 そのことをご理解いただいたうえでご覧ください。 2018/03/08当時の環境 - Julia 0.6.2 - Sundials 1.2.0 事の発端 ODEモデルのパラメータ推定をしていたら、非線形なモデルだとどうしても途中でソルバがフリーズしてしまう...。 原因はソルバが無限に数値積分のステップを続けてしまうことでした。 数値計算に疎いのでどうしてそんなことになってしまうのかはちゃんとわかっていないのですが、stiffなODEを解こうとすると、数値積分時に細かいステップを刻まな

    Julia tips #9: CVODE (Sundials.jl) の数値積分が終わらない時の回避方法 - 元バイオ系
    sh19910711
    sh19910711 2024/06/21
    "Sundials: 常微分方程式のソルバ、CVODEを作っているところ / stiffな問題をCVODEに解かせたら他のソルバより圧倒的に高速で数値積分してくれます / CVODEとよく比較されるソルバにLSODAっていうのがあり" 2018
  • Sageで独自の対象を定義する方法 - Qiita

    注意 適当に調べたので,間違っているところがあるかもしれない. TL;DR SageあるいはSageMathとは,Pythonを拡張して実装された計算代数システムの一つで,Mathematicaのフリー版代替を目指して様々なオープンソースソフトウェアとして公開されている計算代数ライブラリを統合した開発環境でもある. 対象の構造と独自の定義 数学で扱われる対象の構造は,プログラミング言語で扱う型の構造(例えば継承と派生.これ以外にも色々と構造があったりするので,十分複雑だけれども…)よりも複雑なので,これを取り扱うためにSageでは独自の型変換機構(cercion system)を実装している. そのため,独自に新しい対象を定義したい場合は,この実装のルールに従って定義すると,型変換機構の恩恵を受けることができる. SageはPythonの拡張なので,もちろんPython言語として実装しても

    Sageで独自の対象を定義する方法 - Qiita
    sh19910711
    sh19910711 2024/06/19
    "数学で扱われる対象の構造は,プログラミング言語で扱う型の構造よりも複雑 / 一定のルールに従ってコードを記述することにより,Sageにおける型変換機構を利用しつつ独自の対象を実装することができる" 2016
  • Lights OutをSagemathで解く(その1) - Qiita

    Light Outゲーム ライツアウトはタカラから発売されているゲームですが。スマホのアプリでも多数あるようです。私はiPhoneの"25bit"というアプリを使ってます。 Light Outと線形代数 Light Outと線形代数は相性が良いようで検索すると多くの記事が見つかります。Qiitaにも以下の記事が見つかりました。 Lights Outを線形代数で解く(まえすとろ) 今回は以下の英語の論文を参考にしてLights OutをSagemathで解いて行こうと思います。ここでは主に5 x 5の大きさを考えますが、プログラム的にはM x Nの一般的なものを考慮して作ります。 Turning Lights Out with Linear Algebra(MARLOW ANDERSON) 順番としては以下のように考えて行きます。 各々のボタンが押されたときにどのライトが反転するのかを定義す

    Lights OutをSagemathで解く(その1) - Qiita
    sh19910711
    sh19910711 2024/06/19
    "Light Outと線形代数は相性が良い / 各々のボタンが押されたときにどのライトが反転するのかを定義する行列 / 答えを得るためにはその逆行列を求めればよいが、5 x 5の場合は正則でないので工夫が必要" 2022
  • Pythonで最小二乗法を使って指定の点を通るベジェ曲線を近似する - Qiita

    きっかけは、自分が過去に書いたプログラムを整理していると、ベジェ曲線のカーブフィッティング(曲線あてはめ)をするJavaScriptが出てきて、懐かしいなーと思って読んでみたのですが数式が難しすぎて全く理解できませんでした。 何でこんな謎の数式で近似できるねん、昔の俺すげーな。 どうやら最小二乗法を使って近似していたようです、復習がてらPythonで説明したいと思います。 参考書をひっぱりだして勉強しなおしました、ちなみに参考文献は金谷健一先生の「これなら分かる最適化数学―基礎原理から計算手法まで」です。非常に解りやすく解説されているでオススメです。 最小二乗法とは何なのか? 最小二乗法とは、複雑なデータや関数を近似する代表的な手法で、データ解析における最も重要な基礎となります。 適用範囲は非常に広く、微分可能であればどんな関数も近似が可能という実用性と美しさを兼ね備えた手法です。 例え

    Pythonで最小二乗法を使って指定の点を通るベジェ曲線を近似する - Qiita
    sh19910711
    sh19910711 2024/06/19
    "過去に書いたプログラムを整理していると、ベジェ曲線のカーブフィッティング(曲線あてはめ)をするJavaScriptが出てきて、懐かしいなーと思って読んでみたのですが数式が難しすぎて全く理解できませんでした" 2017
  • JuliaでSymPyを使って回路のインピーダンスを計算してみる - Qiita

    この記事はJulia Advent Calendar 2017の21日目の記事です。 やりたいこと SymPyを使って、回路インピーダンスの周波数特性のボード線図を描いてみます。 JuliaにはSymPy.jlというパッケージがあり、Pythonの代数計算ライブラリSymPyを簡単に使うことができます。SymPyPythonではなくJuliaで実行するメリットは今のところわかりませんが、Juliaで計算した結果と一緒に扱いたい場合には、SymPy.jlを使うと便利だと思っています。 今回の例は簡単な内容ですが、もうちょっと式が複雑になると、SymPyのLambdifyが非常に便利なので、Lambdifyは便利だよ、という意味もあります。 また、実行結果はGitHubのJupyter notebookを参照ください。 RLC直列共振回路 今回考える回路は、RLC直列共振回路です。回路図は以

    JuliaでSymPyを使って回路のインピーダンスを計算してみる - Qiita
    sh19910711
    sh19910711 2024/06/19
    "SymPy.jl: Pythonの代数計算ライブラリSymPyを簡単に使うことができます / Juliaで計算した結果と一緒に扱いたい場合には、SymPy.jlを使うと便利 / 式が複雑になると、SymPyのLambdifyが非常に便利" 2017
  • Sympyによる因数分解 - Qiita

    >>> A1=x**2-y**2 >>> sympy.factor(A1) (x - y)*(x + y) >>> A2 = x**2+3*x >>> sympy.factor(A2) x*(x + 3) >>> sympy.factor(2*x**2 + 3*x + 1) (x + 1)*(2*x + 1)

    Sympyによる因数分解 - Qiita
    sh19910711
    sh19910711 2024/06/19
    "sympyのfactor関数を使えば、整式を因数分解してくれる / 無理数を含む式には因数分解してくれない / expand関数を使えば、整式を展開してくれる / Rational関数を使って分数を有理数として表現" 2018
  • Sympyを使った運動方程式の導出と線形化 - Qiita

    はじめに SympyPythonの記号計算パッケージとして有名ですが、ラグランジュ法(ラグランジュの運動方程式)を用いて質点系の運動モデルを導出できる機能についてはあまり知られていないようです。 少し調べてみたところなかなか便利そうなので、この記事では覚え書きも兼ねて、最適制御や強化学習の題材としてよく使われる「倒立振子(Inverted Pendulum)」を例に、運動方程式を導出して線形化するまでの一連の方法について説明してみたいと思います。 なお、この記事ではPython3.6 + Sympy1.2を使用しています。 倒立振子とは 倒立振子は、重心が支点より高い位置にある、つまり逆立ち状態の振り子のことを指します。特に制御工学では、振り子が台車に取り付けられた「台車駆動型倒立振子(CartPole)」を安定化させる問題がよく扱われます。問題設定にはいくつかバリエーションがありますが

    Sympyを使った運動方程式の導出と線形化 - Qiita
    sh19910711
    sh19910711 2024/06/19
    "Sympy: ラグランジュ法(ラグランジュの運動方程式)を用いて質点系の運動モデルを導出できる / よく使われる「倒立振子(Inverted Pendulum)」を例に、運動方程式を導出して線形化するまでの一連の方法" 2018
  • Sympyで包絡線を解いてmatplotlibで可視化 - Qiita

    環境 Windows 7 Anaconda 4.3.34 python 3.6.4 何の話か 直線群の包絡線の曲線をSympyを使って求め、matplotlibを使って可視化してみたPythonコードを、自分語りに交えて紹介します。 導入 多湖 輝氏のシリーズに「頭の体操」というものがあります。なるほど面白い問題からなぞなぞ、ただの屁理屈まで幅広いひねった問題があったように思います。 例:問「先に家を出て東に向かった兄を追って弟が家を出たが、弟は西に向かった、何故か」答「自転車がある駐車場が西にあるから」 僕が子供のころ父が買っていて読んでいたのですが、そんななかふと気になる問題がありました。 ちょっと具体的な文は忘れたのですが、要約すると 「定規だけ(つまり直線だけ)で円を描け」 というものでした。答えは 正方形を用意し、各辺を細かく等分したメモリを打つ 左下にP、右下にQを置く PとQ

    Sympyで包絡線を解いてmatplotlibで可視化 - Qiita
    sh19910711
    sh19910711 2024/06/19
    "直線群の包絡線の曲線をSympyを使って求め、matplotlibを使って可視化 / 高校の時はPythonというかコンピュータで記号演算するという発想がなかったので、これを手で計算していました" 2018
  • (Juliaで)後退差分法で修正節点法でRLC直列回路を解析する - Qiita

    やりたいこと JuliaでSPICEみたいな回路シミュレーションをしてみます。今回はタイトルの通り、RLC直列回路を修正節点法で求めて、一次の後退差分法で演算します。また、修正節点法との比較として閉路解析法でも同じ回路を後退差分法で演算します。 今回の特徴としては、SymPyを使って代数をそのまま計算したところで、Julia+SymPyだと式通りの計算ができるのでなかなか面白いかなと思います。 参考図書 [1] 書籍:電子回路シミュレーション [2] 論文:パワーエレクトロニクスを対象としたリアルタイム・シミュレータに関する研究 上記の2つの参考図書は、SPICEを理解するためには非常に良いと思います。修正節点法に関しては、基的には[2]の48ページ目くらいに記載の通り計算をしました。また、[1]も非常にわかりやすい書籍だと思います。閉路解析法は、適当に直感で作りました。 閉路解析法の場

    (Juliaで)後退差分法で修正節点法でRLC直列回路を解析する - Qiita
    sh19910711
    sh19910711 2024/06/19
    "JuliaでSPICEみたいな回路シミュレーション / SymPyを使って代数をそのまま計算したところで、Julia+SymPyだと式通りの計算ができるのでなかなか面白い / 計算は遅いので、lambdifyを使えば、若干速くなるかも" 2018
  • コンパクトスキームはなぜPadé(パデ)スキームと呼ばれるか - Qiita

    Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article?

    コンパクトスキームはなぜPadé(パデ)スキームと呼ばれるか - Qiita
    sh19910711
    sh19910711 2024/06/19
    "数値シミュレーションにおいて微分値が解析的に求められることは滅多にないため,計算機を用いて近似的に計算する / 無限小というのが曲者で,計算機では表現できない + 近似的に計算する必要がある" 2019