【问题标题】:ValueError: Found array with 0 feature(s) (shape=(546, 0)) while a minimum of 1 is requiredValueError: 找到具有 0 个特征的数组 (shape=(546, 0)) 而至少需要 1
【发布时间】:2019-02-02 15:01:39
【问题描述】:

我只是在尝试 DataPreprocessing 时经常遇到此错误。谁能解释一下给定数据集的这个特定代码有什么问题?

提前致谢!

# STEP 1: IMPORTING THE LIBARIES

import numpy as np
import pandas as pd

# STEP 2: IMPORTING THE DATASET
dataset = pd.read_csv("https://github.com/Avik-Jain/100-Days-Of-ML-Code/blob/master/datasets/Data.csv", error_bad_lines=False)

X = dataset.iloc[:,:-1].values  
Y = dataset.iloc[:,1:3].values

# STEP 3: HANDLING THE MISSING VALUES
from sklearn.preprocessing import Imputer

imputer = Imputer(missing_values = "NaN",strategy = "mean",axis = 0)
imputer = imputer.fit(X[ : , 1:3])
X[:,1:3] = imputer.transform(X[:,1:3]) 

# STEP 4: ENCODING CATEGPRICAL DATA
from sklearn.preprocessing import LaberEncoder,OneHotEncoder
labelencoder_X = LabelEncoder()  # Encode labels with value between 0 and n_classes-1.
X[ : , 0] = labelencoder_X.fit_transform(X[ : , 0]) # All the rows and first columns

onehotencoder = OneHotEncoder(categorical_features = [0])
X = onehotencoder.fit_transform(X).toarray()

labelencoder_Y = LabelEncoder()
Y =  labelencoder_Y.fit_transform(Y)

# Step 5: Splitting the datasets into training sets and Test sets

from sklearn.cross_validation import train_test_split
X_train, X_test, Y_train, Y_test = train_test_split( X , Y , test_size = 0.2, random_state = 0)

# Step 6: Feature Scaling
from sklearn.preprocessing import StandardScaler
sc_X = StandardScaler()
X_train = sc_X.fit_transform(X_train)
X_test = sc_X.fit_transform(X_test)

返回错误:

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

【问题讨论】:

  • 你能print() 你的xy 变量吗?可能存在维度不匹配。
  • 你也可以发布完整的堆栈跟踪吗?

标签: python pandas numpy scikit-learn


【解决方案1】:

你在这一行的链接

dataset = pd.read_csv("https://github.com/Avik-Jain/100-Days-Of-ML-Code/blob/master/datasets/Data.csv", error_bad_lines=False)

错了。

当前链接返回 github 上显示此 csv 的网页,而不是实际的 csv 数据。所以dataset中存在的任何数据都是无效的。

将其更改为:

dataset = pd.read_csv("https://raw.githubusercontent.com/Avik-Jain/100-Days-Of-ML-Code/master/datasets/Data.csv", error_bad_lines=False)

除此之外,LabelEncoder 导入中存在拼写错误。

现在即使你纠正了这些,仍然会有错误,因为

Y =  labelencoder_Y.fit_transform(Y)

LabelEncoder 只接受单列数组作为输入,但由于

,您当前的 Y 将是 2 列
Y = dataset.iloc[:,1:3].values

请更清楚地说明你想做什么。

【讨论】:

  • 谢谢!我试过了,它成功了。实际上我只是机器学习的新手,我开始了 100 天的 ml 代码。第一个是 DataPreprocessing,我卡在那里,但在你的建议之后,错误解决了!
  • @RushirajParmar 既然答案解决了您的问题,请接受它(见What should I do when someone answers my question?
猜你喜欢
  • 2021-03-06
  • 2022-01-16
  • 2019-09-25
  • 2016-10-04
  • 2022-12-05
  • 2019-04-24
  • 2020-06-24
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多