将标签从字符串转换为浮点数

Transform a label from string to float

我想将标签(即字符串)转换为浮点数。 我这样做:

label = LabelEncoder()
balanced_data['label'] = label.fit_transform(balanced_data['activity'])
balanced_data.head()

并且我获得了数字形式的标签,但仍然是字符串。 我该如何解决?谢谢

你可以试试“eval”

st = "5"
st_as_int = eval(st) 
print(type(st_as_int))

会return“int”

由于标签当前是字符串,您必须将字符串转换为 float

label = float(label)

应该可以。 More on casting here.

让我们假设一个新的 DataFrame 有两列(Product 和 Price 列)。只有这一次,价格列下的值将包含数字和非数字数据的组合: 然后,您可以使用 astype(float) 方法执行转换为浮点数:

Data = {'Product': ['A','B'],'Price': ['250','270']}
df = pd.DataFrame(Data)
df['Price'] = df['Price'].astype(float)

print (df)
print (df.dtypes)

您的问题出在其他地方。您定义 label = LabelEncoder() - 然后您使用 label.type 并得到 AttributeError: 'str' object has no attribute 'type'.

这意味着 label(此时)是字符串类型,而它应该被报告为 <class 'sklearn.preprocessing._label.LabelEncoder'>label = LabelEncoder()!

之后

当以这种方式拟合标签时,您已经得到整数,而不是字符串:不需要任何转换:

from sklearn import preprocessing
import pandas as pd
from random import random, choice

r = random
c = choice

df = pd.DataFrame([[r(),r(),r(),r(),c(["sitting","standing"])] for _ in range(6)],
                  columns=["quat1","quat2","quat3","quat4","activity"])

le = preprocessing.LabelEncoder()
df["label"] = le.fit_transform(df["activity"])

print(df)
print(df["label"].dtypes)

输出:

      quat1     quat2     quat3     quat4  activity  label
0  0.550365  0.051738  0.485262  0.194497  standing      1
1  0.656460  0.151324  0.131370  0.338022  standing      1
2  0.512595  0.501235  0.449589  0.302794  standing      1
3  0.440568  0.043643  0.817394  0.128534   sitting      0
4  0.364890  0.714289  0.683436  0.731021   sitting      0
5  0.708488  0.423278  0.624220  0.880735  standing      1

int32

要返回您的标签,请使用

print(le.inverse_transform([0]))   # ['sitting']

Examples on sklearn.preprocessing.LabelEncoder documentation