python机器学习算法与数据降维的示例分析
这篇文章主要介绍python机器学习算法与数据降维的示例分析,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!
一、数据降维
机器学习中的维度就是特征的数量,降维即减少特征数量。降维方式有:特征选择、主成分分析。
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文件,但所需的两者“用户”和“购买物品类别”,存在于不同的表中。则可以按照以下流程进行:
观察各个表格的键,通过相同的键对表格进行合并,使用pandas.merge(表1,表2,键1,键2)方法,其中键1和键2相同。经过多次合并,最终将两个目标合并到一张表中。
通过交叉表pd.crosstab(合并后的表['用户'], 合并后的表['物品类别']),建立一个以用户为行,以物品类别为列的数据表。
对表格进行数据的降维,可以使用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,可以直接调用,输入相关数据,对结果进行预测等。
估计器工作流程:
调用fit(x_train, y_train),输入训练集
输入测试集的数据(x_test, y_test),调用不同接口可得不同结果
API①:y_predict = predict(x_test),该接口可获得算法对y的预测值。
API②:score(x_test, y_test) ,该接口可获得预测的准确率。
以上是“python机器学习算法与数据降维的示例分析”这篇文章的所有内容,感谢各位的阅读!希望分享的内容对大家有帮助,更多相关知识,欢迎关注编程网行业资讯频道!
免责声明:
① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。
② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341