2017-02-13 13 views
0

マシン学習/ Python Noob here。誰かが私に以下のコードを説明することができますか?私は下の行がどのように動作するのか分かりません。Scikitコードの説明が必要

# This line in the code below, what does it do? 
label_encoder.append(preprocessing.LabelEncoder()) 

label_encoder = [] 
X_encoded = np.empty(X.shape) 
for i,item in enumerate(X[0]): 
    if item.isdigit(): 
     X_encoded[:, i] = X[:, i] 
    else: 
     label_encoder.append(preprocessing.LabelEncoder()) 
     X_encoded[:, i] = label_encoder[-1].fit_transform(X[:, i]) 

ありがとうございます!

+0

リストに 'LabelEncoder'のインスタンスを追加します。そのインスタンスは後続の行に収まります。 (投票の移行) –

答えて

3

label_encoderはリストです。これはPythonでは任意の種類のオブジェクトを格納するために使用できる順序付けされたコレクションです。それは間違って、それはlabel_encoders、plurlであるはずです。

我々が最初に空を作成:

label_encoders = [] 

私たちが列

if item.isdigit(): 
    # Don't need to endcode. 
else: 
    # Do need to encode. 

をエンコードする必要性が発生したときに、我々は新しいpreprocessing.LabelEncoder()オブジェクトを作成し、後で使用するために

を、それを保存
label_encoders.append(preprocessing.LabelEncoder()) 

最後に、最近作成されたLabelEncoderオブジェクト実際の列

X_encoded[:, i] = label_encoders[-1].fit_transform(X[:, i]) 

をエンコードするために私たちは、ほぼ確実に、将来的にテストしたり、新たな生産データが発生しますから、どこかを新しいLabelEncoderオブジェクトを格納するためにを必要、そのデータをエンコードする必要があります。同じように私たちはトレーニングデータをコード化しました。

私はおそらく

label_encoders = [] 
X_encoded = np.empty(X.shape) 
for i, item in enumerate(X[0]): 
    if item.isdigit(): 
     X_encoded[:, i] = X[:, i] 
    else: 
     label_encoder = preprocessing.LabelEncoder() 
     X_encoded[:, i] = label_encoder.fit_transform(X[:, i]) 
     label_encoders.append(label_encoder) 

ありがとうやや明確である、このようなコードを書いているだろう!私はpreprocessing.LabelEncoder()がリストを返したことに気付かなかった。

これはありません。リストは

label_encoders = [] 

ラインから来preprocessing.LabelEncoder()呼び出しがLabelEncoder型オブジェクトを返します。これにより、fit_transformおよびtransformメソッドを使用して機能をエンコードすることができるsklearn transformation interfaceが実装されます。

+0

ありがとうございました!私はpreprocessing.LabelEncoder()がリストを返したことに気付かなかった。最終的な追加は今より意味をなさない。 – adamcamroon

+0

@adamcamroonあなたはまだ誤解があると思います。私は私の答えにもう少し説明を編集しました。 –