如何在python中使用KNN填充缺失值



我试图用python中的KNN填充缺失的值,所以我写了这段代码,但它不起作用。我得到这个错误";ValueError:无法将字符串转换为浮点值:"normal"我该怎么办?

import pandas as pd
df = pd.read_csv(r'df.csv')
from sklearn.impute import KNNImputer
imputer = KNNImputer(n_neighbors=5)
df = pd.DataFrame(imputer.fit_transform(df),columns = df.columns)

通常,为了替换NaN值,我们使用sklearn.impute.SimpleImputer,它可以用您选择的值(平均值、样本中值或您想要的任何其他值(替换NaN值。

from sklearn.impute import SimpleImputer
imp = SimpleImputer(missing_values=np.nan, strategy='mean')
df = imp.fit_transform(df)

我不知道你的df是什么样子的,但我想你可能不得不使用Ordinal或Label编码器,因为KNN估算器不适用于文本数据。

以下是您的指南:

https://medium.com/@kyawsawtoon/a-guide-knn-imputation-95e2dc496e

KNN方法将计算向量之间的距离,因此如果数据是分类的,则应将其转换为数值。例如,如果字符串代表标签,则可以使用一个hot对标签进行编码。

还有另一个python包实现KNN插补方法:impyte