【问题标题】:ValueError: all the input arrays must have same number of dimensions on onehotencoderValueError:所有输入数组在 onehotencoder 上的维数必须相同
【发布时间】:2019-11-04 21:38:06
【问题描述】:

我正在尝试使用 onehotencoder 来转换我的分类数据,但是,我被困在这一步:

X = transformer.fit_transform(X)

我不确定我错过了什么,但我对 python 不太熟悉,我感谢任何愿意提供帮助的人,谢谢!

这是数据集: Data.csv

我正在尝试转换国家列

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

#import dataset
dataset = pd.read_csv("Data.csv")
X = dataset.iloc[:,:-1].values
Y = dataset.iloc[:,3].values

#Taking care of Missing data
from sklearn.impute import SimpleImputer  
imputer = SimpleImputer(missing_values=np.nan, strategy='mean')
imputer = imputer.fit(X[:,1:3])
X[:,1:3] = imputer.transform(X[:,1:3])

#Encoding Categorical data
from sklearn.preprocessing import LabelEncoder, OneHotEncoder
from sklearn.compose import ColumnTransformer
labelencoder_X = LabelEncoder()
X[:, 0] = labelencoder_X.fit_transform(X[:, 0])

transformer = ColumnTransformer([('one_hot_encoder', OneHotEncoder(), [0])],
                                 remainder='passthrough')
X = transformer.fit_transform(X)
#X = np.array(transformer.fit_transform(X), dtype=np.float)
labelencoder_Y = LabelEncoder()
Y = labelencoder_Y.fit_transform(Y)

这是错误:

ValueError: all the input arrays must have same number of dimensions, but the array at index 0 has 1 dimension(s) and the array at index 1 has 2 dimension(s)

【问题讨论】:

  • 嘿@potatoCatz,你有解决方案吗?使用 OneHotEncoder.fit_transform 时,我的代码出现同样的错误。

标签: machine-learning


【解决方案1】:

检查你的 csv 文件,如果它看起来完全像这样:

Country,Age,Salary,Purchased    
France,44,72000,No    
Spain,27,48000,Yes    
Germany,30,54000,No    
Spain,38,61000,No    
Germany,40,nan,Yes    
France,35,58000,Yes    
Spain,nan,52000,No    
France,48,79000,Yes
Germany,50,83000,No
France,37,67000,Yes    

我运行了你的代码,但没有收到任何错误,尽管 sklearn 发出了一些警告

【讨论】:

    猜你喜欢
    • 2016-12-15
    • 1970-01-01
    • 2019-09-22
    • 2018-06-12
    • 2017-06-18
    • 2018-05-18
    • 2018-06-23
    • 2017-07-13
    • 1970-01-01
    相关资源
    最近更新 更多