栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

sklearn 实现 主成分分析

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

sklearn 实现 主成分分析

:param data: 需要进行主成分分析的数据
:param columns: data对应的列名
:param n_components: 主成分参数,为 3表示提取出三个主成分,为 0.75表示提取出的主成分要能代表75%的原数据
:return: 在输入data的基础上新增一列pca值

from sklearn.decomposition import PCA
from sklearn import preprocessing
def Solve(data, columns, n_components):
    '''
    :param data: 需要进行主成分分析的数据
    :param columns: data对应的列名
    :param n_components: 主成分参数,为 3表示提取出三个主成分,为 0.75表示提取出的主成分要能代表75%的原数据
    :return: 在输入data的基础上新增一列pca值
    '''
    scaler = preprocessing.StandardScaler().fit(data)
    x_scaler = pd.DataFrame(scaler.transform(data),
                            columns=columns)
    md = PCA(n_components=n_components)
    md.fit(x_scaler)
    k1_spss = md.components_ / np.sqrt(md.explained_variance_.reshape(n_components, 1))
    x_tf = md.transform(x_scaler)
    scaler2 = preprocessing.StandardScaler().fit(x_tf)
    # 生成对应的列
    cols = produce_col(n_components)
    x_tf_scaler = pd.DataFrame(scaler2.transform(x_tf), columns=cols)
    k_sign = np.sign(k1_spss.sum(axis=1))
    x_tf_scaler_sign = x_tf_scaler * k_sign
    rat = md.explained_variance_ratio_
    x_tf_scaler_sign['FAC_score'] = np.sum(x_tf_scaler_sign * rat, axis=1)
    data['pca'] = x_tf_scaler_sign['FAC_score'].round(6)
    return data

使用方法:

user_data = Solve(user_data, ['submit', 'solved', 'logintime', 'score'], 3)
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/942853.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号