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


猜你喜欢
- #/usr/bin/env/python#coding=utf-8import sys,re,time,osmaxdata = 50000
- 然而有些情况只需要传递几个文件,而且文件体积并不太大,这种情况下使用组件则有点牛刀杀鸡的感觉,通过html自带的<input type
- 1.什么是内存逃逸在一段程序中,每一个函数都会有自己的内存区域分配自己的局部变量,返回值,这些内存会由编译器在栈中进行分配,每一个函数会分配
- 本文实例讲述了Python数据类型之Set集合。分享给大家供大家参考,具体如下:set集合1.概述set与dict类似,但set是一组key
- 前言本篇使用Python Web框架Django连接和操作MySQL数据库学生信息管理系统(SMS),主要包含对学生信息增删改查
- 前两天特意装了一下IETester,用以方便测试,装好后使用发现IE8有两个地方需要大家注意。IE5MAC的过滤器对IE8 Beta 1版同
- 1. 栈栈(stack)又名堆栈,它是一种运算受限的线性表。其限制是仅允许在表的一端进行插入和删除运算。这一端被称为栈顶,相对地,把另一端称
- 缓动,学名为Tween,缓冲移动的简称。要想页面内容切换起来舒服,就使用淡入淡出特效,要想让页面元素动起来自然,就要使用缓动效果。这两个混合
- 众所周知,想要在python程序中执行SQL语句需要使用第三方模块:pymysql。下面,我将为大家简述一下pymysql第三方库的安装到使
- 事情是这样的,我写了一个tornado的服务,过程当中我用logging记录一些内容,由于一开始并没有仔细观察tornado自已的日志管理,
- 昨天打包下载了一个服务器整站,拿到这个*.mdb的文件后,却不知道怎么用,百度了一下,才知道是一种木马打包的形式文件,不能用WINrar来解
- 标准库Python拥有一个强大的标准库。Python语言的核心只包含数字、字符串、列表、字典、文件等常见类型和函数,而由Python标准库提
- TensorFlow从txt文件中读取数据的方法很多有种,我比较常用的是下面两种:【1】np.loadtxtimport numpy as
- 1.我们可以为每一个实例对象增加方法。也就是说我们在每次使用‘类'之外的方法时候,都需要创建一次。 function D
- 卸载旧版本的MySQL(没有就跳过此步骤)(注:3-6步 重新安装新版本的MySQL,一定要把之前版本卸载干净,要不会出错;新的虚拟机初装M
- 在实现这个功能时借鉴的原博主的方法没有实现切换变色,琢磨了好久终于知道了怎么切换变色(小菜鸟的咆哮)!!!记录下来以供参考,以下是vue的完
- 最近出现一个很奇怪的MySQL问题,使用不同select语句查询全部数据集居然得到不同的记录数。select * 得到4条记录,select
- 几乎是一夜之间,微信小游戏《羊了个羊》火了。?这个依靠寻找相同元素消除方块的小游戏,凭借其“变态级别&rdquo
- 一、表单验证form1、创建一个新的表单:<form id="id是唯一的,不可重复" name=“可重复”,me
- 1. 前言随着互联网的发展和普及,网络安全问题越来越突出,网络在为用户提供越来越多服务的同时,也要面对各类越来越复杂的恶意攻击。SQL注入(