2016-04-02 12 views
0

パンダのデータフレームの2つの列をnumpy配列に変換して、機械学習の問題のための機能とラベルとして使用しました。どのように対応する機能を元に戻すことができますか?

コード:

train_index, test_index = next(iter(ShuffleSplit(len(labels), train_size=0.2, test_size=0.80, random_state=42))) 

features_train, features_test, = X[train_index], X[test_index] 
labels_train, labels_test = labels[train_index], labels[test_index] 

clf = DecisionTreeClassifier() 
clf.fit(features_train, labels_train) 
pred = clf.predict(features) 
print pred 

特長は、現在、周波数カウントの配列(私はフィットし、私のオリジナルパンダのデータフレームの列を変換するために、以前のCountVectorizerを使用)です。私はpredとして保存されたラベルの完全なリストを持っていますが、私は自分のパンダのデータフレームにラベルのリストを返すことができるように、それぞれのラベルに対応する機能が欲しいです。

+0

て戻ってあなたのサンプルを変換するために使用することができ

... = vectorizer.fit_transform(...) 

それを使用しました(train and test)し、結果の値を変数features_ *に入れます。あなたのサンプル、機能を呼んでいるようです。これは機械学習の大きなノー・ノーです!フィーチャはデータセットの属性です。通常は列です。したがって、このコードを読むことは非常に混乱します。しかし、あなたが "フィーチャ"(あなたの行列(サンプル、フィーチャ)であると仮定している)を予測するので、結果の配列predを正しく並べ替えることができます。 –

+0

Hmm。私のサンプルは本質的に私の特徴です。なぜなら、私はそれらのサンプルに似ているラベル(私はそれらのサンプル/サンプルに似ています)以外の情報はありませんから、私はこのMLプロセスをサンプルを対応するラベルに保存することができます。コードを同じにして、@lejlotの答えを使用してOKにできますか? –

答えて

2

予測の順序付けは、渡されたデータと同じです(@Ulfが指摘したように、ここでは「フィーチャー」という用語を間違って使用しています)、フィーチャは行列の列です、特定のオブジェクトはcountvectorizerを使用してカウントします。観測データ、サンプルデータ、データポイントなど)は、現在あなたがフィーチャと呼んでいるものです。従って、サンプルラベルのペアを見るためには、単にそれらを一緒にzip圧縮することができます

pred = clf.predict(features) 
for sample, label in zip(features, pred): 
    print sample, label 

あなたが実際に各列の意味を回復したい場合は、あなたのCountVectorizerがあなたの男です。どこかのコードで、あなたが

vectorizer = CountVectorizer(...) 

、後でそれを作成したがここでは、2つの行のセットを取得している今、あなたは

pred = clf.predict(features) 
for sample, label in zip(features, pred): 
    print vectorizer.inverse_transform(np.array([sample])), label 
+0

ありがとうございます。サンプルは基本的に私の機能です。私はそれらに持っていたいラベル(機能/サンプルに似ています)以外に、サンプルを対応するラベルに統合する方法としてこのMLプロセスを使用しています。 OKですか? –

+0

これは、実際の問題ではなく、名前、条約に関するものです。準備できた。 – lejlot

関連する問題