将标签从字符串转换为浮点数
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
我想将标签(即字符串)转换为浮点数。 我这样做:
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