私は現在、scikit learn
のpreprocessing
機能を見ています。
各関数のセットアップコードを完全に書き出す必要がないように、前処理関数の事前定義されたリストをループできるかどうかを知りたいと思いました。
たとえば、1つの関数のコード:
T = preprocessing.MinMaxScaler()
X_train = T.fit_transform(X_train)
X_test = T.transform(X_test)
さまざまな前処理関数を使用するために、事前定義されたリストをループしようとしています。
pre_proc = ['Normalizer','MaxAbsScaler','MinMaxScaler','KernelCenterer', 'StandardScaler']
for proc in pre_proc:
T = 'preprocessing.'+ proc +'()'
X_train = T.fit_transform(X_train)
X_test = T.transform(X_test)
現在、これは驚くべきことではない次のものを生み出しています:
--> 37 X_train = T.fit_transform(X_train)
38 X_test = T.transform(X_test)
39 for i in np.arange(startpt_c,endpt_c, step_c):
AttributeError: 'str' object has no attribute 'fit_transform'
メソッドを呼び出すには、文字列を正しいオブジェクトタイプとして使用する必要があると思います。つまり、関数として認識させる必要があります。
ループを使用するという私の目的を満たす方法はありますか?
セットアップ:Windows 8
、64 bit
をPython 3
介しJupyter notebook
て実行されているマシンAzure ML studio
。
問題はコードのこの行にあります
pre_proc = ['Normalizer','MaxAbsScaler','MinMaxScaler','KernelCenterer', ...
ここで行っているのは、pre_proc
基本的に文字列のリストであるリストを作成することです。Pythonは、あなたが実際にそれらを関数であることを意味していることを知りません。したがって、を使おうとするとT = 'preprocessing.'+ proc +'()'
、Pythonはエラーをスローし、それT
は文字列であり、fit_transform
。などのメソッドを持っていないと言います。したがって、文字列を使用する代わりに、実際の関数名を使用します。つまり、引用符で囲まないでください。そのようにそれらを使用してください-
pre_proc = [preprocessing.Normalizer, preprocessing.MaxAbsScalar, preprocessing.MinMaxScalar, preprocessing.KernelCenterer, preprocessing.StandardScaler]
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加