def _discretize_by_gmm(col, num_bins, random_state):
nan_idx = col[col.isnull()].index
gmm = GaussianMixture(n_components=num_bins,covariance_type='full',random_state=random_state)
gmm = gmm.fit(X=np.expand_dims(col.dropna(), 1))
if col.isnull().sum() == 0:
group = gmm.predict(X=np.expand_dims(col, 1))
else:
group = gmm.predict(X=np.expand_dims(col.dropna(), 1)).astype(float)
for idx in nan_idx:
group = np.insert(group,idx,np.nan)
return pd.Series(group)
评论列表
文章目录