![](https://img-blog.csdnimg.cn/20201014180756926.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
机器学习
文章平均质量分 64
WJWFighting
AR测试
展开
-
自定义实现决策树——ID3算法
from math import logimport operatordef createDataSet(): # 房产 车 是否可能有偿还能力 dataSet=[[1,1,'yes'], [1,1,'yes'], [1,0,'yes'], [0,1,'no'], ...原创 2018-07-17 16:17:50 · 583 阅读 · 0 评论 -
机器学习中的范数规则化之(一)L0、L1与L2范数
今天我们聊聊机器学习中出现的非常频繁的问题:过拟合与规则化。我们先简单的来理解下常用的L0、L1、L2和核范数规则化。最后聊下规则化项参数的选择问题。这里因为篇幅比较庞大,为了不吓到大家,我将这个五个部分分成两篇博文。知识有限,以下都是我一些浅显的看法,如果理解存在错误,希望大家不吝指正。谢谢。 监督机器学习问题无非就是“minimizeyour error while re...转载 2018-09-01 10:50:43 · 247 阅读 · 0 评论 -
深入浅出--梯度下降法及其实现
本文将从一个下山的场景开始,先提出梯度下降算法的基本思想,进而从数学上解释梯度下降算法的原理,最后实现一个简单的梯度下降算法的实例!梯度下降的场景假设梯度下降法的基本思想可以类比为一个下山的过程。假设这样一个场景:一个人被困在山上,需要从山上下来(i.e. 找到山的最低点,也就是山谷)。但此时山上的浓雾很大,导致可视度很低。因此,下山的路径就无法确定,他必须利用自己周围的信息去找到下山的...转载 2018-08-24 15:05:48 · 231 阅读 · 0 评论 -
XGBoost参数调优完全指南(附Python代码)
简介如果你的预测模型表现得有些不尽如人意,那就用XGBoost吧。XGBoost算法现在已经成为很多数据工程师的重要武器。它是一种十分精致的算法,可以处理各种不规则的数据。构造一个使用XGBoost的模型十分简单。但是,提高这个模型的表现就有些困难(至少我觉得十分纠结)。这个算法使用了好几个参数。所以为了提高模型的表现,参数的调整十分必要。在解决实际问题的时候,有些问题是很难回答的——你需要...转载 2018-08-27 17:24:04 · 2355 阅读 · 0 评论 -
Python机器学习算法实践——梯度上升算法
一:理论部分给定一个样本集,每个样本点有两个维度值(X1,X2)和一个类别值,类别只有两类,我们以0和1代表。数据如下所示: 样本 X1 X2 类别 1 -1.4 4.7 1 2 -2.5 ...原创 2018-08-20 14:44:41 · 1775 阅读 · 0 评论 -
通俗、有逻辑的写一篇说下Xgboost的原理,供讨论参考
首先说下决策树 决策树是啥? 举个例子,有一堆人,我让你分出男女,你依靠头发长短将人群分为两拨,长发的为“女”,短发为“男”,你是不是依靠一个指标“头发长短”将人群进行了划分,你就形成了一个简单的决策树,官方细节版本自行baidu或google 划分的依据是啥? 这个时候,你肯定问,为什么用“头发长短”划分啊,我可不可以用“穿的鞋子是否是高跟鞋”,“有没有喉结”等等这些来划...转载 2018-08-27 14:13:56 · 237 阅读 · 0 评论 -
scikit-learn随机森林调参小结
在Bagging与随机森林算法原理小结中,我们对随机森林(Random Forest, 以下简称RF)的原理做了总结。本文就从实践的角度对RF做一个总结。重点讲述scikit-learn中RF的调参注意事项,以及和GBDT调参的异同点。1. scikit-learn随机森林类库概述 在scikit-learn中,RF的分类类是RandomForestClassifier,回归类是Ra...转载 2018-08-26 15:38:12 · 617 阅读 · 0 评论 -
Python机器学习算法实践——二分k-均值算法
二分k-均值算法步骤:首先将所有点作为一个属,然后将该簇-分为二,之 后选择其中-个簇进续进行划分,选择哪一个簇进行划取决于对其划分是否可以最大程度降低SSE的值,上述基于SSE的别分过程不断重复,直到得到用户指定的属数目为止,将所有点看成一个簇当簇数目小于k时 对于每一个簇: 计算总误差 在给定的簇上面进行K-均值聚类(k=2)计...原创 2018-08-16 17:04:08 · 1370 阅读 · 1 评论 -
回归树的实现(3个核心函数)
def binSplitDataSet(dataSet,feature,value): bigIndex = dataSet[:,feature] > value smallIndex = dataSet[:,feature] <= value #print('bigIndex:',bigIndex) #print('smallIndex:',smal...原创 2018-08-08 17:05:17 · 623 阅读 · 1 评论 -
数据预处理过程
1,去除唯一属性: 如id属性,自增列,含唯一值的列,这些属性并不能描述本身的分布规律。 2,处理缺失值: (1)直接使用含有缺失值的特征,如决策树算法。 (2)删除含有缺失值的特征,如果特征列含有大量缺失值,而仅包含极少量的有效值,则删除是最有效的。 (3)缺失值补全,其思想是用最有可能的值来插补缺失值 常见的缺失值补全方法:均值插补、同类均值插补、建模预测、高维映射、多重插补、极大似...转载 2018-09-01 16:07:15 · 1164 阅读 · 0 评论 -
特征选择_过滤特征选择
一:方差选择法:使用方差作为特征评分标准,如果某个特征的取值差异不大,通常认为该特征对区分样本的贡献度不大因此在构造特征过程中去掉方差小于阈值特征from sklearn.datasets import load_irisiris=load_iris()print('iris特征名称\n',iris.feature_names)print('iris特征矩阵\n',iris.da...原创 2018-09-01 16:17:28 · 1265 阅读 · 1 评论 -
通俗理解kaggle比赛大杀器xgboost
1 决策树举个例子,集训营某一期有100多名学员,假定给你一个任务,要你统计男生女生各多少人,当一个一个学员依次上台站到你面前时,你会怎么区分谁是男谁是女呢?很快,你考虑到男生的头发一般很短,女生的头发一般比较长,所以你通过头发的长短将这个班的所有学员分为两拨,长发的为“女”,短发为“男”。相当于你依靠一个指标“头发长短”将整个班的人进行了划分,于是形成了一个简单的决策树,而划分的依据...转载 2018-09-14 22:24:45 · 1241 阅读 · 0 评论 -
支持向量机通俗导论(理解SVM的三层境界)
前言 动笔写这个支持向量机(support vector machine)是费了不少劲和困难的,原因很简单,一者这个东西本身就并不好懂,要深入学习和研究下去需花费不少时间和精力,二者这个东西也不好讲清楚,尽管网上已经有朋友写得不错了(见文末参考链接),但在描述数学公式的时候还是显得不够。得益于同学白石的数学证明,我还是想尝试写一下,希望本文在兼顾通俗易懂的基础上,真真正正能足以成为一篇完...转载 2018-09-14 16:10:56 · 487 阅读 · 0 评论 -
特征选择之包裹式、嵌入式
包裹式主要思想是反复的构建模型(如SVM或者回归模型)然后选择最好的(或者最差的)特征(可以根据系数来选)把选出来的特征选出来,然后在剩余的特征上重复这个过程,直到所有的特征都遍历过这个过程特征被消除的次序就是特征的排序,因此这是一种寻找最优特征子集的贪心算法from sklearn.svm import LinearSVCfrom sklearn.datasets import ...原创 2018-09-10 11:31:49 · 3531 阅读 · 0 评论 -
数据预处理_数据标准化
minmax标准化离差公式:按列看,(x-min)/(max-min)X_train = np.array([[1,-1,2], [2,0,0], [0,1,-1]])min_max_scaler = preprocessing.MinMaxScaler()X_train_minmax = min_max_s...原创 2018-09-10 11:05:38 · 807 阅读 · 0 评论 -
机器不学习:机器学习时代的三大神器:GBDT,XGBOOST和LightGBM
本文主要简要的比较了常用的boosting算法的一些区别,从AdaBoost到LightGBM,包括AdaBoost,GBDT,XGBoost,LightGBM四个模型的简单介绍,一步一步从原理到优化对比。AdaBoost原理原始的AdaBoost算法是在算法开始的时候,为每一个样本赋上一个权重值,初始的时候,大家都是一样重要的。在每一步训练中得到的模型,会使得数据点的估计有对有错,我们就...转载 2018-09-08 20:16:08 · 730 阅读 · 0 评论 -
判别式模型与生成式模型
判别式模型与生成式模型的区别产生式模型(Generative Model)与判别式模型(Discrimitive Model)是分类器常遇到的概念,它们的区别在于:对于输入x,类别标签y:产生式模型估计它们的联合概率分布P(x,y) 判别式模型估计条件概率分布P(y|x) 产生式模型可以根据贝叶斯公式得到判别式模型,但反过来不行。Andrew Ng在NIPS2001年有一篇专门比较...转载 2018-09-04 21:57:13 · 215 阅读 · 0 评论 -
机器学习——性能度量_回归
回归预测误差的绝对值的平均值(mae),回归预测误差的平方的平均值(mse)from sklearn.metrics import mean_absolute_error,mean_squared_error,r2_scoredef test_mean_absolute_error(): y_true=[1,1,1,1,1,2,2,2,0,0] y_pred=[0,0,0...原创 2018-09-04 20:06:58 · 488 阅读 · 0 评论 -
机器学习——性能度量_分类
from sklearn.metrics import accuracy_score,precision_score,recall_score,f1_score\ ,fbeta_score,classification_report,confusion_matrix,precision_recall_curve,roc_auc_score\ ,roc_curvefrom skl...原创 2018-09-04 19:46:17 · 410 阅读 · 0 评论 -
决策树的剪枝,分类回归树CART
决策树的剪枝决策树为什么要剪枝?原因就是避免决策树“过拟合”样本。前面的算法生成的决策树非常的详细而庞大,每个属性都被详细地加以考虑,决策树的树叶节点所覆盖的训练样本都是“纯”的。因此用这个决策树来对训练样本进行分类的话,你会发现对于训练样本而言,这个树表现堪称完美,它可以100%完美正确得对训练样本集中的样本进行分类(因为决策树本身就是100%完美拟合训练样本的产物)。但是,这会带来一个...转载 2018-08-08 15:46:51 · 1416 阅读 · 0 评论 -
Python机器学习算法实践_自定义实现kmeans
k-means算法步骤:1.随机选取k个质心(k值取决于你想聚成几类) 2.计算样本到质心的距离,距离质心距离近的归为一类,分为k类 3.求出分类后的每类的新质心 4.判断新旧质心是否相同,如果相同就代表已经聚类成功,如果没有就循环2-3直到相同 Python实现from numpy import *def loadDataSet(fileName): dataM...原创 2018-08-15 17:16:31 · 679 阅读 · 0 评论 -
线性回归和正则化(Regularization)
1.线性回归介绍 X指训练数据的feature,beta指待估计得参数。详细见http://zh.wikipedia.org/wiki/%E4%B8%80%E8%88%AC%E7%BA%BF%E6%80%A7%E6%A8%A1%E5%9E%8B使用最小二乘法拟合的普通线性回归是数据建模的基本方法。令最小二乘项的偏导为0(为0时RSS项最小),求Beta估计值,得到最小二...转载 2018-07-30 11:01:11 · 5394 阅读 · 0 评论 -
线性模型(1) —— 多元线性回归
提纲:线性模型的基本形式 多元线性回归的损失函数 最小二乘法求多元线性回归的参数 最小二乘法和随机梯度下降的区别 疑问 学习和参考资料 1.线性模型的基本形式线性模型是一种形式简单,易于建模,且可解释性很强的模型,它通过一个属性的线性组合来进行预测,其基本的形式为: 式(1) 转换成向量形式之后写成:式(2) 为什么说其解释性很强呢,是因为模...转载 2018-07-30 10:31:33 · 1186 阅读 · 0 评论 -
线性_回归_波士顿房价预测
from sklearn.datasets import load_bostonboston = load_boston()#输出数据描述print(boston.DESCR)#从sklearn.cross_validation导入数据分割器from sklearn.cross_validation import train_test_split#导入numpy 并重名为npi...原创 2018-07-29 17:17:56 · 475 阅读 · 0 评论 -
决策树——分类——鸢尾花(调用api)
import numpy as npfrom sklearn.tree import DecisionTreeClassifierfrom sklearn import datasetsfrom sklearn import cross_validationimport matplotlib.pyplot as plt%matplotlib inlinefrom sklearn.m...原创 2018-07-15 11:57:30 · 854 阅读 · 0 评论 -
svm_分类_linearSVC线性分类支持向量机——鸢尾花 (一名大学生的机器学习之路)
支持向量机分类器(Support Vector Classifier)是根据训练样本的分布,搜索所以可能的线性分类器中最佳的那个,决定分类边界位置的样本并不是所有训练数据,是其中的两个类别空间的间隔最小的两个不同类别的数据点,即“支持向量”。从而可以在海量甚至高维度的数据中,筛选对预测任务最为有效的少数训练样本。(LogisticRegression模型在训练过程中考虑了所有训练样本对参数的影响)...原创 2018-07-09 16:04:12 · 18598 阅读 · 2 评论 -
正则化项L1和L2的直观理解(一个大学生的机器学习之路)
正则化(Regularization)机器学习中几乎都可以看到损失函数后面会添加一个额外项,常用的额外项一般有两种,一般英文称作ℓ1ℓ1-norm和ℓ2ℓ2-norm,中文称作L1正则化和L2正则化,或者L1范数和L2范数。L1正则化和L2正则化可以看做是损失函数的惩罚项。所谓『惩罚』是指对损失函数中的某些参数做一些限制。对于线性回归模型,使用L1正则化的模型建叫做Lasso回归,使用L2正则化的...转载 2018-07-09 16:10:31 · 199 阅读 · 0 评论 -
svm_SVC_使用GridSearchCV_癌症数据
#scikit-learn中datasets自带的医学癌症数据#使用默认的高斯函数,使用GridSearchCV来自动选择参数gamma,可以得到在超参数调优器的使用下,得到的最优模型评分from sklearn import datasetsdatas=datasets.load_breast_cancer()print(datas)运行结果:{'DESCR': 'Breast Canc...原创 2018-07-10 11:45:34 · 2990 阅读 · 0 评论 -
KNN算法与Kd树(很详细)
最近邻法和k-近邻法 下面图片中只有三种豆,有三个豆是未知的种类,如何判定他们的种类? 提供一种思路,即:未知的豆离哪种豆最近就认为未知豆和该豆是同一种类。由此,我们引出最近邻算法的定义:为了判定未知样本的类别,以全部训练样本作为代表点,计算未知样本与所有训练样本的距离,并以最近邻者的类别作为决策未知样本类别的唯一依据。但是,最近邻算法明显是存在缺陷的,比如下面的例子:有一个未知形状(图中绿色...转载 2018-07-12 14:18:50 · 1820 阅读 · 2 评论 -
机器学习——线性回归的自定义实现
一 线性回归(Linear Regression) 1. 线性回归概述 回归的目的是预测数值型数据的目标值,最直接的方法就是根据输入写出一个求出目标值的计算公式,也就是所谓的回归方程,例如y = ax1+bx2,其中求回归系数的过程就是回归。那么回归是如何预测的呢?当有了这些回归系数,给定输入,具体的做法就是将回归系数与输入相乘,再将结果加起来就是最终的预测值。说到回归,一般指的都是线...原创 2018-07-30 21:36:09 · 862 阅读 · 0 评论 -
回归模型——树回归(理论方面的知识)
一:模型介绍1.线性回归的薄弱处:1.1. 需要拟合所有的样本点(局部加权线性回归除外)但是当数据拥有众多特征并且特征之间关系十分复杂时,构建全局模型的想法就显得太难了,也略显笨拙。1.2. 生活中很多问题都是非线性的,不可能使用全局线性模型来拟合任何数据2.解决方案:树回归:将数据集切分成很多份易建模的数据,然后利用我们的线性回归技术来建模。如果首次切分后仍然难以拟合线性模型...原创 2019-07-04 15:08:31 · 1326 阅读 · 0 评论 -
Python机器学习算法实践——k均值聚类(k-means)
一.k-means算法人以类聚,物以群分,k-means聚类算法就是体现。数学公式不要,直接用白话描述的步骤就是:1.随机选取k个质心(k值取决于你想聚成几类) 2.计算样本到质心的距离,距离质心距离近的归为一类,分为k类 3.求出分类后的每类的新质心 4.判断新旧质心是否相同,如果相同就代表已经聚类成功,如果没有就循环2-3直到相同用程序的语言描述就是:1.输入样本 2.随...转载 2018-08-15 15:26:02 · 744 阅读 · 0 评论 -
最大似然,贝叶斯方法与朴素贝叶斯分类
1.贝叶斯公式 贝叶斯公式作为概率论中的基础,大家都见过,极为简单。但是学习时候无非用于一些红球黑球,男生女生的估计问题,学起来也是兴趣寥寥。我也不曾想它用处之大,可谓大道至简。 如果对于概率还没有基础或者兴趣的人,先看看刘未鹏大牛的入门博客:《数学之美番外篇:平凡而又神奇的贝叶斯方法》。文章中对于贝叶斯方法的描述和逻辑上的讲解非常清楚,所以这里也就不赘述了,没看过的还请先移步看看这篇...转载 2018-08-12 21:58:49 · 728 阅读 · 0 评论 -
数学之美番外篇:平凡而又神奇的贝叶斯方法
概率论只不过是把常识用数学公式表达了出来。——拉普拉斯目录0. 前言 1. 历史 1.1 一个例子:自然语言的二义性 1.2 贝叶斯公式 2. 拼写纠正 3. 模型比较与贝叶斯奥卡姆剃刀 3.1 再访拼写纠正 3.2 模型比较理论(Model Comparasion)与贝叶斯奥卡姆剃刀(Bayesian Occam’s Razor) ...转载 2018-08-12 21:56:57 · 187 阅读 · 0 评论 -
无监督学习——k-means_手写字体识别(调用api)
from numpy import *import pandas as pdfrom sklearn.cross_validation import train_test_splitimport numpy as np#读取数据集digits_train=pd.read_csv('dataset/optdigits.tra',header=None)digits_test=pd.r...原创 2018-08-15 14:31:42 · 2150 阅读 · 0 评论 -
深入理解朴素贝叶斯(Naive Bayes)
朴素贝叶斯是经典的机器学习算法之一,也是为数不多的基于概率论的分类算法。朴素贝叶斯原理简单,也很容易实现,多用于文本分类,比如垃圾邮件过滤。该算法虽然简单,但是由于笔者不常用,总是看过即忘,这是写这篇博文的初衷。当然,更大的动力来在于跟大家交流,有论述不妥的地方欢迎指正。1.算法思想——基于概率的预测逻辑回归通过拟合曲线(或者学习超平面)实现分类,决策树通过寻找最佳划分特征进而学习样本路径...转载 2018-08-12 21:47:51 · 284 阅读 · 0 评论 -
k-近邻算法的总结
该函数的功能是使用k近邻算法将每组数据划分到某个类中,其伪代码如下:对未知类别属性的数据集中的每个点依次执行以下操作:(1)计算已知类别数据集中的点与当前点之间的距离;(2)按照距离递增次序排序;(3)选取与当前点距离最小的k个点;(4)确定前k个点所在类别的出现频率;(5)返回前k个点出现频率最高的类别作为当前点的预测分类。Python函数classi fy0 ()如...原创 2018-08-12 11:46:25 · 654 阅读 · 0 评论 -
svm核函数的理解和选择
特征空间的隐式映射:核函数 咱们首先给出核函数的来头:在上文中,我们已经了解到了SVM处理线性可分的情况,而对于非线性的情况,SVM 的处理方法是选择一个核函数 κ(⋅,⋅) ,通过将数据映射到高维空间,来解决在原始空间中线性不可分的问题。 此外,因为训练样例一般是不会独立出现的,它们总是以成对样例的内积形式出现,而用对偶形式表示学习器的优势在为在该表示中可调参数的个数不依赖输...转载 2018-08-07 19:28:40 · 29502 阅读 · 4 评论 -
线性回归与分类, 解决与区别(转)
机器学习可以解决很多问题,其中最为重要的两个是 回归与分类。 这两个问题怎么解决, 它们之间又有什么区别呢? 以下举几个简单的例子,以给大家一个概念1. 线性回归回归分析常用于分析两个变量X和Y 之间的关系。 比如 X=房子大小 和 Y=房价 之间的关系, X=(公园人流量,公园门票票价) 与 Y=(公园收入) 之间的关系等等。那么你的数据点在图上可以这么看现在你想找到 房子大...转载 2018-08-10 20:21:59 · 859 阅读 · 0 评论 -
【机器学习详解】SVM解回归问题
1.方法分析在样本数据集(xn,tn)(xn,tn)中,tntn不是简单的离散值,而是连续值。如在线性回归中,预测房价的问题。与线性回归类似,目标函数是正则平方误差函数:在SVM回归算法中,目的是训练出超平面y=wTx+by=wTx+b,采用yn=wTxn+byn=wTxn+b作为预测值。为了获得稀疏解,即计算超平面参数w,bw,b不依靠所有样本数据,而是部分数据(如在SVM分类算法中,支持...转载 2018-10-05 20:30:02 · 1078 阅读 · 0 评论