最近使用插补的方式对数据进行填补,有些变量是分类变量,本不应出现小数的,但是填补之后却出现小数,有谁知道怎么解决这个问题 吗
"""
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插补就会导致小数的出现
# """对于上述出现的那种问题,我将一些分类数据的类型转换成了整数,那么下一步我们因该继续我们之前没有完成的特征筛选"""