一、特征预处理
1、处理缺失、异常值
缺失值直接补0
异常值可以设置一个阈值,比如小于数据的1分位数,或者大于95分位数,就把数据进行四舍五入,用相应的分位数赋值,这样可以减少异常值对于聚类的影响。因为聚类一般计算的是距离,有异常值影响会比较大
2、最大最小归一化,消除特征量纲影响,或者标准化也可以
from sklearn.preprocessing import MinMaxScaler
min_max_scaler = MinMaxScaler()
feature_minmax = min_max_scaler.fit_transform(np.array(feature))
3、如果特征维度较多,存在共线性,可以用pca进行降维
def get_pca(data_array):
tmp_std = StandardScaler().fit_transform(data_array)
pca = PCA(n_components=0.9)
tmp_principalComponents = pca.fit_transform(tmp_std)
min_max_scaler = MinMaxScaler()
tmp_principalComponents_1=min_max_scaler.fit_transform(tmp_principalComponents)
print('pca保留的维度:', tmp_principalComponents_1.shape)
return tmp_principalComponents_1
#检验特征的相关性
plt.rcParams['figure.figsize'] =