gpt4 book ai didi

python - 处理丢失数据时出现 IndexError : too many indices for array ,

转载 作者:行者123 更新时间:2023-12-01 02:18:48 24 4
gpt4 key购买 nike

我知道这个同样的问题之前已经被问过很多次了,但是我在Python和机器学习方面都是新手,在尝试了很多次没有结果之后,我终于在这里发布了。所以如果可能的话请原谅我提出这样的问题。

我有一个像这样的数据集,采用 csv 格式

YearsExperience        Salary
1.1 39343
1.3 46205
1.5 37731
2 43525
2.2
2.9 56642

正如您在经验 2.2 中看到的那样,工资数据丢失了,我尝试用平均值来填充它,并执行如下操作

import numpy as np
import pandas as pd

# Importing the dataset
dataset = pd.read_csv('Salary_Data.csv')
X = dataset.iloc[:, :-1].values
y = dataset.iloc[:, 1].values

#taking care of missing data
#substitue missing value with the mean
from sklearn.preprocessing import Imputer
imputer = Imputer(missing_values='NaN',strategy='mean',axis=0)
imputer = imputer.fit(y[:,0:1])
y[:,0:1] = imputer.transform(y[:,0:1]);

它给了我

IndexError: too many indices for array

但是,如果 X 中缺少某些内容,例如

YearsExperience        Salary
1.1 39343
1.3 46205
1.5 37731
2 43525
39891
2.9 56642

如果我执行以下操作,它会自动用 mean 替换缺失的值

from sklearn.preprocessing import Imputer
imputer = Imputer(missing_values='NaN',strategy='mean',axis=0)
imputer = imputer.fit(X[:,0:1])
X[:,0:1] = imputer.transform(X[:,0:1]);

最佳答案

您的代码失败的平均原因是因为 y 是形状为 - 的一维数组 -

X = df.iloc[:, :-1].values
y = df.iloc[:, 1].values

y.shape
(6,)

因此,在一维数组上调用 y[:, 0:1] 是无效操作 -

y[:,0:1]
IndexError: too many indices for array

相反,你应该做的是初始化y -

y = df.iloc[:, -1:].values

这将使 y 成为具有一列的二维数组,从而解决问题。

<小时/>

imputer 接受具有单列的二维数组,并返回相似形状的结果。对单列数据帧进行切片,并将其传递给 imputer.fit_transform,它在一个步骤中执行拟合和转换 -

df['Salary'] = imputer.fit_transform(df[['Salary']]).ravel()
df

YearsExperience Salary
0 1.1 39343.0
1 1.3 46205.0
2 1.5 37731.0
3 2.0 43525.0
4 2.2 44689.2
5 2.9 56642.0

关于python - 处理丢失数据时出现 IndexError : too many indices for array ,,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48139582/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com