Я пытаюсь запустить PCA для набора данных, но столкнулся с проблемой, связанной с NaN.Я попытался отбросить несколько столбцов и изменить типы данных моего фрейма данных, но ни один из них не сработал.
Мой фрагмент кода:
from sklearn.preprocessing import StandardScaler
features = ['caloroies','protein','fat','sodium','fiber','carbo','sugars','potass','vitamins','shelf','weight','cups']
x = df.loc[:, features].values
y = df.loc[:,['rating_bucketed']].values
x = StandardScaler().fit_transform(x)
from sklearn.decomposition import PCA
pca = PCA(n_components=2)
principalComponents = pca.fit_transform(x)
principalDf = pd.DataFrame(Data = principalComponents
, columns = ['principal component 1', 'principal component 2'])
Ошибка, которую я получаю от этого, заключается в следующем:
ValueError: Input contains NaN, infinity or a value too large for dtype('float64').
Если я проверю свою переменную x, я получу следующее:
print(x)
[[ nan 4.00e+00 1.00e+00 1.30e+02 1.00e+01 5.00e+00 6.00e+00 2.80e+02
2.50e+01 3.00e+00 1.00e+00 3.30e-01]
[ nan 3.00e+00 5.00e+00 1.50e+01 2.00e+00 8.00e+00 8.00e+00 1.35e+02
0.00e+00 3.00e+00 1.00e+00 1.00e+00]
[ nan 4.00e+00 1.00e+00 2.60e+02 9.00e+00 7.00e+00 5.00e+00 3.20e+02
2.50e+01 3.00e+00 1.00e+00 3.30e-01]
[ nan 4.00e+00 0.00e+00 1.40e+02 1.40e+01 8.00e+00 0.00e+00 3.30e+02
2.50e+01 3.00e+00 1.00e+00 5.00e-01]
Чтобы вы могли понять мой начальный набор данных:
введите описание изображения здесь
Python 3.7.1 Numpy 1.15.4 Pandas 0.23.4 Sklearn 0.20.1
Может ли кто-нибудь указать мне правильное направление относительно того, куда я идуне так?