【发布时间】:2020-07-07 22:59:31
【问题描述】:
我正在尝试在以下形式的输入集中制作虚拟变量: My Input set
所以我对分类数据进行了编码,所以现在我的数组形式为:Encoded input set
接下来,我想使用 OneHot 编码器制作虚拟变量。我知道它曾经是这样工作的:
onehotencoder = OneHotEncoder(categorical_features = [1])
X = onehotencoder.fit_transform(X).toarray()
但是现在 OneHotEncoder 类的工作方式有点不同,我不知道如何将它调整到我的数据集,所以它完全以这种方式工作。 我的代码:
import numpy as np
import pandas as pd
dataset = pd.DataFrame(
{'RowNumber': [1, 2, 3, 4, 5],
'CustomerId': [602, 311, 304, 354, 888],
'Surname': ['Har', 'Hil', 'Oni', 'Bon', 'Mit'],
'CreditScore': [619, 608, 502, 699, 850],
'Geography': ['FR', 'ES', 'FR', 'FR', 'ES'],
'Gender': ['F', 'F', 'F', 'F', 'F'],
'Age': [42, 41, 42, 39, 43],
'Tenure': [2, 1, 8, 0, 2]})
X = dataset.iloc[:, 3 : -1].values
y= dataset.iloc[:, -1].values
# Encoding categorical data
from sklearn.preprocessing import LabelEncoder
le = LabelEncoder()
X[:, 1] = le.fit_transform(X[:, 1])
X[:, 2] = le.fit_transform(X[:, 2])
# Making dummy variables
from sklearn.preprocessing import OneHotEncoder
ohe = OneHotEncoder()
提前谢谢你!
【问题讨论】:
-
您能否在脚本中提供一个示例输入来代替
"Churn_Modelling.csv"以使您的代码可运行?另外,为什么说“虚拟变量”?看起来您只是想创建这两列的单热编码。 -
这是我的数据集的前 5 行:RowNumber,CustomerId,Surname,CreditScore,Geography,Gender,Age,Tenure,Balance,NumOfProducts,HasCrCard,IsActiveMember,EstimatedSalary,Exited 1,15634602,Hargrave ,619,法国,女,42,2,0,1,1,1,101348.88,1 2,15647311,希尔,608,西班牙,女,41,1,83807.86,1,0,1,112542.58,0 3 ,15619304,Onio,502,France,Female,42,8,159660.8,3,1,0,113931.57,1 4,15701354,Boni,699,France,Female,39,1,0,2,0,0, 93826.63,0 5,15737888,Mitchell,850,Spain,Female,43,2,125510.82,1,1,1,79084.1,0
-
如果您可以在帖子的代码中将其定义为
dataset = pd.DataFrame(...),那就太好了。 -
我真的很抱歉,但我完全没有得到您对我的期望。我对 python 和机器学习还很陌生,所以你需要非常具体
-
我已经更新了你的帖子来说明我的意思。
标签: python machine-learning sklearn-pandas one-hot-encoding