0
我目前正在看scikit learn
的preprocessing
功能。如何使用for循環在python3中使用不同的預處理函數?
我想知道是否可以遍歷預定義的預處理函數列表,以便我不必爲每個函數完整寫出設置代碼。
E.g.對於一個功能的代碼:
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 = [preprocessing.Normalizer,preprocessing.MaxAbsScalar,preprocessing.MinMaxScalar,...]'? –
列出不像'[Normalizer(),MaxAbsScaler(),MinMaxScaler(),KernelCenterer(),...]等名稱的實例。你甚至可以使用'dict'作爲名字。 –
此外,將循環內部的名稱'X_test'和'X_train'更改爲其他內容,因爲它會在下次迭代循環時產生錯誤。 –