你要清楚PCA的意義是什麼,絕大多數使用PCA是希望把高維度的資料,以損失最小為最佳化條件,降到較低維度的空間,以濃縮資訊方便視覺化呈現,讓我們觀察資料的分布狀況。如果,你的資料本身就只有三個維度以內用PCA本身就是一件很奇怪的事情。
如果硬要用單維度的資料,我不太清楚PCA內部會如何處理這類型的資料,我猜應該不能處理,但是照理來說你應該要放入的資料應改長這樣....
x = [
[x1_attr1, x1_attr2, x1_attr3, x1_attr4, x1_attr5, ...., x1_attrn],
[x2_attr1, x2_attr2, x2_attr3, x2_attr4, x2_attr5, ...., x2_attrn],
[x3_attr1, x3_attr2, x3_attr3, x3_attr4, x3_attr5, ...., x3_attrn],
......,
[xn_attr1, xn_attr2, xn_attr3, xn_attr4, xn_attr5, ...., xn_attrn]
]
所以你如果要找到正確的input shape應該用x.reshape(-1, 1)。
data1[sd-0.02:sd+0.1]['number']
已經把它變成單個維度的資料,如果你應該要另外創建一個欄位放index資料,如data1['time']=data1.index
,然後把data1.values放入PCA中。