我试图在python中用KNN填充缺失值,所以我写了这段代码,但它不起作用。我得到这个错误“ValueError:无法将字符串转换为浮点数:“正常”,我该怎么办?
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)
3条答案
按热度按时间inn6fuwd1#
通常要替换NaN值,我们使用
sklearn.impute.SimpleImputer
,它可以用您选择的值(样本的平均值、中位数或任何其他您想要的值)替换NaN
值。xmakbtuz2#
我不知道你的df看起来像,但我猜你可能不得不使用序数或标签编码器作为KNN输入器不工作的文本数据。
这里有一个指南给你:
https://medium.com/@kyawsawhtoon/a-guide-to-knn-imputation-95e2dc496e
jrcvhitl3#
KNN方法将计算向量之间的距离,因此如果您的数据是分类的,则应将其转换为数值。例如,如果字符串代表标签,则可以使用one-hot对标签进行编码。
还有另一个python包实现了KNN插补方法:impyte