numpy 中的广播问题
Broadcasting issues in numpy
我正在尝试将 PCA 拟合到训练和测试数据上。
X_train.shape
(2735, 219)
主成分分析:
pca = PCA(n_components=30)
X_train = pca.fit_transform(X_train)
测试数据:
test_values.shape
(395, 219)
转型:
test_values = pca.transform(test_values)
错误:
ValueError: operands could not be broadcast together with shapes (395,219) (30,)
我不确定为什么会出现广播错误,两个 numpy 数组都有相同的列 219。
有什么建议请
这不是真正的答案。但为了帮助您了解场景,我发布了这个!
import numpy as np
from sklearn.decomposition import PCA
X = np.random.randn(2735, 219)
pca = PCA(n_components=30)
pca.fit(X)
test_values = np.random.randn(395 , 219)
pca.transform(test_values)
上面的代码工作得很好!
我尝试重现您的示例,一切正常:
x_train = np.random.randint(10, size=50).reshape(10, 5)
pca = PCA(n_components=3)
print(x_train.shape)
x_train = pca.fit_transform(x_train)
test_values = np.random.randint(10, size=100).reshape(20, 5)
print(test_values.shape)
test_values = pca.transform(test_values)
print(test_values.shape)
代码输出:
(10, 5)
(20, 5)
(20, 3)
检查错误是否出现在与 PCA 的行上。看起来你正在对形状错误的数组进行一些操作。
我敢打赌,如果您使用 ipython、笔记本或类似的东西,这是一个保留的变量问题。如果不是这样,你可以忽略这个答案。
考虑以下单元格。
当我运行这些细胞时,一切都很好。但是,如果我再次尝试 运行 第二个单元格,我会收到此错误:
ValueError: operands could not be broadcast together with shapes (395,219) (30,)
这是因为 X_train 现在是一个 2735, 30
矩阵并且 pca 拟合在这个矩阵上所以它需要 n, 30
矩阵。
如果您清除变量或重新组织代码使其不适合已转换的数据,则问题可以解决。
我正在尝试将 PCA 拟合到训练和测试数据上。
X_train.shape
(2735, 219)
主成分分析:
pca = PCA(n_components=30)
X_train = pca.fit_transform(X_train)
测试数据:
test_values.shape
(395, 219)
转型:
test_values = pca.transform(test_values)
错误:
ValueError: operands could not be broadcast together with shapes (395,219) (30,)
我不确定为什么会出现广播错误,两个 numpy 数组都有相同的列 219。 有什么建议请
这不是真正的答案。但为了帮助您了解场景,我发布了这个!
import numpy as np
from sklearn.decomposition import PCA
X = np.random.randn(2735, 219)
pca = PCA(n_components=30)
pca.fit(X)
test_values = np.random.randn(395 , 219)
pca.transform(test_values)
上面的代码工作得很好!
我尝试重现您的示例,一切正常:
x_train = np.random.randint(10, size=50).reshape(10, 5)
pca = PCA(n_components=3)
print(x_train.shape)
x_train = pca.fit_transform(x_train)
test_values = np.random.randint(10, size=100).reshape(20, 5)
print(test_values.shape)
test_values = pca.transform(test_values)
print(test_values.shape)
代码输出:
(10, 5)
(20, 5)
(20, 3)
检查错误是否出现在与 PCA 的行上。看起来你正在对形状错误的数组进行一些操作。
我敢打赌,如果您使用 ipython、笔记本或类似的东西,这是一个保留的变量问题。如果不是这样,你可以忽略这个答案。
考虑以下单元格。
当我运行这些细胞时,一切都很好。但是,如果我再次尝试 运行 第二个单元格,我会收到此错误:
ValueError: operands could not be broadcast together with shapes (395,219) (30,)
这是因为 X_train 现在是一个 2735, 30
矩阵并且 pca 拟合在这个矩阵上所以它需要 n, 30
矩阵。
如果您清除变量或重新组织代码使其不适合已转换的数据,则问题可以解决。