問題タブ [scipy]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
python - 既製のライブラリを使用しない Python のニューラル ネットワーク...つまり、第一原理から..ヘルプ!
私はPythonでプログラミングを学ぼうとしていますが、多方向連想記憶と再帰接続などを特徴とするニューラルネットワークのセットアップの締め切りに向けて取り組んでいます. これらすべての数学は、さまざまなテキストやソースからアクセスできますが (いわばアクセス可能です)、Python の初心者として (そして職業としてのプログラミング)、私はちょっと宇宙に浮かんでいて、試してみると大空を探しています。物事を「実装」する!! ab initio でニューラル ネットワークを構築するための優れたオンライン チュートリアルに関する情報は、非常に高く評価されます :)
その間、私は Python によって引き起こされた傷を看護するために MatLab ユーザーとして副業をしています :)
python - Scipy loadmatは整数のみをロードしますか?
次の2行だけで、すべてをuint8タイプとしてしかロードできないようです。
import scipy.io X1 = scipy.io.loadmat('one.mat')
すべての倍精度数が変換されます。scipyの作成者は、浮動小数点数がはるかに一般的であるという事実を認識していると思います...
だから、私は何をすべきですか?ありがとうございました!
python - Python/SciPy のピーク検出アルゴリズム
一次導関数のゼロクロッシングなどを見つけることで自分で何かを書くことができますが、標準ライブラリに含まれるのに十分一般的な関数のようです。誰か知っていますか?
私の特定のアプリケーションは 2D 配列ですが、通常は FFT などでピークを見つけるために使用されます。
具体的には、この種の問題では、複数の強いピークがあり、その後、ノイズが原因である無視されるべき小さな「ピーク」がたくさんあります。これらは単なる例です。私の実際のデータではありません:
1 次元ピーク:
2 次元ピーク:
ピーク検出アルゴリズムは、これらのピークの位置 (値だけでなく) を見つけ、理想的には、おそらく二次補間などを使用して、最大値のインデックスだけでなく、真のサンプル間のピークを見つけます。
通常、いくつかの強いピークのみを気にするため、特定のしきい値を超えているか、振幅によってランク付けされた順序付けられたリストの最初のnピークであるために選択されます。
私が言ったように、私はこのようなものを自分で書く方法を知っています。うまく機能することが知られている既存の関数またはパッケージがあるかどうかを尋ねているだけです。
アップデート:
MATLAB スクリプトを変換したところ、1 次元の場合は問題なく動作しましたが、改善される可能性があります。
更新された更新:
sixtenbeは 1 次元の場合のより良いバージョンを作成しました。
python - Python での主成分分析
次元削減に主成分分析 (PCA) を使用したいと思います。numpy または scipy には既にそれがありますか、それとも を使用して自分でロールバックする必要がありnumpy.linalg.eigh
ますか?
入力データが非常に高次元 (〜 460 次元) であるため、特異値分解 (SVD) を使用したくないだけなので、SVD は共分散行列の固有ベクトルを計算するよりも遅くなると思います。
どのメソッドをいつ使用するかについてすでに正しい決定を下し、おそらく私が知らない他の最適化を行う、事前に作成されたデバッグ済みの実装を見つけたいと思っていました。
python - フィールドのラプラシアンを計算するには?
scipy.ndimage.convolveを使用して 2D フィールドAのラプラシアンを計算しようとしています。
しかし、これは私に正しい答えを与えていないようです。私が間違っているアイデアはありますか、またはnumpyでラプラシアンを計算するより良い方法はありますか?
python - 数値安定性の問題をデバッグするための戦略?
私はPython用のウィルソンのスペクトル密度因数分解アルゴリズム[1]の実装を書き込もうとしています。このアルゴリズムは、[QxQ]行列関数を反復的に平方根に因数分解します(これは、スペクトル密度行列のニュートンラプソン平方根ファインダーの拡張のようなものです)。
問題は、私の実装がサイズ45x45以下の行列に対してのみ収束することです。したがって、20回の反復後、行列間の二乗差の合計は約2.45e-13になります。ただし、サイズ46x46の入力を行うと、100回程度の反復まで収束しません。47x47以上の場合、行列は収束しません。エラーは約100回の反復で100から1000の間で変動し、その後非常に急速に大きくなり始めます。
このようなものをデバッグするにはどうすればよいですか?気が狂うような特定のポイントはないようで、行列が大きすぎて実際に手動で計算を試みることはできません。誰かがこのような奇妙な数値のバグを見つけるためのヒント/チュートリアル/ヒューリスティックを持っていますか?
私はこれまでこのようなことを扱ったことがありませんが、あなたの何人かが持っていることを願っています...
ありがとう、-ダン
[1]GTウィルソン。「マトリックススペクトル密度の因数分解」。SIAMJ.Appl。数学(第23巻、第4号、1972年12月)
python - これら 2 つの数学関数が同じ結果を返さないのはなぜですか?
Numpy で関数を高速化するために、ループの代わりにファンシー インデックスを使用しようとしています。私の知る限りでは、派手なインデックス作成バージョンを正しく実装しました。問題は、2 つの関数 (ループとファンシー インデックス) が同じ結果を返さないことです。理由はわかりません。より小さな配列 (たとえば、20 x 20 x 20) を使用した場合でも、関数は同じ結果を返すことに注意してください。
以下に、エラーを再現するために必要なすべてを含めました。関数が同じ結果を返す場合、行find_maxdiff(data) - find_maxdiff_fancy(data)
はゼロでいっぱいの配列を返す必要があります。
python - NumPy 配列で操作を実行するが、これらの操作から対角線に沿って値をマスキングする
配列に対して操作を実行できるため、対角線以外はすべて計算されます。
NaN 値を回避しますが、すべての応答で対角線の値ゼロを保持します
python - NumPyとSciPyのどれくらいがCにありますか?
NumPyおよび/またはSciPyの一部はC/C ++でプログラムされていますか?
また、PythonからCを呼び出すオーバーヘッドは、JavaやC#からCを呼び出すオーバーヘッドとどのように比較されますか?
科学アプリでは、PythonがJavaやC#よりも優れたオプションであるかどうか疑問に思っています。
シュートアウトを見ると、Pythonは大幅に負けています。しかし、これは、これらのベンチマークでサードパーティのライブラリを使用していないためだと思います。