回答編集履歴

7 説明を詳しく

hayataka2049

hayataka2049 score 19216

2018/05/02 01:48  投稿

tracebackによるとforest.predict(X_test1)でX_test1の値がヘンなので、バリデーションで落ちています。X_testを確認してください。
### 追記
落ち着いて読み返してみたら、
```python
X_test = np.empty((45, 2), dtype='float32') # 未初期化なのでNanなどが入るときがある。文句は言えない
for i in range(1, 45):
   X = feature_df03.ix[i, :]
   X = X.reshape(1, -1)
   X = pca.transform(X)
   X = lda.transform(X)
   np.append(X_test, X) # 返り値を捨ててるので単に無意味(捨ててなくても無意味そうだけど・・・)
# X_testは未初期化のまま
# nanなどが入ったまま分ける!
X_test1 = X_test[:15, :]
y_test1 = y_test[:15]
X_test2 = X_test[15:30, :]
y_test2 = y_test[15:30]
X_test3 = X_test[30:45, :]
y_test3 = y_test[30:45]
```
やりたいことは想像できなくはありませんが、動きません。はい。
 
リストと同じ感覚で、空リストを作る→appendしていくという処理を書きたかったのですよね? 残念ながら、np.empty()はshapeだけ与えた引数通り、中身はまったく不定の配列を作ってしまいます。当然nan等も含まれる場合があります。そしてnp.append()は配列に値をstackした結果を返し、元の配列は変更しません。  
 
np.append(X_test, X)では、feature_df03.ixから読み込んだデータを次元削減したものをX_testに代入したいんですよね? 恐らくX_test[i-1] = Xとすれば(決してうまい処理ではないけど)意図した通りの挙動になると思います。
うまい処理としては、これくらいで良いと思います。
```python
X = np.array(feature_df03[1:45])
X_test = lda.transform(pca.transform(X))
```
そのままだと動かないかもしれません。適宜書き換えてください・・・。
6 修正

hayataka2049

hayataka2049 score 19216

2018/05/01 19:57  投稿

tracebackによるとforest.predict(X_test1)でX_test1の値がヘンなので、バリデーションで落ちています。X_testを確認してください。
### 追記
落ち着いて読み返してみたら、
```python
X_test = np.empty((45, 2), dtype='float32') # 未初期化なのでNanなどが入るときがある。文句は言えない
for i in range(1, 45):
   X = feature_df03.ix[i, :]
   X = X.reshape(1, -1)
   X = pca.transform(X)
   X = lda.transform(X)
   np.append(X_test, X) # 返り値を捨ててるので単に無意味(捨ててなくても無意味そうだけど・・・)
# X_testは未初期化のまま
# nanなどが入ったまま分ける!
X_test1 = X_test[:15, :]
y_test1 = y_test[:15]
X_test2 = X_test[15:30, :]
y_test2 = y_test[15:30]
X_test3 = X_test[30:45, :]
y_test3 = y_test[30:45]
```
やりたいことは想像できなくはありませんが、動きません。はい。
恐らくX_test[i-1] = Xとすれば(決してうまい処理ではないけど)意図した通りの挙動になると思います。
np.append(X_test, X)では、feature_df03.ixから読み込んだデータを次元削減したものをX_testに代入したいんですよね? 恐らくX_test[i-1] = Xとすれば(決してうまい処理ではないけど)意図した通りの挙動になると思います。
うまい処理としては、これくらいで良いと思います。
```python
X = np.array(feature_df03[1:45])
X_test = lda.transform(pca.transform(X))
```
そのままだと動かないかもしれません。適宜書き換えてください・・・。
5 修正

hayataka2049

hayataka2049 score 19216

2018/05/01 19:51  投稿

tracebackによるとforest.predict(X_test1)でX_test1の値がヘンなので、バリデーションで落ちています。X_testを確認してください。
### 追記
落ち着いて読み返してみたら、
```python
X_test = np.empty((45, 2), dtype='float32') # 未初期化なのでNanなどが入るときがある。文句は言えない
for i in range(1, 45):
   X = feature_df03.ix[i, :]
   X = X.reshape(1, -1)
   X = pca.transform(X)
   X = lda.transform(X)
   np.append(X_test, X) # 返り値を捨ててるので単に無意味(捨ててなくても無意味そうだけど・・・)
# X_testは未初期化のまま
# nanなどが入ったまま分ける!
X_test1 = X_test[:15, :]
y_test1 = y_test[:15]
X_test2 = X_test[15:30, :]
y_test2 = y_test[15:30]
X_test3 = X_test[30:45, :]
y_test3 = y_test[30:45]
```
やりたいことは想像できなくはありませんが、動きません。はい。
恐らくX_test[i] = Xとすれば(決してうまい処理ではないけど)意図した通りの挙動になると思います。
恐らくX_test[i-1] = Xとすれば(決してうまい処理ではないけど)意図した通りの挙動になると思います。
4 追記

hayataka2049

hayataka2049 score 19216

2018/05/01 19:50  投稿

tracebackによるとforest.predict(X_test1)でX_test1の値がヘンなので、バリデーションで落ちています。X_testを確認してください。
### 追記
落ち着いて読み返してみたら、
```python
X_test = np.empty((45, 2), dtype='float32') # 未初期化なのでNanなどが入るときがある。文句は言えない
for i in range(1, 45):
   X = feature_df03.ix[i, :]
   X = X.reshape(1, -1)
   X = pca.transform(X)
   X = lda.transform(X)
   np.append(X_test, X) # 返り値を捨ててるので単に無意味(捨ててなくても無意味そうだけど・・・)
# X_testは未初期化のまま
# nanなどが入ったまま分ける!
X_test1 = X_test[:15, :]
y_test1 = y_test[:15]
X_test2 = X_test[15:30, :]
y_test2 = y_test[15:30]
X_test3 = X_test[30:45, :]
y_test3 = y_test[30:45]
```
やりたいことは想像できなくはありませんが、動きません。はい。
やりたいことは想像できなくはありませんが、動きません。はい。
恐らくX_test[i] = Xとすれば(決してうまい処理ではないけど)意図した通りの挙動になると思います。
3 追記

hayataka2049

hayataka2049 score 19216

2018/05/01 19:47  投稿

tracebackによるとforest.predict(X_test1)でX_test1の値がヘンなので、バリデーションで落ちています。X_testを確認してください。
tracebackによるとforest.predict(X_test1)でX_test1の値がヘンなので、バリデーションで落ちています。X_testを確認してください。
### 追記
落ち着いて読み返してみたら、
```python
X_test = np.empty((45, 2), dtype='float32') # 未初期化なのでNanなどが入るときがある。文句は言えない
for i in range(1, 45):
   X = feature_df03.ix[i, :]
   X = X.reshape(1, -1)
   X = pca.transform(X)
   X = lda.transform(X)
   np.append(X_test, X) # 返り値を捨ててるので単に無意味(捨ててなくても無意味そうだけど・・・)
# X_testは未初期化のまま
# nanなどが入ったまま分ける!
X_test1 = X_test[:15, :]
y_test1 = y_test[:15]
X_test2 = X_test[15:30, :]
y_test2 = y_test[15:30]
X_test3 = X_test[30:45, :]
y_test3 = y_test[30:45]
```
やりたいことは想像できなくはありませんが、動きません。はい。
2 追記

hayataka2049

hayataka2049 score 19216

2018/05/01 19:44  投稿

tracebackによるとforest.predict(X_test1)でX_test1の値がヘンなので、バリデーションで落ちています。X_testを確認してください。
1 誤字修正

hayataka2049

hayataka2049 score 19216

2018/05/01 15:59  投稿

思考するエンジニアのためのQ&Aサイト「teratail」について詳しく知る