Мой вход содержит NaN, бесконечность или значение, слишком большое для dtype - - PullRequest
0 голосов
/ 20 февраля 2019

Я пытаюсь запустить 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

Может ли кто-нибудь указать мне правильное направление относительно того, куда я идуне так?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...