3

ニューラル ネットワークを使用して、シリーズ A (シリーズ A の完全な履歴がある) と、次の 30 日間のイベント E のリスト (E はリストです) に基づいて、今から 30 日後の時系列 B を予測したいと考えています。バイナリ単位の)。B は A に直線的に比例することがわかっており、i 日のイベントが発生すると (E[i] = 1)、B のスパイクがトリガーされます (比率は不明です)。(A、E、B) のタプルを含むトレーニング データがあります。フィード フォワード ネットワークでテストしましたが、うまく機能しません (適切なスパイクを予測していません)。リカレント ネットワークを使用する必要がありますか?どうすればその neurolab または pybrain を実行できますか? ありがとう。

ここで例を見ることができます。

編集: コードは少し複雑なので、ここに貼り付けることはできません。ただし、アイデアは、A + E を入力としてフィードし、B を予測することです。したがって、30 + 30 の入力ユニット、30 の出力ユニットがあり、隠れ層はありません (30 ユニットと 90 ユニットを含む 1 つの隠れ層でテストしましたが、そうではありません。パフォーマンスが向上します)。時系列データは上記のリンクに示されています。(赤線がB、Aはスパイクのない似たような形です)。

A_list, B_list, E_list = input()
X, Y = [A + E for A, E in zip(A_list, E_list)], B_list
indim, outdim = len(X[0]), len(Y[0])
network = nl.net.newp([[-1, 1]]*indim, outdim, transf=nl.trans.LogSig())    

errors = network.train(norm_X(X),                                                        
                       norm_Y(Y),
                       epochs=4000, show=1000,
                       lr=0.01)

ここで、norm_X(X) は X を [-1,1] にスケーリングし、norm_Y は Y を [0, 1] にスケーリングします。

4

1 に答える 1

3

train_bfgsneurolab.net.newffを使用してみてください:

network = nl.net.newff([[-1, 1]]*indim, [10,outdim], transf=nl.trans.LogSig()) 
network.trainf = nl.train.train_bfgs
network.train(...)

次のような定期的なネットワークを使用してください:http://packages.python.org/neurolab/ex_newelm.html

于 2012-09-22T08:17:53.487 に答える