python - Python 中的 KMeans - 转换变量后保留样本权重
问题描述
我的数据框 (df) 由布尔值、连续变量和一个名为 wt_cnt 的字段的混合组成,该字段指示记录的权重。
在我进行聚类之前,MinMaxScaler 应用于我的数据:
mms = MinMaxScaler()
mms.fit(data)
data_transformed = mms.transform(data)
KMeans 例程如下:
sum_of_squared_distances = []
K = range(1,15)
for k in K:
km = KMeans(n_clusters=k) #init model
km = km.fit(data_transformed, sample_weight=None) #fit model
sum_of_squared_distances.append(km.inertia_) #overall SSE
但是我想从我的第一个 df (wt_cnt) 中保留我的初始字段,该字段指定我的聚类分析的权重。这对我来说很难做到,因为 data_transformed 只是一个矩阵而不是 df。关于如何最有效地做到这一点的任何建议?
下面的例子:
data = [[2,12669,5]
,[2,7057,1]
,[2,6353,1]
,[1,13265,3]
,[2,22615,1]
,[2,9413,1]
,[2,12126,2]
,[2,7579,1]
,[1,5963,1]]
df = pd.DataFrame(data,columns=['Nm','Frsh','wt_cnt'])
mms = MinMaxScaler()
mms.fit(df)
data_transformed = mms.transform(df)
sum_of_squared_distances = []
K = range(1,5)
for k in K:
km = KMeans(n_clusters=k)
km = km.fit(data_transformed, sample_weight=None)
sum_of_squared_distances.append(km.inertia_)
plt.plot(K, sum_of_squared_distances, 'bx-')
plt.xlabel('k')
plt.ylabel('SS dists')
plt.show()
解决方案
推荐阅读
- node.js - KoaJs 自定义 ErrorHandler 中间件现在可以工作
- python - 无法读取网址
- android - 在谷歌播放控制台中上传 apk 时出错
- flutter - 如何在pageView builder颤动中将第一页显示为一半?
- c++ - 使用 CDDS_ITEMPREPAINT 强制调用 OnCustomDraw
- python - Python中的字符串比较以进行协调
- apache-spark - dataset.filter(col("a") !== col("b"));
- vba - 输入数据时,有没有办法按日期过滤 Power BI 分页报表?
- c# - Selenium - 以不同用户身份启动 Edge Chromium
- python - 替换 Numpy 数组 - Python