2017-05-04 13 views
1

私は持っているデータの次元を減らすためにPythonでPCAを使用しています。現在のデータは768行と10列です。PCA:結果の行列n-1行

私はPCAを実装するには、次のコードを使用しています:

import numpy as np 
from sklearn import decomposition 

demo_df = pd.read_csv('data.csv') 
pca = decomposition.PCA(n_components=4) 

comps = pca.fit(demo_df).transform(demo_df) 

np.savetxt('data_reduced.csv', comps, delimiter=',') 

私の理解によると、結果のファイルは768行4列が含まれている必要があり(なぜならn_components = 4)。

しかし、結果のデータは、n-1行が767

はなぜ1行がデータから欠落しているすなわち持って?

答えて

3

はい、ご理解のとおりです。しかし、PCAに渡す前にdemo_dfの形状を確認してください。長さは767でなければなりません.PCAはデータからサンプルを削除することはありません。

read_csv()の相違点です。 documentation of pandas.read_csv()をご覧ください。これは、パラメータheaderを有し、その説明は次の通りである:

ヘッダ:intまたはintのリスト、デフォルトの「INFER」

行番号(複数可) としてカラム名を使用すること、及び開始データのデフォルト動作は、名前が渡されなかった場合は が0に設定されている場合と同じです。明示的にheader = 0 を渡すと、既存の名前を置き換えることができます。ヘッダは、 の列のマルチインデックスの行位置を指定する の整数のリストです。 [0,1,3]。指定されていない行は、 (この例では2はスキップされます)をスキップします。このパラメータは、 のコメント行とskip_blank_lines = Trueの場合は空行を無視するので、header = 0となります。 は、ファイルの最初の行ではなく、最初の行を示します。これらの見出しが別のパラメータnamesの使用によって明示的に提供されていない場合、デフォルトによって

これは、列見出しとしてファイルの最初の行を使用しています。

demo_df = pd.read_csv('data.csv', header = None) 

ですから、列ヘッダとして、ファイルの最初の行を使用したくない場合は、このようなread_csvでheader = None()を渡す必要があります

関連する問題