为了账号安全,请及时绑定邮箱和手机立即绑定

ValueError:无法将字符串转换为浮点数:'thal'

ValueError:无法将字符串转换为浮点数:'thal'

侃侃尔雅 2021-11-23 20:16:39
所以我浏览了一个用户在这里提供的心脏病分类教程。在学习本教程时,我遇到了一个问题并且找不到解决方案。我收到一条错误消息: "ValueError: could not convert string to float: 'thal'" 。这是数据集这是程序:import tensorflow as tfimport pandas as pdimport numpy as npimport matplotlib.pyplot as plthd = pd.read_csv("heart.csv", sep=",", header=None)hd.iloc[:,1].describe()IVs = hd.iloc[:,2:13]DV = hd.iloc[:,1]DV = pd.get_dummies(DV)  # One-Hot Encoding - required by classification algorithms# In order to feed the data into a Neural Network, I must turn the data into numpy objectsIVs = IVs.valuesDV = DV.valuesfrom sklearn.model_selection import train_test_splitX_train, X_test, y_train, y_test = train_test_split(IVs, DV, test_size=0.25, random_state=173)print(X_train.shape, y_train.shape)print(X_test.shape, y_test.shape)# Scale the variables using Z-scoresfrom sklearn.preprocessing import StandardScalerscaler = StandardScaler()  X_train = scaler.fit_transform(X_train) X_test = scaler.transform(X_test) 
查看完整描述

2 回答

?
肥皂起泡泡

TA贡献1829条经验 获得超6个赞

hd = pd.read_csv("heart.csv", sep=",", header=None)

您指定header=None,它会忽略列的标签,从而创建一个混合文本和数字的数组。删除此参数应该可以解决您的问题,即

hd = pd.read_csv("heart.csv", sep=",")

或者,您可以使用以下命令显式指定 csv 文件中标题的行索引 header=0


查看完整回答
反对 回复 2021-11-23
?
素胚勾勒不出你

TA贡献1827条经验 获得超9个赞

正如底部的消息所说:ValueError: could not convert string to float: 'thal'这似乎是一个数据类型错误。StandardScaler 需要数字(浮点)数据,但它在某处得到一个字符串并返回错误。

您可以执行多种操作。如果您有分类变量,请对它们进行 One-Hot 编码。也许您可以强制一列属于某种数据类型。

PS:加载熊猫数据框后,您可以使用hd.dtypes. 检查 IV 中是否有一些非数字列。


查看完整回答
反对 回复 2021-11-23
  • 2 回答
  • 0 关注
  • 441 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信