朋友们,为什么使用knn插补分类变量会出现插补之后的数据会有小数出现

最近使用插补的方式对数据进行填补,有些变量是分类变量,本不应出现小数的,但是填补之后却出现小数,有谁知道怎么解决这个问题 吗


"""
KNN的缺失值的补充
"""
import pandas as pd
from sklearn.impute import KNNImputer  # 引入knn算法的输入器

df_train = pd.read_csv(r'C:\Users\86187\Desktop\mathorcup\2021年MathorCup大数据竞赛赛道A\附件\时间成数值特征工程.csv', encoding='utf-8')
print(df_train)
columns = df_train.columns  # 获取所有的列名
print(columns)
columns1 = [col for col in columns]  # 将列明存储到列表中
print(columns1)
df_train1 = df_train[columns1]  # 根据列名获取数据
print(df_train1)
KI = KNNImputer(n_neighbors=20, weights="distance")  # 这里的weight也可以设置成uniform:权值都相等,distance:根据距离给予权值
df_transformed = pd.DataFrame(KI.fit_transform(df_train1))  # dataframe对数据进行格式转换
df_transformed.to_csv(
    r'C:\Users\86187\Desktop\mathorcup\2021年MathorCup大数据竞赛赛道A\附件\KNN填补缺失值(将一些无法处理的数据也加进来)distance.csv',
    encoding='utf-8')
# print(df_transformed)  # 先在我又发现了一个缺点,就是我们使用这个来进行插补,可能会出现填补的数据是不合理的情况,列如说我们的分类数据中是不可能出现小数,但是我们使用knn插补就会导致小数的出现
# """对于上述出现的那种问题,我将一些分类数据的类型转换成了整数,那么下一步我们因该继续我们之前没有完成的特征筛选"""