python机器学习算法与数据降维分析详解
作者:Swayzzu 发布时间:2023-09-20 19:40:27
一、数据降维
机器学习中的维度就是特征的数量,降维即减少特征数量。降维方式有:特征选择、主成分分析。
1.特征选择
当出现以下情况时,可选择该方式降维:
①冗余:部分特征的相关度高,容易消耗计算性能
②噪声:部分特征对预测结果有影响
特征选择主要方法:过滤式(VarianceThreshold)、嵌入式(正则化、决策树)
过滤式:
sklearn特征选择API
sklearn.feature_selection.VarianceThreshold
注意:没有最好的方差选择,需要根据实际效果选择方差。
2.主成分分析(PCA)
API:sklearn.decomposition
主成分分析会尽可能降低原数据的维数,损失少量信息。当特征数量达到上百的时候,就需要考虑主成分分析。可以削减回归分析或者聚类分析 * 征的数量。
PCA语法:
里面的n_components通常填0-1的小数,代表保留百分之多少的数据,比如0.95意思是保留95%的数据。通常在0.9-0.95之间
3.降维方法使用流程
例如:研究用户和购买物品类别的关系,数据有不同的表格存储,均为csv文件,但所需的两者“用户”和“购买物品类别”,存在于不同的表中。则可以按照以下流程进行:
1.观察各个表格的键,通过相同的键对表格进行合并,使用pandas.merge(表1,表2,键1,键2)方法,其中键1和键2相同。经过多次合并,最终将两个目标合并到一张表中。
2.通过交叉表pd.crosstab(合并后的表['用户'], 合并后的表['物品类别']),建立一个以用户为行,以物品类别为列的数据表。
3.对表格进行数据的降维,可以使用PCA(n_components=0.9),保留90%的有效信息,输出降维后的数据。即可有效减少维度,并确保留存90%的有效信息。
二、机器学习开发流程
1.机器学习算法分类
数据类型:
离散型:区间内不可分,通常是在分类型问题中。
连续型:区间内可分,通常是在预测型问题中。
算法分类:
算法总体分为两类,监督学习和无监督学习。
①监督学习包含特征值+目标值,算法又分为两小类,分类算法和回归算法。
分类算法:k-近邻算法、贝叶斯分类、决策树与随机森林、逻辑回归、神经网络
回归算法:线性回归、岭回归
②无监督学习只有特征值,通常是聚类算法:k-means
2.机器学习开发流程
机器学习开发首先需要有数据,数据来源可能有以下几种:公司本身有数据、合作过来的数据、购买的数据。
具体开发流程如下:
①明确实际问题做什么:根据目标值数据类型,建立模型,划分应用种类。看看是分类问题还是预测问题。
②数据的基本处理:使用pandas处理数据,缺失值,合并表等等。
③特征工程:对数据特征进行处理(重要)。
④找到合适的算法去进行预测。
⑤模型的评估,判定效果→上线使用,以API形式提供;若模型评估没有合格:换算法、参数,特征工程
sklearn数据集的使用:
通常在使用前会对数据集进行划分,从数据中拿出约75%作为训练集、25%作为测试集。也可以0.8/0.2等。通常0.75/0.25是使用最多的。
sklearn数据集划分API:sklearn.model_selection.train_set_split
sklearn数据集API:
获取数据集返回的类型:
数据集进行分割:
用于分类的大数据集:
sklearn回归数据集:
三、转换器与估计器
1.转换器
在数据处理中用到的fit_tansform方法中,其实可以拆分为fit方法和transform方法。
fit_transform() = fit() + transform()
若直接使用fit_transform(),则是对输入的数据进行求平均值、标准差,并使用它们进行数据处理最终输出结果。
如果拆开的话:
fit()
:输入数据,计算平均值,标准差等,不进行后续工作。
transform()
:使用fit计算好的内容进行转换。
也就是说可以通过fit()方法,生成1个数据对应的标准,使用这个标准,对其他数据,通过transform方法进行转换。
2.估计器
估计器就是已经实现了的算法的API,可以直接调用,输入相关数据,对结果进行预测等。
估计器工作流程:
1.调用fit(x_train, y_train),输入训练集
2.输入测试集的数据(x_test, y_test),调用不同接口可得不同结果
API①:y_predict = predict(x_test),该接口可获得算法对y的预测值。
API②:score(x_test, y_test) ,该接口可获得预测的准确率。
来源:https://blog.csdn.net/Swayzzu/article/details/120265294
猜你喜欢
- 本文实例讲述了PHP实现ASCII码与字符串相互转换的方法。分享给大家供大家参考,具体如下:<?phpclass ascii { &n
- CSS Type set是一款在线字体调整工具。你可以使用它来对字型进行排版调整并实时的看到CSS代码。在下图中,其中,你可以设置文本的字体
- 一、软件准备:以下均为截止2005-4-20的最新正式版本PHP(5.1.2):http://www.php.netMySQL(5.0.19
- 最近各地中小学都在开展线上教学,有些不自觉的小朋友们用电脑在线学习的时候会趁家长不在的时候偷偷玩游戏、看漫画。本程序screenshot.p
- 我们提倡尽可能使用CSS,而且我们常常能做到这一点。现代浏览器有很好的CSS支持-这无疑足够好让你使用CSS来控制布局和版面设计。但是有时候
- 以下代码比较简单,对python实现ftp上传文件相关知识感兴趣的朋友可以参考下#encoding=utf8from ftplib impo
- 业务需求我们需要一个微信小程序码,但是是需要提供给别人扫码的但是只有一个纯粹的小程序码是不好看的,所以需要推广的海报图片。再结合文字最终效果
- 求3721,163,1,4832,1980,2008,68686688,9999,17173,5173,8848中最大的数明白后,试着求一下
- 在html中关于select元素的问题在很多地方都提出过,而在前段时间的项目中,刚好遇到了关于select元素的两个小问题,这里进行一下总结
- 本文实例讲述了php通过获取头信息判断图片类型的方法。分享给大家供大家参考。具体实现方法如下:$filename = '617.gi
- 声明定位元素:position属性值设置除默认值static以外的元素,包括relative,absolute,fixed。平台:win/I
- 先介绍一下jsSmarty Project:简要说明:利用JavaScript?在客户端完成SmartyPhp的工作,加速模板开发。主要是利
- 如果你计划将数据库从SQL Server 2000 升级到 SQL Server 2005。你在升级之前一定会测试每样东西,并且证明应用程序
- SQL Server内存会不断增加当 SQL Server 数据库引擎在 Microsoft? Windows NT? 或 Windows?
- /** 2 * 检索数组元素(原型扩展或重载) 3 * @param {o} 被检索的元素值 4 * @type int 5 * @retu
- 笔者通过一周的时间,询问了许多设计人员真实用户,以便确保这六个方面确实是大多数用户所不喜并且有非常大的概率普遍存在于众多的医疗网站之中。那么
- 我们先看一下JavaScript中关系运算符的类型转换规则:关系运算符(<、>、<=、>=) 试图将 express
- Window.ShowModalDialog使用手册 基本介绍: showModalDialog() (IE 4+ 支持) sho
- 为了画个图,被numpy这个模块的安装真的折腾疯了!!!一直装不上,花了几个小时,看了网上的很多教程、方法发现总结得不是很全,这里总结一下,
- 本文实例讲述了asp.net C#实现解压缩文件的方法。一共给大家介绍了三段代码,一个是简单的解压缩单个zip文件,后一个可以解压批量的大量