Scikit学习数据分析问题

问题描述 投票:0回答:1

试图获取约90,000条数据线的两个变量(波长和强度)的.dat文件,并对其应用sklearn.pca过滤器。

这里是一小部分数据:

wavelength                intensity
   [um]                 [W/m**2/um/sr]
196.078431372549       1.108370393265022E-003
192.307692307692       1.163428008597600E-003
188.679245283019       1.223639983609668E-003

我用来分析数据的代码在下面

pca= PCA(n_components=2)
pca.fit(data)
print(pca.components_)

当我尝试将2个pca组件应用于其中一个数据集时,我得到的错误代码是这个:

ValueError: Datatype coercion is not allowed

任何帮助解决问题都将不胜感激

python python-3.x scikit-learn pca
1个回答
1
投票

我认为在您的情况下,问题出在列名,尤其是[W/m**2/um/sr]

同样在使用PCA时,请不要忘记使用StandardScaler将输入变量重新缩放为“可比较”的单位。

import pandas as pd
from sklearn.preprocessing import StandardScaler
from sklearn.decomposition import PCA

data = pd.DataFrame({'wavelength [um]': [196.078431372549, 1.108370393265022E-003, 192.307692307692], 'intensity [W/m**2/um/sr]': [1.163428008597600E-003, 188.679245283019, 1.223639983609668E-003]})

scaler = StandardScaler(with_mean=True, with_std=True)
pca= PCA(n_components=2)
pca.fit(scaler.fit_transform(data))
print(pca.components_)

对我来说很好。也许您只需要指定:

data.columns = data.columns.astype(str)
© www.soinside.com 2019 - 2024. All rights reserved.