数据预处理之数据规约

目录

一、前言

二、PCA的主要参数:

三、数据归约任务1

四、数据规约任务2


一、前言

PCA(Principal Component Analysis),即主成分分析方法,是一种使用最广泛的数据降维算法。PCA的主要思想是将n维特征映射到k维上,这k维是全新的正交特征也被称为主成分,是在原有n维特征的基础上重新构造出来的k维特征。

本质上,通过计算数据矩阵的协方差矩阵,然后得到协方差矩阵的特征值特征向量,选择特征值最大(即方差最大)的k个特征所对应的特征向量组成的矩阵。这样就可以将数据矩阵转换到新的空间当中,实现数据特征的降维。   ——来自《知乎》

二、PCA的主要参数:

1)n_components:这个参数指定了希望PCA降维后的特征维度数目。

最常用的做法是直接指定降维到的维度数目,此时n_components是一个大于等于1的整数。

当然,我们也可以指定主成分的方差和所占的最小比例阈值,让PCA类自己去根据样本特征方差来决定降维到的维度数,此时n_components是一个(0,1]之间的浮点数

2)explained_variance_ratio_,它代表降维后的各主成分的方差值占总方差值的比例,这个比例越大,则越是重要的主成分。

三、数据归约任务1

导入文件Euro2012_stats.csv”,查看后去除数据中不能直接参与PCA运算的属性列(队伍名称,百分数等列)。

注:对应csv文件可在博客资源中获取。

from sklearn.decomposition import PCA
import pandas as pd
eu=pd.read_csv("D:\\dataspace\\Euro2012_stats.csv",encoding="utf-8-sig")
pd.set_option('display.max_rows',None)
pd.set_option('display.max_columns', None)
eu=pd.DataFrame(eu) #数据预览
print(eu.dtypes)  #查看各特征列对应的属性
eu1=eu.drop(columns=['Team','Shooting Accuracy','% Goals-to-shots','Passing Accuracy','Saves-to-shots ratio'])  #删除非数值型属性的特征列
print(eu1) #删除后的数据预览

 数据预览:

 查询各特征对应的属性:

 删除后的数据预览:

四、数据规约任务2

对数据进行PCA分析。引入pca(from sklearn.decomposition import PCA),将所有数值型属性列降维降到5维,并查看降维结果与信息。通过分析结果,选择并说明合适的压缩维度。(自学explained_variance_ratio_,在实验报告中说明数值代表什么含义,并展示结果)

from sklearn.decomposition import PCA
pca=PCA(n_components=5)
pca.fit(eu1)
newdata=pca.transform(eu1)
print('降维结果\n',newdata)
newdata1=pd.DataFrame(newdata)
print('方差值所占比\n',pca.explained_variance_ratio_)

 降维结果如下图:

 

通过计算explained_variance_ratio_可以得到各主成分的方差值占总方差值的比例,也就是方差贡献率。

 将降维后的数据特征列的首列作为y轴,原数据中的team列作为x轴,绘制折线图:

重新调参,确定合适的压缩维度:

scorelist =[]
for i in range(16):
    pca1=PCA(n_components=i)
    pca2=pca1.fit(eu1)
    score=pca2.score(eu1)
    scorelist.append(score)
print(scorelist)
import matplotlib.pyplot as plt
plt.figure(figsize=(20,10))
plt.plot(range(16),scorelist,label='score')
plt.legend()
plt.show()

 

如图,根据score的值可得出,最高点对应横坐标为16,但总共数据对象就16簇,划分太多容易造成分类不准确的情况,故适合划分的压缩维度为8簇更合适。

 

 

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
数据挖掘是从大量数据中提取有用信息的过程,而数据预处理数据挖掘的重要步骤之一,它包括数据清洗、数据集成、数据变换和数据规约等操作。Python是一种常用的编程语言,也有很多用于数据挖掘和数据预处理的库和工具。 在Python中,有一些常用的库可以用于数据挖掘和数据预处理,例如: 1. NumPy:用于进行数值计算和数组操作,可以处理大规模的数据集。 2. Pandas:提供了高效的数据结构和数据分析工具,可以进行数据清洗、转换和整合等操作。 3. Scikit-learn:是一个机器学习库,提供了各种常用的数据挖掘算法和工具,包括数据预处理方法。 4. Matplotlib和Seaborn:用于数据可视化,可以绘制各种图表和图形,帮助理解和分析数据。 在进行数据预处理时,常见的操作包括: 1. 数据清洗:处理缺失值、异常值和重复值等问题。 2. 数据集成:将多个数据源合并为一个整体,解决数据冗余和不一致性问题。 3. 数据变换:对数据进行转换,例如标准化、归一化、离散化等。 4. 数据规约:降低数据维度,减少数据存储和计算的复杂性。 以下是一些常用的Python代码示例,用于数据预处理: 1. 使用Pandas读取和处理数据: ```python import pandas as pd # 读取CSV文件 data = pd.read_csv('data.csv') # 处理缺失值,使用均值填充 data.fillna(data.mean(), inplace=True) # 处理重复值 data.drop_duplicates(inplace=True) # 数据转换,标准化 data['feature'] = (data['feature'] - data['feature'].mean()) / data['feature'].std() # 数据规约,PCA降维 from sklearn.decomposition import PCA pca = PCA(n_components=2) data_reduced = pca.fit_transform(data) ``` 2. 使用Scikit-learn进行数据预处理: ```python from sklearn.preprocessing import Imputer, StandardScaler from sklearn.decomposition import PCA # 处理缺失值,使用均值填充 imputer = Imputer(strategy='mean') data_imputed = imputer.fit_transform(data) # 数据转换,标准化 scaler = StandardScaler() data_scaled = scaler.fit_transform(data_imputed) # 数据规约,PCA降维 pca = PCA(n_components=2) data_reduced = pca.fit_transform(data_scaled) ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

那个叫马尔的大夫

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值