所以我浏览了一个用户在这里提供的心脏病分类教程。在学习本教程时,我遇到了一个问题并且找不到解决方案。我收到一条错误消息: "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
素胚勾勒不出你
TA贡献1827条经验 获得超9个赞
正如底部的消息所说:ValueError: could not convert string to float: 'thal'
这似乎是一个数据类型错误。StandardScaler 需要数字(浮点)数据,但它在某处得到一个字符串并返回错误。
您可以执行多种操作。如果您有分类变量,请对它们进行 One-Hot 编码。也许您可以强制一列属于某种数据类型。
PS:加载熊猫数据框后,您可以使用hd.dtypes
. 检查 IV 中是否有一些非数字列。
添加回答
举报
0/150
提交
取消