机器学习
呆萌的代Ma
这个作者很懒,什么都没留下…
展开
-
python使用KDE曲线描述频率分布
KDE核密度估计,通俗来说,就是用平滑的曲线描述一个序列数据的频率分布直方图。然而在使用频率分布直方图时,要确定每个频率的区间大小,太大则无法反应细微的差距,太小则会是直方图变得毫无意义,因此我们可以通过KDE,从核函数的角度了解这个序列频率的趋势变化,而无需通过阈值确定区间大小。原创 2022-09-13 09:39:19 · 2641 阅读 · 0 评论 -
使用学习曲线(Learning curve),判断机器学习模型过拟合、欠拟合,与解决过拟合、欠拟合的问题
文章目录1.基本概念过拟合与欠拟合根据学习曲线判断过拟合、欠拟合2.示例代码:绘制学习曲线3.解决过拟合、欠拟合1.基本概念过拟合与欠拟合过拟合(学成书呆子了):指模型在训练集上表现优秀,在测试集上表现很差欠拟合(还没学明白):指模型难以学习已有的规律,在训练集和测试集上表现得都很差;或是模型过早的停止训练根据学习曲线判断过拟合、欠拟合上图是一个比较经典的示意图:左上角:我们看到随着训练数据的增加(随着x不断增加),2.示例代码:绘制学习曲线import numpy as np原创 2022-04-03 15:20:22 · 7574 阅读 · 0 评论 -
机器学习集成模型学习——Stacking集成学习(五)
stacking集成模型示例如下:stacking一般由2层堆叠构成Stacking集成算法思路上图为整体流程,思路如下:把原始数据切分成两部分:训练集D-train与测试集D-test,训练集部分用来训练整体的Stacking集成模型,测试集部分用来测试集成模型训练集D-train中又划分出两个部分:Training folds-训练集与Validation fold-验证集,其中Training folds部分用来训练初级学习器(浅黄色的模型)下图中的Learn对应上图Trai原创 2022-03-29 10:27:32 · 6509 阅读 · 0 评论 -
sklearn分类任务模型评价指标汇总与AUC-ROC曲线及代码示例
使用工具方法:def get_score(true_data, result_prediction, save_roc_path=None, model_name=None): from sklearn.metrics import accuracy_score from sklearn.metrics import precision_score from sklearn.metrics import recall_score, f1_score from sklearn原创 2022-02-27 16:15:40 · 1830 阅读 · 0 评论 -
调参1——随机森林贝叶斯调参
贝叶斯调参教程请参考:https://blog.csdn.net/weixin_35757704/article/details/118480135安装贝叶斯调参:pip install bayesian-optimization算法简介paper地址:http://papers.nips.cc/paper/4522-practical-bayesian%20-optimization-of-machine-learning-algorithms.pdfSnoek, Jasper, Hugo原创 2022-02-21 14:35:52 · 1698 阅读 · 2 评论 -
sklearn 回归模型评价指标及代码示例
评价指标主要包括:R-Square (R^2)决定系数、线性相关系数取值范围为 [0,1] ,越接近1,模型效果越好,越接近0,效果越差;但是随着预测数据量的增加会增加降低R2值,因此只能大致评估模型from sklearn.metrics import r2_scoreprint(r2_score(y_test,result_prediction))Mean Squared Error(MSE) 均方误差from sklearn.metrics import mean_squar原创 2022-01-24 00:00:01 · 5316 阅读 · 0 评论 -
python RandomTrees特征编码
算法简介通过构建随机森林,为变量进行编码:首先训练一个随机森林的模型按照决策树的分叉,每个叶节点都会占用一个位置,比如下图就共有4个叶节点,因此最大的编码长度是4如果这个特征A的值a,既可以匹配到第1个叶节点的位置,也可以到第3个叶节点的位置,那么这个值的编码就是[1,0,1,0]依次编码,得到结果RandomTreesEmbedding:https://scikit-learn.org/stable/modules/generated/sklearn.ensemble.RandomTre原创 2021-12-22 17:46:50 · 752 阅读 · 0 评论 -
特征筛选11——ExtraTrees筛选特征
算法简述ExtraTrees(极度随机树),与随机森林(Random Forest)是一样的,都是决策树的集成模型,区别在于:分叉的方式随机森林依据Gini或信息熵ExtraTrees是随机,没错纯随机,随机的特征构建边,随机的阈值来分叉在筛选特征时也可以使用随机森林,但是在容易过拟合的情况下纯随机的ExtraTrees表现会更好,因为无形中表示:在随机的场景下(模拟未知分布的测试集)某些特征仍旧表示出强势的区分度,证明这个特征很重要示例代码import pandas as pddef原创 2021-12-22 16:42:27 · 2852 阅读 · 0 评论 -
异常检测1——python使用KNN模型进行异常检测
pyod github项目地址:https://github.com/yzhao062/pyodpyod 文档地址:https://pyod.readthedocs.io/en/latest/数据源:https://github.com/zrnsm/pyculiarity/blob/master/tests/raw_data.csv代码示例from pyod.models.knn import KNN # 使用KNN异常检测import pandas as pddef get_data()原创 2021-12-19 17:40:38 · 3228 阅读 · 3 评论 -
不均衡数据集采样2——BorderlineSMOTE算法(过采样)
论文:Borderline-SMOTE: A New Over-Sampling Method in Imbalanced Data Sets Learninghttps://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.308.9315&rep=rep1&type=pdfBorderline Smote 算法只过采样小样本数据的边界算法思路:从小样本出发,计算小样本点ppp的k近邻的全部样本,如果: 1> 全是其.原创 2021-12-17 12:00:25 · 4043 阅读 · 7 评论 -
特征筛选10——MIC最大信息系数(有监督筛选)
理论部分可以参考:https://blog.csdn.net/qq_27586341/article/details/90603140互信息也是通过衡量x与y的线性关系,来判断特征的重要性,整个算法的思路是:x与y构成二维平面对平面进行切分,将平面切块看每个块里x与y的数量关系,如果x与y的数量越接近,互信息越多示例代码import pandas as pddef load_data(): # 这个用来读取数据 from sklearn.datasets import mak原创 2021-12-17 09:52:00 · 938 阅读 · 0 评论 -
python pandas借助pandas-profiling自动生成EDA
安装方法:pip install pandas-profilinggithub地址:https://github.com/pandas-profiling/pandas-profiling示例代码import numpy as npimport pandas as pdfrom pandas_profiling import ProfileReport# pip install pandas-profilingdef load_data(): """用来生成训练、测试数据"""原创 2021-12-15 17:51:07 · 647 阅读 · 0 评论 -
特征筛选9——根据重要性SelectFromModel筛选特征(有监督筛选)
策略思想:使用能够进行特征重要性评估的模型(一般带有feature_importances或coef_参数)训练特征如果结果重要性的得分小于阈值,就会被认为是不重要的特征比如小于0.1*mean(重要性)示例代码import pandas as pddef load_data(): """用来生成训练、测试数据""" from sklearn.datasets import make_classification data_x, data_y = make_clas原创 2021-12-15 17:12:01 · 2907 阅读 · 0 评论 -
不均衡数据集采样1——SMOTE算法(过采样)
SMOTE: Synthetic Minority Over-sampling Technique论文地址:https://www.jair.org/index.php/jair/article/download/10302/24590SMOTE的算法思路是:使用KNN的聚类方法,在附近(最少选附近5个点)随便找一个点,然后连线在线段上随便找一个点,就是新的样本点详细代码可以参考:https://zhuanlan.zhihu.com/p/44055312代码示例安装方法:pip in.原创 2021-12-14 17:27:04 · 1560 阅读 · 0 评论 -
python pandas处理无限值inf
如果不处理inf,可能导致报错:ValueError: Input contains NaN, infinity or a value too large for dtype('float64').示例代码首先构造inf,可以使用:np.inf,也可以使用float("inf"),其中inf指无穷大,-inf值无穷小import pandas as pdimport numpy as npdataframe = pd.DataFrame(data=[ [1, 2, np.inf],原创 2021-12-14 14:30:46 · 9164 阅读 · 0 评论 -
数据分箱6——分箱结果进行WOE转化
WOE的具体公式与含义请参考:特征筛选7——WOE(Weight of Evidence)/IV值(Information Value)筛选特征(有监督筛选)WOE转化可以将分箱的阈值覆盖原有的值,一般来讲并不会改变预测精度,但是可以为可解释性提供方便更深入的理解请参考:风控模型—WOE与IV指标的深入理解应用:https://zhuanlan.zhihu.com/p/80134853示例代码我们使用一个分箱的库:scorecardbundle来做分箱scorecardbundle gith原创 2021-12-14 11:57:53 · 3932 阅读 · 0 评论 -
数据分箱4——卡方最优分箱 ChiMerge算法使用(有监督)
论文地址:https://sci2s.ugr.es/keel/pdf/algorithm/congreso/1992-Kerber-ChimErge-AAAI92.pdfKerber, Randy. “Chimerge: Discretization of numeric attributes.” Proceedings of the tenth national conference on Artificial intelligence. 1992.ChiMerge算法详解(英文):https:/.原创 2021-12-13 14:11:03 · 1734 阅读 · 1 评论 -
数据分箱3——决策树分箱(有监督)
思路比较简单:将某一列数据作为训练集,将label作为结果,直接训练一个决策树,然后根据决策树的分裂节点的阈值作为分箱的依据。sklearn的决策树文档:https://scikit-learn.org/stable/modules/generated/sklearn.tree.DecisionTreeClassifier.html方法:def decision_tree_binning(x_value: np.ndarray, y_value: np.ndarray, max_bin=10) -&g原创 2021-12-13 10:18:32 · 4473 阅读 · 1 评论 -
python sklearn 绘制决策树模型的节点图
绘制决策树的图片可以使用sklearn.tree.plot_tree这个方法详情可以参考官方文档:https://scikit-learn.org/stable/modules/generated/sklearn.tree.plot_tree.html示例代码import matplotlib.pyplot as pltimport numpy as npfrom sklearn.tree import plot_tree # 树图from sklearn.tree import Decisi原创 2021-12-12 17:21:27 · 3175 阅读 · 0 评论 -
数据分箱2——等频、等距分箱
需要给定一个数值范围,然后按照下面的规则自动分箱:等频分箱:每个区间内包括的值一样多等距分箱:每两区间之间的距离是一样的等频分箱使用:pd.qcut,更多可以参考文档:https://pandas.pydata.org/docs/reference/api/pandas.qcut.html等距分箱使用:pd.cut,更多可以参考文档:https://pandas.pydata.org/docs/reference/api/pandas.cut.html示例代码import pandas as原创 2021-12-12 16:45:13 · 9956 阅读 · 0 评论 -
数据分箱1——人工手动分箱
人工手动分箱,是指已经有了标准,比如:60分以下不合格,60-80合格,80+优秀可以使用pandas.cut进行分箱,更多用法可以参考官方文档:https://pandas.pydata.org/docs/reference/api/pandas.cut.html代码:import pandas as pdvalue_list = [10, 20, 30.4, 59, 61, 79, 80, 90, 99, 100]# 没有标签,只有区间的划分cut_bin = pd.cut(value_原创 2021-12-12 16:28:44 · 599 阅读 · 0 评论 -
特征筛选6——肯德尔相关系数筛选特征(单变量筛选)
肯德尔系数主要是用来判断两个有序序列的相关性大致的计算流程:对x与y先进行排序,得到不同的值对应的顺序x与y配对计算,判断他们的顺序的一致对 (x的顺序与y的顺序相同) 和分歧对 (x的顺序与y的顺序相反)最后根据这个顺序的统计结果计算得到肯德尔系数的结果注:我们可以看到,如果x或y序列中有大量的值重复,比如部分完全相同的x与y序列,这个就很难区分了。因此有基于这种思想的不同的计算方法(成为肯德尔系数的变种),在scipy.stats.kendalltau中参数variant='b'就是指定变原创 2021-12-12 14:41:06 · 878 阅读 · 0 评论 -
特征筛选5——距离相关系数筛选特征(单变量筛选)
距离相关系数用来判断两个变量是否独立,值域为[0,2]值接近0,两个变量正相关值接近1,两个变量无关值接近2,两个变量负相关距离相关系数可以参考:https://docs.scipy.org/doc/scipy/reference/generated/scipy.spatial.distance.correlation.html维基百科解释:https://en.wikipedia.org/wiki/Distance_correlationpython中的使用也很简单:from scip原创 2021-12-12 13:34:16 · 2517 阅读 · 0 评论 -
python 使用tsfresh进行时间序列特征提取
tsfresh文档地址:https://tsfresh.readthedocs.io/en/latest/tsfresh github地址:https://github.com/blue-yonder/tsfreshtsfresh 安装方法:pip install tfresh使用示例import pandas as pdimport numpy as npfrom tsfresh import extract_featuresdef convert_to_extract_df(datafr原创 2021-12-08 11:24:11 · 3752 阅读 · 10 评论 -
特征筛选4——斯皮尔曼相关系数筛选特征(单变量筛选)
斯皮尔曼相关系数(斯皮尔曼等级相关系数)计算思路是:首先将值做排序判断排序的序号之间的相关系数更多详情请参考:https://zh.wikipedia.org/wiki/%E6%96%AF%E7%9A%AE%E5%B0%94%E6%9B%BC%E7%AD%89%E7%BA%A7%E7%9B%B8%E5%85%B3%E7%B3%BB%E6%95%B0工具类:def spearmanr_selection(x_data, y_data): """斯皮尔曼相关系数""" from s原创 2021-10-26 16:41:35 · 1659 阅读 · 0 评论 -
特征筛选3——卡方检验筛选特征(单变量筛选)
sklearn文档:https://scikit-learn.org/stable/modules/generated/sklearn.feature_selection.chi2.html卡方检验只适用分类任务,用来检验特征与y是否相互独立,具体的描述可以参考:https://www.jianshu.com/p/b670b2a23187工具类是:def chi2_selection(x_data, y_data): # todo chi2 只能是分类方法 # https://scikit-原创 2021-10-26 16:26:49 · 799 阅读 · 0 评论 -
特征筛选1——根据方差筛选(单变量筛选)
根据给定方差的阈值,删除掉值变化小的维度,以此降低数据规模。当把阈值设置为0的时候,就会删除没有变化的数据。示例import numpy as npfrom sklearn.feature_selection import VarianceThresholddef drop_min_value(data): """根据方差去除变化小的特征""" sel = VarianceThreshold(threshold=0) # 方差阈值,去掉方差为0的数据,也就是去除一个值的数据原创 2021-10-26 15:38:58 · 858 阅读 · 0 评论 -
特征筛选2——皮尔逊相关系数筛选(单变量筛选)
值域为正负1之间,用来筛查单变量与预测结果之间的相关关系,一般来讲:绝对值在0-0.1之间:无关绝对值在0.1-0.3之间:弱相关关系绝对值在0.3-0.6之间:存在相关关系绝对值在0.6-0.9之间:强相关关系绝对值大于0.9:几乎线性相关主要的功能函数:def pearsonr_selection(x_data, y_data): # 皮尔逊pearsonr相关系数 from scipy.stats import pearsonr para_dict3 = []原创 2021-10-26 15:56:08 · 3812 阅读 · 0 评论 -
自动化调参NNI学习(二):使用NNI框架调整LGBM模型
1. LGBM回归任务代码import numpy as npimport lightgbm as lgbmfrom sklearn.model_selection import train_test_splitfrom sklearn.metrics import mean_squared_errorfrom sklearn.datasets import make_regressionimport nnidef load_data(): # 这个用来读取数据 reg_x, re原创 2021-10-19 11:58:42 · 1018 阅读 · 0 评论 -
自动化调参NNI学习(一):官网代码学习
文章目录文档安装调参思路官网案例与解析部分nnictl命令文档github主页:https://github.com/microsoft/nni文档:https://nni.readthedocs.io/en/stable/Overview.htmlquickstart:https://nni.readthedocs.io/en/stable/Tutorial/QuickStart.html案例地址:https://github.com/microsoft/nni/tree/master/exam原创 2021-10-14 18:22:06 · 933 阅读 · 0 评论 -
机器学习集成模型学习——Boosting集成学习(四)
BoostingBoosting模型是线性训练的,后面的模型会纠结于前一个模型预测错的部分,然后尝试把它修正,步骤如下:第一个模型用一部分训练集训练,得出这部分训练集上的错误点第二个模型用...原创 2021-09-01 09:31:04 · 313 阅读 · 0 评论 -
LGBM使用贝叶斯调参
贝叶斯调参的相关知识与代码格式请参考:https://blog.csdn.net/weixin_35757704/article/details/118416689构造LGBM模型 model = LGBMRegressor( num_leaves=31, learning_rate=learning_rate, n_estimators=int(n_estimators), silent=True, n_jobs=5原创 2021-08-26 08:41:03 · 1409 阅读 · 2 评论 -
LGBM模型取消打印日志(关闭日志)
解决方法在:初始化模型sklearn类LGBMRegressor()或是原版lgbm都可以使用fit()函数这两个地方的都设置参数:verbose=-1原创 2021-08-25 14:56:11 · 2687 阅读 · 0 评论 -
机器学习集成模型学习——Bagging集成学习(三)
Baggingbagging的集成方式是:用1个模型(元模型)然后将这个元模型分成多个相同模型,每个模型使用训练集的一部分进行训练,得到多个基模型最后测试时分别跑每个模型,平均结果得出这个集成模型的最终预测结果案例代码from sklearn.tree import DecisionTreeClassifierfrom sklearn.model_selection import train_test_splitfrom sklearn.ensemble import BaggingCl原创 2021-08-22 09:18:27 · 656 阅读 · 0 评论 -
机器学习集成模型学习——投票集成Voting(二)
Voting集成投票机制就是多个模型分别预测,然后投票,票数最高的就是整个模型最后的效果案例代码from sklearn.linear_model import LogisticRegressionfrom sklearn.naive_bayes import GaussianNBfrom sklearn.ensemble import RandomForestClassifier, VotingClassifierfrom sklearn.datasets import make_classi原创 2021-08-22 08:42:56 · 4085 阅读 · 2 评论 -
机器学习集成模型ML ens学习——多层模型集成(一)
集成模型就是把多个模型融合在一起使用,通过构建一层层的模型体系,最终得到不同模型的预测结果首先安装:pip install mlens案例import pandas as pdfrom sklearn.model_selection import train_test_splitfrom sklearn.datasets import make_classificationfrom sklearn.ensemble import RandomForestClassifierfrom mlens原创 2021-08-21 18:31:43 · 786 阅读 · 0 评论