質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
87.20%
Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

受付中

遺伝的アルゴリズム、deap eaSimpleに関するエラー、slice

Masakuni
Masakuni

総合スコア0

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

0回答

0評価

2クリップ

1326閲覧

投稿2019/05/02 09:41

遺伝的アルゴリズムで特徴量を生成しようと試みています。
直接の問題点としてinvalid_indがslice(None,None,None)になっているのかどうか、またなっているとしたら何が問題なのか理解できていません。
最終的には遺伝的アルゴリズムの適用に対してどこが間違っているかを理解したいです。

参考にしたサイトはこちらです
遺伝的プログラミングによる特徴量生成

# 進化の実行 # 交叉確率50%、突然変異確率10%、10世代まで進化 start_time = time.time() pop, log = algorithms.eaSimple(pop, toolbox, 0.5, 0.1, 10, stats=mstats, halloffame=hof, verbose=True) end_time = time.time()

上のコマンドを実行すると下記のようなエラーが出ます

TypeError Traceback (most recent call last) <ipython-input-45-6e36a1a1e9f9> in <module> 2 # 交叉確率50%、突然変異確率10%、10世代まで進化 3 #start_time = time.time() ----> 4 pop, log = algorithms.eaSimple(pop, toolbox, 0.5, 0.1, 10, stats=mstats, halloffame=hof, verbose=True) 5 #end_time = time.time() /anaconda3/lib/python3.7/site-packages/deap/algorithms.py in eaSimple(population, toolbox, cxpb, mutpb, ngen, stats, halloffame, verbose) 149 invalid_ind = [ind for ind in population if not ind.fitness.valid] 150 fitnesses = toolbox.map(toolbox.evaluate, invalid_ind) --> 151 for ind, fit in zip(invalid_ind, fitnesses): 152 ind.fitness.values = fit 153 <ipython-input-17-6b7270f13b1a> in eval_genfeat(individual) 3 def eval_genfeat(individual): 4 func = toolbox.compile(expr=individual) ----> 5 features_train = [X_train[:,i] for i in range(n_features)] 6 new_feat_train = func(*features_train) 7 X_train_tmp = np.c_[X_train, new_feat_train] <ipython-input-17-6b7270f13b1a> in <listcomp>(.0) 3 def eval_genfeat(individual): 4 func = toolbox.compile(expr=individual) ----> 5 features_train = [X_train[:,i] for i in range(n_features)] 6 new_feat_train = func(*features_train) 7 X_train_tmp = np.c_[X_train, new_feat_train] /anaconda3/lib/python3.7/site-packages/pandas/core/frame.py in __getitem__(self, key) 2925 if self.columns.nlevels > 1: 2926 return self._getitem_multilevel(key) -> 2927 indexer = self.columns.get_loc(key) 2928 if is_integer(indexer): 2929 indexer = [indexer] /anaconda3/lib/python3.7/site-packages/pandas/core/indexes/base.py in get_loc(self, key, method, tolerance) 2655 'backfill or nearest lookups') 2656 try: -> 2657 return self._engine.get_loc(key) 2658 except KeyError: 2659 return self._engine.get_loc(self._maybe_cast_indexer(key)) pandas/_libs/index.pyx in pandas._libs.index.IndexEngine.get_loc() pandas/_libs/index.pyx in pandas._libs.index.IndexEngine.get_loc() TypeError: '(slice(None, None, None), 0)' is an invalid key
invalid_ind = [ind for ind in population if not ind.fitness.valid] fitnesses = toolbox.map(toolbox.evaluate, invalid_ind) for ind, fit in zip(invalid_ind, fitnesses): ind.fitness.values = fit

ここの3行目の invalid_indがslice(None,None,None)になっているために起こっていると思います。

invalid_indを出力したところ

[[<deap.gp.Primitive at 0x102b261d8>, <deap.gp.Primitive at 0x102b265e8>, <deap.gp.Primitive at 0x102b261d8>, <deap.gp.Terminal at 0x1a186c29d8>, <deap.gp.Primitive at 0x1a186b9f98>, <deap.gp.Terminal at 0x1a186d6048>, <deap.gp.Terminal at 0x1a186c2d80>], [<deap.gp.Primitive at 0x102b265e8>,        ・        ・        ・

となっています。
またtype(invalid_ind)はlistでした。

長くなりましたがよろしくお願い致します。

良い質問の評価を上げる

以下のような質問は評価を上げましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

気になる質問をクリップする

クリップした質問は、後からいつでもマイページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

  • プログラミングに関係のない質問
  • やってほしいことだけを記載した丸投げの質問
  • 問題・課題が含まれていない質問
  • 意図的に内容が抹消された質問
  • 過去に投稿した質問と同じ内容の質問
  • 広告と受け取られるような投稿

評価を下げると、トップページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

yamato_user
yamato_user

2019/05/14 06:36

結局何が聞きたいのかわかりません
Masakuni
Masakuni

2019/05/14 07:45

エラーの解消方法が知りたいです。 エラーを解消し遺伝的アルゴリズムで特徴量生成を行いたいです。

まだ回答がついていません

会員登録して回答してみよう

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
87.20%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問

同じタグがついた質問を見る

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。