TypeError:*不支持的操作数类型*:'PCA'和'float'

时间:2016-10-03 19:48:32

标签: python scikit-learn sklearn-pandas

编辑:

这是数据csv的头部:

    Fresh   Milk    Grocery Frozen  Detergents_Paper    Delicatessen
0   12669   9656    7561    214 2674    1338
1   7057    9810    9568    1762    3293    1776
2   6353    8808    7684    2405    3516    7844
3   13265   1196    4221    6404    507 1788
4   22615   5410    7198    3915    1777    5185

我看到的错误:

TypeError: unsupported operand type(s) for *: 'PCA' and 'float'

代码:

from sklearn.decomposition import PCA

log_data = np.log(data)

# TODO: Apply PCA to the good data with the same number of dimensions as features
pca = PCA(n_components=4)

# TODO: Apply a PCA transformation to the sample log-data
pca_samples = pca.fit(log_data)

# Generate PCA results plot
pca_results = rs.pca_results(good_data, pca)

display(pd.DataFrame(np.round(pca_samples, 4), columns = pca_results.index.values))

抱怨最后一行

数据来自已证明工作正常的csv。

3 个答案:

答案 0 :(得分:2)

pca.fit(X[, y])只需使用X拟合模型,然后返回self,即pca本身。

因为你想用

获取转换后的数据
pd.DataFrame(np.round(pca_samples, 4), columns = pca_results.index.values))

所以,你应该致电pca.fit_transform()

  

fit_transform(X [,y])使用X拟合模型并在X上应用降维。

请参阅docs of pcafit_transform

答案 1 :(得分:0)

PCA.fit()将模型归位并返回self,以便您可以链接其他模型操作。所以,在

之后
pca_samples = pca.fit(log_data)

pca_samples只是对pca的另一个引用。

答案 2 :(得分:0)

为使代码正常工作,请参见下面经过测试的代码以及您应更改的行!

#TODO: Transform log_samples using the PCA fit above

pca_samples = pca.fit_transform(log_samples)

上面的代码效果很好。