机器学习算法基础——数据降维
12.数据的降维之特征选择
特征选择
- 冗余:部分特征的相关度高,容易消耗计算性能
- 噪声:部分特征对预测结果有负影响
特征选择就是单纯地从提取到的所有特征中选择部分特征作为训练集特征,特征在选择前和选择后可以改变值、也不改变值,但是选择后的特征维数肯定比选择前小,毕竟我们只选择了其中的一部分特征。
主要方法(三大武器):
- Filter(过滤式):VarianceThreshold
- Embedded(嵌入式):正则化、决策树
- Wrapper(包裹式)
sklearn特征选择API
sklearn.feature_selection.VarianceThreshold
VarianceThreshold语法
VarianceThreshold(threshold = 0.0)
删除所有低方差特征
Variance.fit_transform(X,y)
X:numpy array格式的数据[n_samples,n_features]
- 返回值:训练集差异低于threshold的特征将被删除。 默认值是保留所有非零方差特征,即删除所有样本 中具有相同值的特征。
from sklearn.feature_selection import VarianceThresholddef var():var = VarianceThreshold(threshold=0.0)data = var.fit_transform([[0, 2, 0, 3], [0, 1, 4, 3], [0, 1, 1, 3]])print(data)return Nonevar()
[[2 0][1 4][1 1]]
PCA(主成分分析)
- 本质:PCA是一种分析、简化数据集的技术
- 目的:是数据维数压缩,尽可能降低原数据的维数(复杂度),损失少量信息。
- 作用:可以削减回归分析或者聚类分析中特征的数量
PCA语法
PCA(n_components=None)
- 将数据分解为较低维数空间
PCA.fit_transform(X)
- X:numpy array格式的数据[n_samples,n_features]
- 返回值:转换后指定维度的array
from sklearn.decomposition import PCA
def pca():pca = PCA(n_components=0.9)data = pca.fit_transform([[2,8,4,5],[6,3,0,8],[5,4,9,1]])print(data)return None
pca()
[[ 1.28620952e-15 3.82970843e+00][ 5.74456265e+00 -1.91485422e+00][-5.74456265e+00 -1.91485422e+00]]
13、14.降维案例
用户对物品类别的喜好细分降维
import pandas as pd
from sklearn.decomposition import PCA
#读取四张表
prior = pd.read_csv("/Users/zhucan/Desktop/instacart-market-basket-analysis/order_products__prior.csv")
products = pd.read_csv("/Users/zhucan/Desktop/instacart-market-basket-analysis/products.csv")
orders = pd.read_csv("/Users/zhucan/Desktop/instacart-market-basket-analysis/orders.csv")
aisles = pd.read_csv("/Users/zhucan/Desktop/instacart-market-basket-analysis/aisles.csv")
#合并四张表
_mg = pd.merge(prior,products,on=["product_id","product_id"])
_mg = pd.merge(_mg,orders,on=["order_id","order_id"])
mt = pd.merge(_mg,aisles,on=["aisle_id","aisle_id"])
cross = pd.crosstab(mt["user_id"],mt["aisle"])
pca =PCA(n_components=0.9)
data = pca.fit_transform(cross)
print(pca)
[[-2.42156587e+01 2.42942720e+00 -2.46636975e+00 ... 6.86800336e-011.69439402e+00 -2.34323022e+00][ 6.46320806e+00 3.67511165e+01 8.38255336e+00 ... 4.12121252e+002.44689740e+00 -4.28348478e+00][-7.99030162e+00 2.40438257e+00 -1.10300641e+01 ... 1.77534453e+00-4.44194030e-01 7.86665571e-01]...[ 8.61143331e+00 7.70129866e+00 7.95240226e+00 ... -2.74252456e+001.07112531e+00 -6.31925661e-02][ 8.40862199e+01 2.04187340e+01 8.05410372e+00 ... 7.27554259e-013.51339470e+00 -1.79079914e+01][-1.39534562e+01 6.64621821e+00 -5.23030367e+00 ... 8.25329076e-011.38230701e+00 -2.41942061e+00]]
15.机器学习算法分类以及开发流程
机器学习基础
(1)算法是核心,数据和计算是基础
(2)找准定位 大部分复杂模型的算法设计都是算法工程师在做,而我们
- 分析很多的数据
- 分析具体的业务
- 应用常见的算法
- 特征工程、调参数、优化
数据类型
离散型数据:由记录不同类别个体的数目所得到的数据,又称计数数据,所有这些数据全部都是整数,而且不能再细分,也不能进一步提高他们的精确度。
连续型数据:变量可以在某个范围内取任一数,即变量的取值可以是连续的,如,长度、时间、质量值等,这类整数通常是非整数,含有小数部分。
机器学习算法分类
监督学习(特征值+目标值)
- 分类 (目标值离散型) k-近邻算法、贝叶斯分类、决策树与随机森林、逻辑回归、神经网络
- 回归(目标值连续性)线性回归、岭回归
- 标注 隐马尔可夫模型(不做要求)
无监督学习(特征值)
- 聚类 k-means
机器学习算法基础——数据降维相关推荐
- 机器学习算法基础——数据特征预处理
08.特征预处理-归一化 特征处理 通过特定的统计方法(数学方法)将数据转换成算法要求的数据 数值型数据:标准缩放: 归一化 标准化 缺失值 类别型数据:one-hot编码 时间 ...
- [飞桨机器学习]六种常见数据降维
[飞桨机器学习]六种常见数据降维 事实上,在高维情形下 现的数据样本稀疏. 距离计算困 难等问是所有机器学习方法共同面 的严重障碍, 被称为" 维数灾难" (curse of di ...
- R语言plotly可视化:使用PCA算法进行数据降维、使用plotly可视化随着主成分的增加解释的方差的量(plotting explained variance)
R语言plotly可视化:使用PCA算法进行数据降维.使用plotly可视化随着主成分的增加解释的方差的量(plotting explained variance) 目录
- R语言plotly可视化:使用PCA算法进行数据降维、使用plotly可视化PCA所有的主成分绘制散点图矩阵、降维后的两个(三个)核心主成分的二维、三维可视化图形、方差解释的量、载荷图等
R语言plotly可视化:使用PCA算法进行数据降维.使用plotly可视化PCA所有的主成分绘制散点图矩阵.降维后的两个(三个)核心主成分的二维.三维可视化图形.方差解释的量.载荷图等 目录
- 超级实用!如何为机器学习算法准备数据?
点击上方"AI有道",选择"星标"公众号 重磅干货,第一时间送达 本文为<Scikit-Learn 和 TensorFlow 机器学习指南>的第二章 ...
- 机器学习基础-数据降维
http://blog.itpub.net/29829936/viewspace-2643140/ 2019-05-01 10:06:00 首先需要了解下:什么叫做数据降维,为什么要对数据进行降维,如 ...
- 机器学习算法基础概念学习总结
转自:http://blog.csdn.net/lantian0802/article/details/38333479 1.基础概念: (1) 10折交叉验证:英文名是10-fold cross-v ...
- python降维之时间类型数据的处理_【Python算法】数据降维概述
数据降维概述 1.数据降维概述 所谓的数据降维就是指采用某种映射方法,将原高维空间中的数据点映射到低维度的空间中,可以解决大规模特征下的数据显示问题,使得数据集更易使用,降低后续算法的计算,消除噪声影 ...
- 【转载】机器学习算法基础概念学习总结
1.基础概念: (1) 10折交叉验证:英文名是10-fold cross-validation,用来测试算法的准确性.是常用的测试方法.将数据集分成10份.轮流将其中的9份作为训练数据,1分作为测试 ...
最新文章
- centos7 install 安装mysql
- C++操作Redis的简单例子
- 全网最经典26道Spring面试题总结,终获offer
- 测量分类准确率的过程算坍缩吗?
- Jerry's spark demo application
- Java加密与解密的艺术~数字证书~证书管理
- python打印表格_怎么使用python脚本实现表格打印?
- 概述--Nginx集成Vcenter 6.X HTML Console系列之 1--(共4)
- C# 串口操作系列(1) -- 入门篇,一个标准的,简陋的串口例子。
- HMM学习(2)-Generating Patterns
- POJ 2287 田忌赛马 贪心算法
- mybatis添加数据时返回主键 insert 返回主键值
- java利用xml生成excel_代码快速 实现xml 转换为 Excel(xml转excel通用类-java-完成代码可作工具使用).doc...
- 《Java 核心技术 卷1》 笔记 第八章 事件处理
- STM32串口中断接收
- java几种排序方式
- aruba AP密码忘记恢复出厂设定
- 解决U盘受保护(适用于U盘或移动硬盘)-亲测有效
- JavaSE——IO流
- linux设置打开终端快捷键
热门文章
- java web压缩过滤器_Java Web过滤器Filter(五)
- led内部结构_粘合剂和密封胶性质一样吗?用在汽车、LED灯具需要注意什么?
- python爬虫,爬取猫眼电影2(xpath和bs4)
- MySQL中的数据查询
- 常见的物联网通信协议
- 继承关系中的拷贝构造函数和赋值操作重载函数分析
- html 下拉框字体,怎么把select下拉菜单里的文字设置成左右滚动效果
- python生成日历书上哪里错了_python生成日历 - osc_a5pzxo31的个人空间 - OSCHINA - 中文开源技术交流社区...
- Android 文本实现跑马灯效果 用自带的TextView控件
- c++ 函数的指针调用