Python 如何对分类数据进行编码而不影响数据帧中的数字数据?
如何对“性别”、“已婚”、“教育”栏目进行编码而不影响 “贷款ID”、“受抚养人”、“申请者”列Python 如何对分类数据进行编码而不影响数据帧中的数字数据?,python,machine-learning,scikit-learn,Python,Machine Learning,Scikit Learn,如何对“性别”、“已婚”、“教育”栏目进行编码而不影响 “贷款ID”、“受抚养人”、“申请者”列 这应该能解决你的问题 Loan_ID Gender Married Dependents Education ApplicantIncome 1 LP001003 Male Yes 1 Graduate 4583 2 LP001005 Male Yes 0 Graduate
这应该能解决你的问题
Loan_ID Gender Married Dependents Education ApplicantIncome
1 LP001003 Male Yes 1 Graduate 4583
2 LP001005 Male Yes 0 Graduate 3000
3 LP001006 Male Yes 0 Not Graduate 2583
4 LP001008 Male No 0 Graduate 6000
5 LP001011 Male Yes 2 Graduate 5417
我更喜欢使用方法,因此:
from sklearn.preprocessing import LabelEncoder
le = LabelEncoder()
for cat_var in ['Gender', 'Married', 'Education']:
df[cat_var] = le.fit_transform(df[cat_var])
在准备数据时,考虑一些事情:
ohe_df = pd.get_dummies(df, columns=['Gender', 'Married', 'Education'])
您可以使用:
这种方法将为每一列使用不同的标签编码器,这也意味着您将在不同的列中使用相同的编号
当您为所有人运行一个标签编码器时,只有当数字完全相同时,数字才会相同
分类后,可以使用以下方法反转标签:
from sklearn import preprocessing
le1 = preprocessing.LabelEncoder()
df['Gender'] =le1.fit_transform(df['Gender'])
le2 = preprocessing.LabelEncoder()
df['Married'] =le2.fit_transform(df['Married'])
le3 = preprocessing.LabelEncoder()
df['Education'] =le3.fit_transform(df['Education'])
最好对每个类初始化LabelEncoder,否则您将无法执行逆变换(这在以后改进或排除模型故障时经常需要)。您尝试过什么?你做过任何研究吗?我试过“df.apply(LabelEncoder().fit_transform)”,但当我用另一个数据帧替换这个df帧时,我得到的是Nan值。你给出了清晰的信息,但我想学习深层编码,我在哪里可以学习?保持基本原理清晰,弄清楚需求和你想要建立什么样的模型,仔细研究数据,记下必要的预处理步骤和特征缩放步骤。保持练习如果一个数据集中有80列需要编码,这将花费大量时间,那么有没有其他方法可以在不影响数字列的情况下对所有数据集进行编码。Nather的解决方案可以做到这一点,但你不能做逆变换,那么逆变换有什么用处?以及如何执行。反变换与分类本身无关,只有当你想在分类后检查原始值时才感兴趣……代码写在我的答案alreadyThank you PV8中,顺便说一句,如何详细了解所有这些。我是说机器学习,因为我找不到正确的资源。
from sklearn import preprocessing
le1 = preprocessing.LabelEncoder()
df['Gender'] =le1.fit_transform(df['Gender'])
le2 = preprocessing.LabelEncoder()
df['Married'] =le2.fit_transform(df['Married'])
le3 = preprocessing.LabelEncoder()
df['Education'] =le3.fit_transform(df['Education'])
df['Married'] = le2.inverse_transform(df['Married']