我在Python中使用PCA来减少我拥有的数据的维度。当前数据有768行和10列。
我使用以下代码实现PCA:
JSONResult<String>
根据我的理解,结果文件应包含768行和4列(因为n_components = 4)。
但结果数据有n-1行,即767。
为什么数据中缺少一行?
答案 0 :(得分:3)
是的,你理解正确。但是在将它传递给PCA之前检查demo_df的形状。它的长度必须为767.PCA不会从您的数据中删除任何样本。
差异源于read_csv()
的使用。请查看documentation of pandas.read_csv()。它有一个参数header
,其描述如下:
header:int或int列表,默认为'infer'
要用作的行号 列名和数据的开头。默认行为就像是 如果没有传递名称,则设置为0,否则为None。显式传递header = 0 能够替换现有名称。标题可以是列表 为列上的多索引指定行位置的整数 例如[0,1,3]。将跳过未指定的干预行 (例如,跳过此示例中的2)。请注意,此参数会忽略 如果skip_blank_lines = True,则注释行和空行,因此header = 0 表示第一行数据而不是文件的第一行。
默认情况下,如果未使用其他参数names
明确提供这些标题,则使用第一行文件作为列标题。
因此,如果您不想将文件的第一行用作列标题,则应在read_csv()中传递header = None
,如下所示:
demo_df = pd.read_csv('data.csv', header = None)