机器学习代码实战——PCA(主成分分析)
文章目录
- 1.主成分分析基本概念
- 2.代码
1.主成分分析基本概念
2.代码
导入必要的库
import pandas as pd
import numpy as np
from sklearn.datasets import load_iris #sklearn中导入load_iris数据
import matplotlib.pyplot as plt
from sklearn.preprocessing import StandardScaler
%matplotlib inline
加载数据,构建DataFrame
iris = load_iris() #加载数据集
df = pd.DataFrame(iris.data, columns = iris.feature_names) #创建DataFrame对象
df['label'] = iris.target #iris.target是标签
df.columns = ['speal length','speal width', 'petal length', 'petal width', 'label']
df.label.value_counts() #统计不同标签的个数
X = df.iloc[:,0:4] #对df进行切分第0、1、2、3列为X
print(X)
y = df.iloc[:,4] #第4列为Y
print(y)
在scikit-learn中,与PCA相关的类都在sklearn.decomposition包中。最常用的PCA类就是sklearn.decomposition.PCA
PCA类基本不需要调参,一般来说,我们只需要指定我们需要降维到的维度,或者我们希望降维后的主成分的方差和占原始维度所有特征方差和的比例阈值就可以了
sklearn_pca = sklearnPCA(n_components = 2) #n_components这个参数可以帮我们指定希望PCA降维后的特征维度数目(PCA算法中所要保留的主成分个数n,也即保留下来的特征个数n)
Y = sklearn_pca.fit_transform(X) #用X来训练PCA模型,同时返回降维后的数据
构建主成分分析后的数据
principalDf = pd.DataFrame(data = np.array(Y),columns = ['principal component 1','principal component 2'])
print(principalDf)
Df = pd.concat([principalDf,y],axis = 1) #需要连接的对象,eg [df1, df2] #axis = 0, 表示在水平方向(row)进行连接 axis = 1, 表示在垂直方向(column)进行连接
print(Df)
画出主成分分析后的散点图
fig = plt.figure(figsize = (5,5)) #控制图片大小
ax = fig.add_subplot(1,1,1) #“111”表示“1×1网格,第一子图”,“234”表示“2×3网格,第四子图”。ax.set_xlabel('Principal Component 1',fontsize = 15)
ax.set_ylabel('Principal Component 2',fontsize = 15)
ax.set_title('2 component PCA',fontsize = 20)targets = [0,1,2]
colors = ['r', 'g', 'b']
for target, color in zip(targets, colors): #zip() 函数用于将可迭代的对象作为参数,将对象中对应的元素打包成一个个元组,然后返回由这些元组组成的列表。indicesToKeep = Df['label'] == targetax.scatter(Df.loc[indicesToKeep,'principal component 1'],Df.loc[indicesToKeep,'principal component 2'], c = color ,s = 50)ax.legend(targets)
ax.grid()
机器学习代码实战——PCA(主成分分析)相关推荐
- 机器学习代码实战——线性回归(多变量)(Linear Regression)
文章目录 1.实验目的 2.导入必要模块并读取数据 3.对数据进行处理 3.1.experience字段数字化 3.2.test_score(out of 10)字段NaN替换为平均数 4.训练+预测 ...
- 机器学习代码实战——KMeans(聚类)
文章目录 1.实验目的 2.导入必要模块 3.用pandas处理数据 4.拟合+预测 5.把预测结果合并到DF 6.可视化聚类效果 7.比较不同的簇数的均方误差 8.对数据归一化处理 1.实验目的 1 ...
- 【一起入门MachineLearning】中科院机器学习第*课-PCA主成分分析
专栏介绍:本栏目为 "2021秋季中国科学院大学周晓飞老师的机器学习" 课程记录,不仅仅是课程笔记噢- 如果感兴趣的话,就和我一起入门Machine Learning吧
- 机器学习代码实战——网格搜索和交叉验证(GridSearchCV)
文章目录 1.实验目的 2.导入必要模块并读取数据 3.构建模型-参数字典 4.训练 5.打印不同模型.不同参数对应的结果 1.实验目的 (1)运用GridSearchCV比较不同的模型.不同的参数对 ...
- 机器学习代码实战——朴素贝叶斯(实现垃圾邮件分类)
文章目录 1.实验目的 2.导入必要模块并读取数据 3.训练+预测 4.使用Sklearn Pipeline方法 1.实验目的 (1)分析邮件数据并对数据进行预处理 (2)运行朴素贝叶斯模型对邮件进行 ...
- 机器学习代码实战——逻辑回归(Logistic Regression)
文章目录 1.实验目的 2.导入必要模块并读取数据 3.可视化分析数据 4.数据预处理 5.训练+预测 1.实验目的 (1)对数据进行分析,以找出哪些变量对员工保留有直接和明显的影响(即它们是离开公司 ...
- 机器学习代码实战——拆分训练集与测试集(train_test_split)
文章目录 1.实验目的 2.导入必要模块并读取数据 1.实验目的 我们有一个包含二手宝马车价格的数据集. 我们将分析此数据集,并建立一个可以通过以汽车的行驶里程和车龄作为输入来预测价格的预测函数. 我 ...
- 机器学习代码实战——梯度下降(gradient descent)
文章目录 1.实验目的 2.梯度下降 2.1.借助sklearn库 2.2.手写梯度下降函数 1.实验目的 本实验将使用两种方法实现梯度下降算法并可打印出参数,可视化梯度下降过程.第一种方法是借助sk ...
- 机器学习代码实战——线性回归(单变量)(Linear Regression)
文章目录 1.实验目的 2.导入必要模块并读取数据 3.画当前数据分布散点图 4.提取数据和标签 5.训练+预测 1.实验目的 使用线性回归模型预测2020年加拿大公民的人均收入. 数据链接 密码:z ...
最新文章
- Identity Mappings in Deep Residual Networks
- (素材源代码) 猫猫学iOS 之UIDynamic重力、弹性碰撞吸附等现象牛逼Demo
- Linux下C程序的链接过程
- a查询计算机主机路由表信息,计算机网络主机A向其他主机B进行通信的流程
- vue设置列表数据添加
- php序列化后换服务器不能解析,利用php序列化和反序列化的语法差异绕过防护_网站服务器运行维护...
- C++自增和自减运算符(--和++)
- 可视化编程软件有哪些好的推荐?
- 单页面动画 html5,9款惊艳的HTML5/CSS3动画应用赏析
- 超详细用实验教你如何配置OSPF
- 给QlineEdit创建简单的clicked 信号方式
- 室内定位导航地图制作问题
- 函数 over() 的含义
- 编辑网页document.body.contentEditable=‘true‘;
- 《经典递归问题:汉罗塔》
- 寿星万年历源代码(JAVA/VB NET)
- 5G室内小型基站行业现状调研及趋势分析报告
- view设置圆角 android,Android 设置圆角View
- 蓝桥杯试题 算法提高 扶老奶奶过街(C语言)
- Windows系统安装lua
热门文章
- Linux命令解释之vim
- 【Computer Organization笔记22】虚拟存储器:段式存储,页式存储
- 【转载】Java NIO学习
- 模块说和神经网络学说_让神经网络解释自己:牛津大学博士小姐姐,用毕业论文揭示“炼丹炉”结构...
- 【转】虚拟机下安装小红帽Linux9.0图解
- 北理计算机语言智能与社会计算,北京理工大学校长张军描绘智慧社会:人在思、云在算、端在造...
- rrdtool的安装
- Python pip 用法大全
- Button或者ImageButton的背景设为透明或者半透明
- 三维点云学习(2)五种算法比较