Dan*_*Dan 8 pca python-3.x pandas scikit-learn
我正在尝试使用mca包在Python中进行多个对应分析.
我对如何使用它感到有点困惑.随着PCA我希望到适合一些数据(即找到这些数据主要成分),再后来我就能够使用,我发现主成分变换看不见的数据.
根据MCA文档,我无法确定如何执行此最后一步.我也搞不懂什么任何的古怪cryptically命名的属性和方法做(即.E,.L,.K,.k等).
到目前为止,如果我有一个包含字符串的列的DataFrame(假设这是DF中唯一的列)我会做类似的事情
import mca
ca = mca.MCA(pd.get_dummies(df, drop_first=True))
Run Code Online (Sandbox Code Playgroud)
从我可以收集到的
ca.fs_r(1)
Run Code Online (Sandbox Code Playgroud)
是在数据的变换df和
ca.L
Run Code Online (Sandbox Code Playgroud)
应该是特征值(虽然我得到的1s 的向量比我的特征数量少一个元素?).
现在,如果我有更多具有相同功能的数据,让我们说df_new并假设我已经正确地将其转换为虚拟变量,我如何找到ca.fs_r(1)新数据的等价物
Axo*_*ois 23
另一种方法是使用库王子,它可以轻松使用工具,例如:
您可以首先安装:
pip install --user prince
Run Code Online (Sandbox Code Playgroud)
要使用MCA,它相当简单,可以通过几个步骤完成(就像sklearn PCA方法一样)。我们首先构建我们的数据框。
import pandas as pd
import prince
X = pd.read_csv('https://archive.ics.uci.edu/ml/machine-learning-databases/balloons/adult+stretch.data')
X.columns = ['Color', 'Size', 'Action', 'Age', 'Inflated']
print(X.head())
mca = prince.MCA()
# outputs
>> Color Size Action Age Inflated
0 YELLOW SMALL STRETCH ADULT T
1 YELLOW SMALL STRETCH CHILD F
2 YELLOW SMALL DIP ADULT F
3 YELLOW SMALL DIP CHILD F
4 YELLOW LARGE STRETCH ADULT T
Run Code Online (Sandbox Code Playgroud)
其次是调用fitandtransform方法。
mca = mca.fit(X) # same as calling ca.fs_r(1)
mca = mca.transform(X) # same as calling ca.fs_r_sup(df_new) for *another* test set.
print(mca)
# outputs
>> 0 1
0 0.705387 8.373126e-15
1 -0.386586 8.336230e-15
2 -0.386586 6.335675e-15
3 -0.852014 6.726393e-15
4 0.783539 -6.333333e-01
5 0.783539 -6.333333e-01
6 -0.308434 -6.333333e-01
7 -0.308434 -6.333333e-01
8 -0.773862 -6.333333e-01
9 0.783539 6.333333e-01
10 0.783539 6.333333e-01
11 -0.308434 6.333333e-01
12 -0.308434 6.333333e-01
13 -0.773862 6.333333e-01
14 0.861691 -5.893240e-15
15 0.861691 -5.893240e-15
16 -0.230282 -5.930136e-15
17 -0.230282 -7.930691e-15
18 -0.695710 -7.539973e-15
Run Code Online (Sandbox Code Playgroud)
您甚至可以打印出它的图片图表,因为它包含了matplotlib库。
ax = mca.plot_coordinates(
X=X,
ax=None,
figsize=(6, 6),
show_row_points=True,
row_points_size=10,
show_row_labels=False,
show_column_points=True,
column_points_size=30,
show_column_labels=False,
legend_n_cols=1
)
ax.get_figure().savefig('images/mca_coordinates.svg')
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6058 次 |
| 最近记录: |