В модуле sklearn.preprocessing я получаю ValueError: найденный массив с 0 функциями

1

Я видел, что куча вопросов имеет эту ошибку, но я не мог понять отношения с моим кодом или проблемой.

Я пытаюсь исправить значения NaN в данных, которые я получил из образца файла CSV, который я нашел в Интернете. Мой код очень прост:

#!/usr/bin/env python3
# -*- coding: utf-8 -*-

# Importing stuff.
from sklearn.preprocessing import Imputer
import pandas

# Loading the corrupt data
corrupt_data = pandas.read_csv('SampleCorruptData.csv')

#Creating Imputer object
imputer = Imputer(missing_values = 'NaN', strategy= "mean", axis = 0)

owner_id = corrupt_data.iloc[:,2:]

print(owner_id)

imputer = imputer.fit(owner_id.iloc[:,2:])

owner_id.iloc[:,2:] = imputer.transform(owner_id[:,2:])

print(owner_id)

Файл CSV:

GroupName,Groupcode,GroupOwner
System Administrators,sysadmin,13456
Independence High Teachers,HS Teachers,
John Glenn Middle Teachers,MS Teachers,13458
Liberty Elementary Teachers,Elem Teachers,13559
1st Grade Teachers,1stgrade,NaN
2nd Grade Teachers,2nsgrade,13561
3rd Grade Teachers,3rdgrade,13562
Guidance Department,guidance,NaN
Independence Math Teachers,HS Math,13660
Independence English Teachers,HS English,13661
John Glenn 8th Grade Teachers,8thgrade,
John Glenn 7th Grade Teachers,7thgrade,13452
Elementary Parents,Elem Parents,NaN
Middle School Parents,MS Parents,18001
High School Parents,HS Parents,18002

Как вы можете видеть значения NaN.

Ошибка, которую я получаю:

Traceback (most recent call last):

  File "<ipython-input-21-1bfc8eb216cc>", line 1, in <module>
    runfile('/home/teoman/Desktop/data science/Fix Corrupt Data/imputation.py', wdir='/home/teoman/Desktop/data science/Fix Corrupt Data')

  File "/usr/lib/python3/dist-packages/spyder/utils/site/sitecustomize.py", line 866, in runfile
    execfile(filename, namespace)

  File "/usr/lib/python3/dist-packages/spyder/utils/site/sitecustomize.py", line 102, in execfile
    exec(compile(f.read(), filename, 'exec'), namespace)

  File "/home/teoman/Desktop/data science/Fix Corrupt Data/imputation.py", line 18, in <module>
    imputer = imputer.fit(owner_id.iloc[:,2:])

  File "/home/teoman/.local/lib/python3.5/site-packages/sklearn/preprocessing/imputation.py", line 155, in fit
    force_all_finite=False)

  File "/home/teoman/.local/lib/python3.5/site-packages/sklearn/utils/validation.py", line 470, in check_array
    context))

ValueError: Found array with 0 feature(s) (shape=(15, 0)) while a minimum of 1 is required.

Что я делаю неправильно здесь?

Теги:
python-3.x
scikit-learn
sklearn-pandas

1 ответ

1
Лучший ответ

Если мы проследим вашу ошибку, мы сможем найти решение

Ваша ошибка:

ValueError: найден массив с функцией 0 (форма = (15, 0)), в то время как требуется минимум 1.

В основном он ищет по меньшей мере 1 функцию. Если мы посмотрим на документы imputer: Параметры: X: массив numpy формы [n_samples, n_features ]

В вашем случае у вас есть 15 n_samples и 0 n_features. Если вы преобразуете свои данные и сделаете n_features> 0, ваша проблема будет решена.

Хранить в шахтном массиве 1D numpy возвращает 0 столбцов, если вы конвертируете его в pd.DataFrame, вы можете получить 1 n_features.

надеюсь, это поможет

Спасибо

  • 0
    Спасибо за ваше время, я в основном изменил эту часть кода: owner_id.iloc[:,2:] = imputer.transform(owner_id[:,2:]) на это: owner_id.iloc[:,2:] = imputer.transform(owner_id.iloc[:,2:])
  • 0
    Я не понял этого. Простой, но важный момент. Tesekkurler

Ещё вопросы

Сообщество Overcoder
Наверх
Меню