Python PCA:结果矩阵n-1行
我在Python中使用PCA来降低我拥有的数据的维数。当前数据有768行和10列 我使用以下代码实现PCA: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
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)