Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/291.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python PCA:结果矩阵n-1行_Python_Machine Learning_Scikit Learn_Pca - Fatal编程技术网

Python PCA:结果矩阵n-1行

Python PCA:结果矩阵n-1行,python,machine-learning,scikit-learn,pca,Python,Machine Learning,Scikit Learn,Pca,我在Python中使用PCA来降低我拥有的数据的维数。当前数据有768行和10列 我使用以下代码实现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_redu

我在Python中使用PCA来降低我拥有的数据的维数。当前数据有768行和10列

我使用以下代码实现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行


为什么数据中缺少一行

是的,你的理解是对的。但在将其传递给PCA之前,请检查demo_df的形状。它的长度必须是767。PCA不会从您的数据中删除任何样本

不同之处在于使用了
read\u csv()
。请看一下这本书。它有一个参数
标题
,其描述如下:

标题:整数或整数列表,默认为“推断”

要用作 列名和数据的开头。默认行为就好像 如果未传递名称,则设置为0,否则设置为无。显式传递头=0 能够替换现有名称。标题可以是以下内容的列表: 为列上的多索引指定行位置的整数 e、 g.[0,1,3]。将跳过未指定的中间行 (例如,跳过本例中的2)。请注意,此参数忽略 如果skip_blank_lines=True,则注释行和空行,因此页眉=0 表示数据的第一行,而不是文件的第一行

默认情况下,如果使用另一个参数
name
未明确提供列标题,则它将使用文件的第一行作为列标题

因此,如果不想将文件的第一行用作列标题,则应在read_csv()中传递
header=None
,如下所示:

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