实战 PCA
简介
PCA
code
#加载数据
import pandas as pd
import numpy as np
data = pd.read_csv('iris_data.csv')
data.head(100)
print(pd.value_counts(data.loc[:,'label']))
#定义X,y
X = data.drop(['target','label'],axis=1)#去掉最后两列
y = data.loc[:,'label']
#建立模型
from sklearn.neighbors import KNeighborsClassifier
KNN = KNeighborsClassifier(n_neighbors=3)#选用最近的三个点来预测新的点属于哪一类
KNN.fit(X,y)
y_predict = KNN.predict(X)
from sklearn.metrics import accuracy_score
accuracy = accuracy_score(y,y_predict)
print(accuracy)
#将数据进行标准化处理
from sklearn.preprocessing import StandardScaler
X_norm = StandardScaler().fit_transform(X)
print(X_norm)
#数据可视化
%matplotlib inline
from matplotlib import pyplot as plt
fig1 = plt.figure(figsize=(20,5))
plt.subplot(121)
plt.hist(X.loc[:,'sepal length'],bins=100)#这里只取sepal length这一个维度
plt.subplot(122)
plt.hist(X_norm[:,0],bins=100)#将标准化处理后的数据可视化
plt.show()
#计算均值和标准差
x1_mean = X.loc[:,'sepal length'].mean()#原数据的均值
x1_norm_mean = X_norm[:,0].mean()#处理后数据的均值
x1_sigma = X.loc[:,'sepal length'].std()#原数据的标准差
x1_norm_sigma = X_norm[:,0].std()#处理后数据的标准差
print(x1_mean,x1_sigma,x1_norm_mean,x1_norm_sigma)
#看一下原数据的维度,下面要用
print(X.shape)
# pca analysis
from sklearn.decomposition import PCA
pca = PCA(n_components=4)#原数据是维度是4,要进行同等维度的PCA处理,故n_components=4
X_pca = pca.fit_transform(X_norm)#这里已经是经过PCA处理的主成分了
#计算各维度下的主成分的方差比例
var_ratio = pca.explained_variance_ratio_
print(var_ratio)
#可视化数据
fig2 = plt.figure(figsize=(20,5))
plt.bar([1,2,3,4],var_ratio)#有4个维度,所以这里是1,2,3,4
plt.xticks([1,2,3,4],['PC1','PC2','PC3','PC4'])#给每维度的主成分的方差比例图加上名称
plt.ylabel('variance ratio of each PC')#给y轴加上名称
plt.show()
pca = PCA(n_components=2) #因为我们要把数据维度降为2,所以这里n_components=2
X_pca = pca.fit_transform(X_norm)
X_pca.shape #看一下维度,这里已经为2了
type(X_pca)#看一下类型
#可视化数据
fig3 = plt.figure(figsize=(10,6))
setosa = plt.scatter(X_pca[:,0][y==0],X_pca[:,1][y==0])#标签为0的
versicolor = plt.scatter(X_pca[:,0][y==1],X_pca[:,1][y==1])#标签为1的
virginica = plt.scatter(X_pca[:,0][y==2],X_pca[:,1][y==2])#标签为2的
plt.legend((setosa,versicolor,virginica),('setosa','versicolor','virginica'))
plt.xlabel('PC1')
plt.ylabel('PC2')
plt.show()
KNN = KNeighborsClassifier(n_neighbors=3)
KNN.fit(X_pca,y)
y_predict = KNN.predict(X_pca)
from sklearn.metrics import accuracy_score
accuracy = accuracy_score(y,y_predict)
print(accuracy)
image

实战 PCA的更多相关文章
- 主成分分析(PCA)原理及R语言实现
原理: 主成分分析 - stanford 主成分分析法 - 智库 主成分分析(Principal Component Analysis)原理 主成分分析及R语言案例 - 文库 主成分分析法的原理应用及 ...
- 主成分分析(PCA)原理及R语言实现 | dimension reduction降维
如果你的职业定位是数据分析师/计算生物学家,那么不懂PCA.t-SNE的原理就说不过去了吧.跑通软件没什么了不起的,网上那么多教程,copy一下就会.关键是要懂其数学原理,理解算法的假设,适合解决什么 ...
- 掌握Spark机器学习库(课程目录)
第1章 初识机器学习 在本章中将带领大家概要了解什么是机器学习.机器学习在当前有哪些典型应用.机器学习的核心思想.常用的框架有哪些,该如何进行选型等相关问题. 1-1 导学 1-2 机器学习概述 1- ...
- 《机器学习实战》学习笔记——第13章 PCA
1. 降维技术 1.1 降维的必要性 1. 多重共线性--预测变量之间相互关联.多重共线性会导致解空间的不稳定,从而可能导致结果的不连贯.2. 高维空间本身具有稀疏性.一维正态分布有68%的值落于正负 ...
- 机器学习实战 - 读书笔记(13) - 利用PCA来简化数据
前言 最近在看Peter Harrington写的"机器学习实战",这是我的学习心得,这次是第13章 - 利用PCA来简化数据. 这里介绍,机器学习中的降维技术,可简化样品数据. ...
- 机器学习实战(Machine Learning in Action)学习笔记————09.利用PCA简化数据
机器学习实战(Machine Learning in Action)学习笔记————09.利用PCA简化数据 关键字:PCA.主成分分析.降维作者:米仓山下时间:2018-11-15机器学习实战(Ma ...
- 《机器学习实战》学习笔记第十三章 —— 利用PCA来简化数据
相关博文: 吴恩达机器学习笔记(八) —— 降维与主成分分析法(PCA) 主成分分析(PCA)的推导与解释 主要内容: 一.向量內积的几何意义 二.基的变换 三.协方差矩阵 四.PCA求解 一.向量內 ...
- python异常值(outlier)检测实战:KMeans + PCA + IsolationForest + SVM + EllipticEnvelope
机器学习_深度学习_入门经典(博主永久免费教学视频系列) https://study.163.com/course/courseMain.htm?courseId=1006390023&sha ...
- 【机器学习实战】第13章 利用 PCA 来简化数据
第13章 利用 PCA 来简化数据 降维技术 场景 我们正通过电视观看体育比赛,在电视的显示器上有一个球. 显示器大概包含了100万像素点,而球则可能是由较少的像素点组成,例如说一千个像素点. 人们实 ...
- 13机器学习实战之PCA(2)
PCA——主成分分析 简介 PCA全称Principal Component Analysis,即主成分分析,是一种常用的数据降维方法.它可以通过线性变换将原始数据变换为一组各维度线性无关的表示,以此 ...
随机推荐
- 🎀EXCEL-时间函数
简介 在Excel中,时间函数用于处理和操作日期和时间数据; 以下是Excel中常用的时间函数及其常见应用场景的总结. 函数 时间函数基础 TIME 语法:TIME(hour, minute, sec ...
- 服务端获取实际IP工具类
import javax.servlet.http.HttpServletRequest; import java.net.InetAddress; import java.net.UnknownHo ...
- elemengui分页
<!-- 分页模块 --> <template> <div class="block" style="margin-top:20px&quo ...
- blk_mq多队列块设备浅析
1. 为什么要使用多队列 在主机中,多cpu运行多个线程,每个线程都能和文件系统交互,文件系统层也是用多线程和bio层交互,但是,块设备层只有一个队列: 在块设备层,来自多个cpu的bio请求被放在同 ...
- Git错误,Updates were rejected because the tip of your current branch is behind
问题:Updates were rejected because the tip of your current branch is behind 在push代码时,遇到这种问题Updates wer ...
- java中堆污染(heap pollution)以及@SafeVarargs注解使用
什么是堆污染 heap pollution 堆污染发生在使用可变参数(varargs)或泛型时,将不兼容的类型插入到一个泛型对象中.这会导致在运行时尝试访问这些对象时发生 ClassCastExcep ...
- Sentinel——控制台使用
简介 官网:https://sentinelguard.io/ 随着微服务的流行,服务和服务之间的稳定性变得越来越重要.Sentinel 是面向分布式.多语言异构化服务架构的流量治理组件,主要以流量为 ...
- 工具 | Hashcat
0x00 简介 Hashcat是一款强大的密码破解工具. 下载地址 Hashcat下载: Hashcat下载 0x01 功能说明 直接破解 组合攻击 掩码暴力破解 混合攻击 联合攻击 注:仅供安全研究 ...
- 操作系统综合题之“采用实时调度,可调度的限制条件和可调度的最大X值是是多少ms的CPU时间”
一.问题:单处理器情况下,m个周期性实时进程,若进程i处理时间为Ci,周期时间为Pi < (1 ≤ i ≤ m) 1.要使系统可调度的限制条件什么? 2.设置一个实时系统使用了4个周期事件,其周 ...
- MFC对话框显示时背景闪烁
在显示一个对话框时,可以在WM_PAINT消息处理函数中绘制窗口的背景色.但会出现一种情况,在还未执行完OnPaint函数,对话框已经先显示出白色窗体,如下: 还未绘制窗体,背景色先被显示. 解决办法 ...