ValueError:无法将字符串转换为浮点数:“?”

Posted

技术标签:

【中文标题】ValueError:无法将字符串转换为浮点数:“?”【英文标题】:ValueError: could not convert string to float: '?' 【发布时间】:2019-03-23 17:53:02 【问题描述】:

我尝试运行 SVM 程序,但出现上述错误。代码在下面。请指出其中的错误。

import numpy as np
import pandas as pd
from sklearn import svm
from sklearn.model_selection import train_test_split
data = pd.read_csv('risk_factors_cervical_cancer.csv')
X = np.array(data[[#some data elements]])
y = np.array(data[#some data elements])
print(X)
print(y)
print(X.shape)
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.25, 
random_state=30)
classifier = svm.SVC()
classifier.fit(X_train, y_train)    #the error occurs here 
y_pred = svm.predict(X_test)
acc = accuracy_score(y_test, y_pred)

`

【问题讨论】:

您可能试图将"?" 作为 X 或 Y 的元素。 欢迎来到 ***。请按照您创建此帐户时的建议阅读并遵循帮助文档中的发布指南。 Minimal, complete, verifiable example 适用于此。在您发布 MCVE 代码并准确描述问题之前,我们无法有效地帮助您。我们应该能够将您发布的代码粘贴到文本文件中并重现您描述的问题。 您的classifier 无法将X_trainy_train 转换为浮点数,这是错误,请尝试使用float(X_train)float(y_train) 手动将它们转换为浮点数。 您的数据中有一些字符串或其他非数字字符(如'?')。您必须将它们转换为数字,以便 ML 模型可以处理它们。根据数据类型,有多种方案可用于将字符串特征编码为数字。 【参考方案1】:

正如@Guimoute 所写,为了使用任何机器学习算法对其进行训练,始终需要对数据进行预处理。尝试X.head(10) 了解您正在使用的数据。您的错误发生是因为有一个值“?”在您的 X 列中。将其替换为一些合理的数字,例如列的平均值以获得更好的结果。

【讨论】:

以上是关于ValueError:无法将字符串转换为浮点数:“?”的主要内容,如果未能解决你的问题,请参考以下文章

ValueError:无法将字符串转换为浮点数:'2100 - 2850'

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

ValueError:无法将字符串转换为浮点数:'62,6'

ValueError:无法将字符串转换为浮点数:''20,99''

我收到 ValueError:无法将字符串转换为浮点数:'8,900' [重复]

ValueError:无法将字符串转换为浮点数:'31,950'