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

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

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

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

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

解決済

KeyError: 'faultNumber 'の対処方法

kouji_39
kouji_39

総合スコア146

Python 3.x

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

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

1回答

0リアクション

0クリップ

294閲覧

投稿2022/08/23 09:47

1.前提・実現したいこと
「スモールデータ解析と機械学習(オーム社)」テキストで、
異常検知の勉強中です。
RData 形式の読み込みを次のアドレスからgoogleColabにとりこみました(https://dataverse.harvard.edu/dataset.xhtml?persistentId=doi:10.7910/DVN/6C3JR1)
それから、20個の異常データを生成するコードです。
コード実行後、2.発生している問題・エラーメッセージのようなエラーが出ます。
ご助言をお願いします。

2.発生している問題・エラーメッセージ
KeyError Traceback (most recent call last)
/usr/local/lib/python3.7/dist-packages/pandas/core/indexes/base.py in get_loc(self, key, method, tolerance)
3361 return self._engine.get_loc(casted_key)
3362 except KeyError as err:
-> 3363 raise KeyError(key) from err
3364
3365 if is_scalar(key) and isna(key) and not self.hasnans:

KeyError: 'faultNumber '

3.該当のソースコード

python3

i!pip install rdata import rdata import pandas as pd # RData 形式の読み込み,https://dataverse.harvard.edu/dataset.xhtml?persistentId=doi:10.7910/DVN/6C3JR1 train_parsed = rdata.parser.parse_file('/content/drive/MyDrive/(個別デレクトリィ)/TEP_FaultFree_Testing.RData') train_converted = rdata.conversion.convert(train_parsed) test_parsed = rdata.parser.parse_file('/content/drive/MyDrive/(個別デレクトリィ)/TEP_Faulty_Testing.RData') test_converted = rdata.conversion.convert(test_parsed) # csv ファイルに変換 # 異常データ test_data = pd.DataFrame(test_converted ['faulty_testing']) # 異常ごとに分割してcsv 形式で出力 for i in range(1, 21): idv_data = test_data [test_data ['faultNumber '] == i] idv_data = idv_data.iloc [0:960, 3:] title_name = 'idv '+ str(i)+ '_data.csv' idv_data.to_csv(title_name, index = False)

4.自分で調べたことや試したこと
・Google検索では、有効情報なし。

5.使っているツールのバージョンなど補足情報
開発環境:Google Colaboratory
プログラム言語:python3
OS:windows10 Home
CPU:Intel(R) Core(TM) i7-7500U CPU@2.70GHz 2.90GHz

以下のような質問にはリアクションをつけましょう

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

リアクションが多い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

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

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

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

下記のような質問は推奨されていません。

  • 間違っている
  • 質問になっていない投稿
  • スパムや攻撃的な表現を用いた投稿

適切な質問に修正を依頼しましょう。

2022/08/23 10:35

こちらの質問が他のユーザーから「やってほしいことだけを記載した丸投げの質問」という指摘を受けました。

can110

2022/08/23 10:17

'faultNumber 'だと末尾に空白文字が入っていますが、不要ではないでしょうか?
melian

2022/08/23 10:19 編集

最後にスペースが入っていますので削って下さい。 idv_data = test_data [test_data ['faultNumber '] == i]                       ^
kouji_39

2022/08/23 12:21

can110さん、melianさん、ご助言ありがとうございました。
kouji_39

2022/08/23 13:25

追加助言、ありがとうございます。 質問追加ですが、テキストp235頁の下記コードで、「T2_train, Q_train = mspc_T2Q(train_data, meanX, stdX, U, S, V)」の行で、ValueError: matrices are not alignedというエラーが出ます。 何か、ご助言いただけますでしょうか。 ## ------------------------6.8 ------------------------ # 正常データを用いたモデルの学習 meanX, stdX, U, S, V = mspc_ref(train_data, numPC = 17) # 管理限界の決定 T2_train, Q_train = mspc_T2Q(train_data, meanX, stdX, U, S, V) CL_T2_mspc, CL_Q_mspc = mspc_CL(T2, Q, alpha = 0.99) # 異常データのT2 統計量とQ 統計量の計算 T2_mspc, Q_mspc = mspc_T2Q(faulty_data, meanX, stdX, U, S, V)
kouji_39

2022/08/23 13:28

下記が、mspcの定義ファイルです。 ============↓ import math import numpy as np from scale import autoscale, scaling def mspc_ref(X, numPC): """ SDV を用いてMSPC モデルを学習します パラメータ ---------- X: 正常データ行列 numPC: 採用する主成分数 戻り値 ------- meanX: 正常データの平均 stdX: 正常データの標準偏差 U: 左特異ベクトル S: 特異値 V: 右特異ベクトル """ # 標準化 X, meanX, stdX = autoscale(X) # PCA U, S, V = np.linalg.svd(X) U = U[:,: numPC] S = np.diag(S[: numPC]) V = V[:,: numPC] return meanX, stdX, U, S, V def mspc_T2Q(X, meanX, stdX, U, S, V): """ 学習させたMSPCモデルより, 監視対象サンプルの T2, Q 統計量を計算します. パラメータ ---------- X: 監視対象データ meanX: 正常データの平均 stdX: 正常データの標準偏差 U: 左特異ベクトル S: 特異値 V: 右特異ベクトル 戻り値 ------- T2: T2 統計量 Q: Q 統計量 """ # 学習データに合わせて標準化する X = scaling(X, meanX, stdX) I = np.eye(X.shape[1]) # T2,Q の計算 T2 = np.diag(X @(V @ np.linalg.inv(S @ S)@ V.T)@ X.T) Q = np.diag(X @(I - V @ V.T)@ X.T) return T2, Q def cont_T2Q(X, meanX, stdX, U, S, V): """ パラメータ ---------- X: 監視対象サンプル meanX: 正常データの平均 stdX: 正常データの標準偏差 U: 左特異ベクトル S: 特異値 V: 右特異ベクトル 戻り値 ------- cont_T2: T2 統計量の寄与 cont_Q: Q 統計量の寄与 """ X = scaling(X, meanX, stdX) # 寄与の計算 cont_T2 = np.multiply(X, X @ V @ np.linalg.inv(S @ S/X.shape [0])@ V.T) cont_Q = np.power(X @(np.eye(X.shape [1]) - V @ V.T), 2) return cont_T2, cont_Q def mspc_CL(T2, Q, alpha=0.99): """ T2 統計量とQ 統計量の管理限界を計算します パラメータ ---------- T2: 管理限界決定用T2 統計量 Q: 管理限界決定用Q 統計量 alpha: 信頼区間(デフォルト99 %) 戻り値 ------- meanX: 正常データの平均 stdX: 正常データの標準偏差 U: 左特異ベクトル S: 特異値 V: 右特異ベクトル """ sort_T2 = sorted(T2) CL_T2 = T2[math.floor(alpha * len(train_data))] sort_Q = sorted(Q) CL_Q = Q[math.floor(alpha * len(train_data))]
jbpb0

2022/08/24 00:41 編集

この質問とは別の内容なので、この質問はご自身で書いた回答で「自己解決」にして、追加の分は別の質問にしてください 【追記】 https://www.ohmsha.co.jp/book/9784274227783/#anchor3 の「ダウンロード」から書籍のコードがダウンロードできますが、それを使った場合でも書籍235ページのコードで同じエラーが出ますでしょうか? ダウンロードしたコードではエラーが出ないなら、質問者さんが実行したコードとダウンロードしたコードの相違点を調べてみてください

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

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

アカウントをお持ちの方は

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

ただいまの回答率
86.12%

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

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

質問する

関連した質問

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

Python 3.x

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

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。