2017-12-12 5 views
0

私は線形回帰のための価格設定データを用意しています。私の機能は、曜日だけで構成されています。私の目標は価格です。私はsklearn 4.2.1の例のように自分のデータの辞書のリストを作成しました。したがって、データ構造は[{'day': 'friday', 'price': 59}, {'day': 'saturday', 'price': 65}などです。sklearnを使用して週のダミー変数を作成するDictVectorizer

上記のリンクごとにsklearnのDictVectorizerを使用して、曜日をダミーコードし、データ構造をリスト(Sklearn LinearRegressionに適したリスト)に変換しました。私はデータを見ることがvec_fitを印刷するとき

vec = DictVectorizer() 
vec_fit = vec.fit_transform(my_data).toarray() 

、私は以下の出力を取得します。

[[ 0. 0. 0. ..., 0. 1. 59.] 
[ 0. 0. 0. ..., 0. 0. 92.] 
[ 1. 0. 0. ..., 0. 0. 92.] 
..., 
[ 0. 0. 1. ..., 0. 0. 181.] 
[ 0. 0. 0. ..., 0. 0. 181.] 
[ 0. 1. 0. ..., 0. 0. 181.]] 

誰かが(a)は...,を説明することができますし、(b)は曜日の7つのダミー変数が存在しない理由?私の例では、...,は日曜日と木曜日をカバーするようです。

私の機能(sklearn 4.2.1)を確認するには、get_feature_names関数を使用しました。

vec.get_feature_names() 

[u'day=Friday', u'day=Monday', u'day=Saturday', u'day=Sunday', 
u'day=Thursday', u'day=Tuesday', u'day=Wednesday', 'price'] 

出力からわかるように、すべての日が適切に表現されているようです。私はまだ、上記の(a)と(b)を混同しています。 FYI、私がするときLinearRegression私は6つの係数を得る(私は7、毎週の1つを期待しています)ありがとう。

答えて

3

これらは存在しますが、vec_fitを印刷すると表示されません。大きな配列を印刷するときのnumpyのデフォルトの振る舞いです。データの最初の3列と最後の3列だけが最初の3行と最後の3行とともに表示されます。

[[ 0. 0. 0. ..., 0. 1. 59.] 
[ 0. 0. 0. ..., 0. 0. 92.] 
[ 1. 0. 0. ..., 0. 0. 92.] 
..., <=== This is for all intermediate data values present. Just not printed 
[ 0. 0. 1. ..., 0. 0. 181.] 
[ 0. 0. 0. ..., 0. 0. 181.] 
[ 0. 1. 0. ..., 0. 0. 181.]] 

アレイの形状を確認することで、すべてのデータが存在することを確認できます。

print(vec_fit.shape) 

(n_rows, 8)である必要があります。最初の値(n_rows)はすべてのサンプルをカバーします。 2番目の値(8)は、7つのダミー変数と1つのターゲット変数をカバーします。あなたは完全な配列を印刷したい場合は

、その後、これらの質問を参照してください。

+0

素敵な答えのVivek :) –

+0

ありがとうございました!投稿後、私の心の中にその考えが浮かびました。しかし、私は10個の機能を持つテストファイルを作った。そして、私が印刷したとき、 '...、'なしですべての10個に対して0または1を得た。 – vintagedeek

+0

@vintagedeekテストのリストまたはnumpy配列のリストを作ったか? –

関連する問題