余温|维度爆炸?Python实现数据压缩如此简单( 二 )
参数最好设置得大一些(保留的主成份) , 观察explained_variance_ratio_取值变化 , 即每个主成分能够解释原始数据变异的百分比
【余温|维度爆炸?Python实现数据压缩如此简单】from sklearn.decomposition import PCA
pca = PCA(n_components=9) # 直接与变量个数相同的主成分
pca.fit(data)
结果分析累积解释变异程度# 累积解释变异程度
plt.plot(np.cumsum(pca.explained_variance_ratio_), linewidth=3)
plt.xlabel('成份数')
plt.ylabel('累积解释方差'); plt.grid(True)
可以看出 , 当取主成分数为2时 , 累积解释方差就已经达到0.97有多(0.85 就已经足够) , 说明我们只需要取两个主成分即可
重新建模综上可知两个主成分就已经足够了
pca = PCA(n_components=2) # 直接与变量个数相同的主成分
pca.fit(data)
pca.explained_variance_ratio_
new_data = http://kandian.youth.cn/index/pca.fit_transform(data) # fit_transform 表示将生成降维后的数据
# 查看规模差别
print("原始数据集规模: ", data.shape)
print("降维后的数据集规模:", new_data.shape)
可以看到9个变量压缩成两个主成分!
主成分中各变量的权重分析先看两个主成分与 9 个变量的系数关系
results = pd.DataFrame(pca.components_).T
results.columns = ['pca_1', 'pca_2']
results.index = df.drop(columns='area').columns
results
可以明显看出:
- 主成分1几乎不受data的第二个自变量
人均GDP的影响 , 0.034 , 其他自变量对其影响程度都差不多 。
- 主成分2受data的第二个自变量
人均GDP影响最大 , 达到了0.94
第一个主成分在表达经济总量的指标上的权重相当 , 可考虑命名为
经济总量水平;而第二个主成分只在人均GDP上权重很高 , 可暂时考虑命名为人均水平注意:这里的给主成分命名(包括后续有关因子分析的推文)都是对降维后的数据进行的 , 而不是生成的主成分 , 这样才有比较和描述的价值 。 每个自变量在生成的主成分上的权重只是给这个主成分的命名提供参考 , 真正的命名操作是对压缩后的数据进行 。
new_data = http://kandian.youth.cn/index/pca.fit_transform(data) # fit_transform 表示将生成降维后的数据
results = df.join(pd.DataFrame(new_data, # new_data 是降维后的数据
columns=['经济总量水平', '人均水平'])) # 与原来的数据拼接
results
推荐阅读
- 环球网|美国载212人军用包机着火 窗外火光四射爆炸声不断
- 中国网科技|西门子回应冰箱半夜爆炸:非官方授权维修致使制冷剂泄漏
- 川财证券|川财证券:黄金板块中期维度继续看好
- 数码科技大爆炸|台积电断供华为芯片开启倒计时!已不足10天:华为多位高管表态
- 海峡新资讯|印军联手俄罗斯出兵,大批战舰赶赴救援,印度超级油轮离奇爆炸
- 余温|华为麒麟9000芯片只有1000万片,华为表示可以撑一年半
- 上观新闻|搜3天无生还者,遗憾!黎巴嫩爆炸1个月废墟检测到心跳
- 北青必读|甘肃一铝型材公司熔铸车间爆炸致1死7伤2失踪
- 诸葛小彻|身后就传来爆炸声,俄:发出战争信号,俄罗斯海军刚刚离开
- 孟加拉国清真寺瓦斯爆炸死亡人数上升至24人
