gpt4 book ai didi

python - 如何将大量分类数据从字符串自动转换为数值?

转载 作者:行者123 更新时间:2023-11-30 09:32:00 24 4
gpt4 key购买 nike

我正在尝试构建决策树回归来预测汽车的 MSRP(制造商建议零售价)值。但是,我在将分类值转换为数值时遇到问题。

我的问题:我有 8 列分类特征,其中一些列具有多达 40 种不同类型的唯一值和 20,000 个实例。我应该使用什么方法来转换分类数据以用于决策树回归?有没有办法自动输入唯一值而不是手动输入?

我尝试使用 LabelEncoder 来转换分类值,但由于某种原因,第一列中的 df.values(BMW、Acura...)数组即使在转换后也没有改变。

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
%matplotlib inline
df = pd.read_excel(r'C:\Users\user\Desktop\data.xlsx')
from sklearn.preprocessing import LabelEncoder
labelencoder = LabelEncoder()
df.values[:, 0] = labelencoder.fit_transform(df.values[:, 0])

这是我得到的结果:

array([['BMW', '1 Series M', 2011, ..., 19, 3916, 46135],
['BMW', '1 Series', 2011, ..., 19, 3916, 40650],
['BMW', '1 Series', 2011, ..., 20, 3916, 36350],
...,
['Acura', 'ZDX', 2012, ..., 16, 204, 50620],
['Acura', 'ZDX', 2013, ..., 16, 204, 50920],
['Lincoln', 'Zephyr', 2006, ..., 17, 61, 28995]], dtype=object)

我希望第一列是用于 DT 回归的数值。有人可以帮忙吗?我在我的五年计划中这样做,这是我第一次接触机器学习。

最佳答案

使用 pandas 和 sklearn 有多种方法将分类数据转换为数字:

  1. pandas.get_dummies() (One Hot encoding)
    Example:
import numpy as np
import pandas as pd

df = pd.DataFrame([['BMW', '1 Series M', 2011, 19, 3916, 46135],
['BMW', '1 Series', 2011,19, 3916, 40650],
['BMW', '1 Series', 2011,20, 3916, 36350],
['Acura', 'ZDX', 2012, 16, 204, 50620],
['Acura', 'ZDX', 2013, 16, 204, 50920],
['Lincoln', 'Zephyr', 2006, 17, 61, 28995]]) #Sample dataframe

pd.get_dummies(df, columns = [0,1,2]) #Dummies of 1st,2nd and 3rd column

Output
Output

2.LabelEncoder
Example

import numpy as np
import pandas as pd
from sklearn.preprocessing import LabelEncoder

df = pd.DataFrame([['BMW', '1 Series M', 2011, 19, 3916, 46135],
['BMW', '1 Series', 2011,19, 3916, 40650],
['BMW', '1 Series', 2011,20, 3916, 36350],
['Acura', 'ZDX', 2012, 16, 204, 50620],
['Acura', 'ZDX', 2013, 16, 204, 50920],
['Lincoln', 'Zephyr', 2006, 17, 61, 28995]]) #Sample dataframe

df[[0,1,2]].apply(LabelEncoder().fit_transform)

output (It will only give transformed Columns which needs to be combined with original dataframe) enter image description here

df.loc[0:,0:2] = df[[0,1,2]].apply(LabelEncoder().fit_transform) 
#puts column back into dataframe

Output enter image description here

关于python - 如何将大量分类数据从字符串自动转换为数值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54142481/

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