Слишком много индексов для массива при использовании класса sklearn imputer - PullRequest
1 голос
/ 23 сентября 2019

Я практикуюсь в наборах данных в машинном обучении и, получая недостающее значение, я использовал класс импутеров, но он дал мне ошибку too many indices for array.Для этой ошибки я просто просмотрел весь модуль numpy, но у меня не было ни малейшего представления, как ее решить.

import numpy as np
import matplotlib.pyplot as mlp
import pandas as pd

#import datasets
i_export = pd.read_csv("2018-2010_export.csv")
x=i_export.iloc[:, [0,1,3,4]].values
y=i_export.iloc[:,2].values

#splitting training test set
from sklearn.model_selection import train_test_split
x_train,x_test,y_train,y_test=train_test_split(x,y,test_size=0.2,random_state=0)

#calculating missing data
from sklearn.impute import SimpleImputer
impute=SimpleImputer(missing_values=np.nan,strategy='mean')
impute=SimpleImputer.fit(y_test[:,0])
y_test[:,0]=SimpleImputer.fit_transform(y_test[:,0])

Ответы [ 2 ]

0 голосов
/ 24 сентября 2019

Вы можете попробовать метод DataFrame.fillna (). Получите удовольствие от машинного обучения.

0 голосов
/ 23 сентября 2019

Я думаю, что y_test - это одномерный массив.Когда вы пытаетесь проиндексировать y_test[:,0], вы пытаетесь проиндексировать два измерения.

Вы можете превратить ваш массив y_test в двумерный массив с одним столбцом и "n" строками с помощью этого фрагмента y_test = y_test.reshape(-1,1)

Вот мое изменение в вашем коде.Я внес некоторые изменения в способ использования Simple Imputer.

from sklearn.impute import SimpleImputer
imputer=SimpleImputer(missing_values=np.nan,strategy='mean')
y_test=imputer.fit_transform(y_test.reshape(-1, 1))
...