我想在稀疏矩陣上做PCA,但遇到錯誤:TypeError:不支持的操作數類型爲 - :'numpy.ndarray'和'numpy.ndarray',同時嘗試做PCA
TypeError: unsupported operand type(s) for -: 'numpy.ndarray' and 'numpy.ndarray'
這裏是我的代碼:
import sys
import csv
from sklearn.decomposition import PCA
data_sentiment = []
y = []
data2 = []
csv.field_size_limit(sys.maxint)
with open('/Users/jasondou/Google Drive/data/competition_1/speech_vectors.csv') as infile:
reader = csv.reader(infile, delimiter=',', quotechar='|')
n = 0
for row in reader:
# sample = row.split(',')
n += 1
if n%1000 == 0:
print n
data_sentiment.append(row[:25000])
pca = PCA(n_components=3)
pca.fit(data_sentiment)
PCA(copy=True, n_components=3, whiten=False)
print(pca.explained_variance_ratio_)
y = pca.transform(data_sentiment)
輸入數據是speech_vector.csv
,其中2740 * 50000矩陣發現available here
以下是完整的錯誤回溯:
Traceback (most recent call last):
File "test.py", line 45, in <module>
y = pca.transform(data_sentiment)
File "/Users/jasondou/anaconda/lib/python2.7/site-packages/sklearn/decomposition/pca.py", line 397, in transform
X = X - self.mean_
TypeError: unsupported operand type(s) for -: 'numpy.ndarray' and 'numpy.ndarray'
我不太明白self.mean_
這裏指的是什麼。
這將是有用的知道**哪個**行錯誤發生,也是你的代碼是在它的當前形式只是無稽之故,因爲你正在傳遞一個空列表到'pca.fit' – EdChum
我在想這發生了在其他地方(例如在'pca.fit()'或'pca.transform()');我沒有看到任何可能在此頂級代碼中直接引發此錯誤的減法操作。 – Kevin
當你說*「不太明白什麼self.mean_在這裏」時,我不知道你指的是什麼* –