我有一个包含字符串和浮点数DataType的数据集,我想用这个数据集训练我的KNN模型,但它给出了一个ValueError
could not covert string to float
inputs=data.drop(['HeartDisease'],'columns')
output=data.drop(['Age', 'Sex', 'ChestPainType', 'RestingBP', 'Cholesterol', 'FastingBS', 'RestingECG', 'MaxHR', 'ExerciseAngina', 'Oldpeak', 'ST_Slope'],'columns')
from sklearn.model_selection import train_test_split
x_train,x_test,y_train,y_test=train_test_split(inputs,output,train_size=0.8)
from sklearn.neighbors import KNeighborsClassifier
model=KNeighborsClassifier(n_neighbors=31)
model.fit(x_train,y_train)
我希望模型是用特定的数据集训练的
1条答案
按热度按时间fnx2tebb1#
在每个ML模型中,您不能按原样使用数据字符串。你必须预处理你的输入,将它们转换成数字类型。除了自然语言处理之外,您可能有一些不同的文本值(分类特征)。
例如
'ChestPainType'
列,应该只有4个值:['ATA', 'NAP', 'ASY', 'TA']
。现在你必须将这些字符串转换为数字:“ATA”:0,“NAP”:1,“ASY”:2,“TA”:3.在Pandas中,您可以使用pd.factorize
或pd.get_dummies
来执行此操作,但如果您使用sklearn
,请尝试LabelEncoder
(特别是在需要时用于y
目标)或OneHotEncoder
(有时为OrdinalEncoder
)。最简单的方法是使用
ColumnTransformer
。可重复的示例: