
机器学习
会飞的猩猩。
这个作者很懒,什么都没留下…
展开
-
PCA(转载)
文章转载自Microstrong03051.相关背景在许多领域的研究与应用中,通常需要对含有多个变量的数据进行观测,收集大量数据后进行分析寻找规律。多变量大数据集无疑会为研究和应用提供丰富的信息,但是也在一定程度上增加了数据采集的工作量。更重要的是在很多情形下,许多变量之间可能存在相关性,从而增加了问题分析的复杂性。如果分别对每个指标进行分析,分析往往是孤立的,不能完全利用数据中的信息,因此盲目减少指标会损失很多有用的信息,从而产生错误的结论。因此需要找到一种合理的方法,在减少需要分析的指标同时转载 2020-12-17 16:16:46 · 862 阅读 · 0 评论 -
风控模型稳定性指标PSI
群体稳定性指标是衡量样本变化所产生的偏移量的一种重要指标,通常用来衡量样本的稳定程度,比如样本在两个月份之间的变化是否稳定。也可以用来衡量模型稳定度。通常用作模型效果监测。由于模型是以特定时期的样本所开发的,此模型是否适用于开发样本之外的样本,可以用稳定性测试。PSI可以衡量测试样本及模型开发样本评分的分布差异,为最常见的模型稳定度评估指针。其实PSI表示的就是按分数分档后,针对不同样本,或者不同时间的样本,population分布是否有变化,就是看各个分数区间内人数占总人数的占比是否有显著变化原创 2020-10-12 18:33:19 · 1846 阅读 · 0 评论 -
在终端里启动Tensorboard的详细步骤
1.需要在代码中插入一段将信息写入graph的代码以下面这段代码为例import tensorflow as tf#重新设置默认的graph,否则之前的所有的graph会在一张图中tf.reset_default_graph()logdir = '/Users/zhangxin/Documents/tb1'#这里为我在桌面上新建的文件夹的路径a = tf.constant(2, name = 'a')b = tf.constant(3, name = 'b')sum_out = t原创 2020-06-25 18:55:33 · 4667 阅读 · 0 评论 -
推荐两个免费学习Tensorflow的网站
该网站的教程从入门到深入,也会有代码片段http://c.biancheng.net/view/1914.html原创 2020-06-04 23:32:47 · 1162 阅读 · 0 评论 -
【Python】处理时间数据格式出现time data does not match format valueError
ValueError: time data '19970004' does not match format '%Y%m%d' (match)原创 2020-06-04 11:41:39 · 73181 阅读 · 6 评论 -
【Python】对DataFrame空值进行统计
现实中的数据,总是不理想的,比如说数据中有的列会存在缺失值。缺失值太多的样本本身没有太多的信息,对训练模型就没有作用。同时,缺失值会影响模型,特别是使用度量相关的模型。如KNN和SVM。### 统计数据每列的缺失数量ListData.isnull().sum()Out[11]: id 0name 1host_id原创 2020-05-29 17:14:06 · 11018 阅读 · 0 评论 -
回归模型三种损失函数
无论在机器学习还是深度领域中,损失函数都是一个非常重要的知识点。损失函数(Loss Function)是用来估量模型的预测值 f(x) 与真实值 y 的不一致程度。我们的目标就是最小化损失函数,让 f(x) 与 y 尽量接近。通常可以使用梯度下降算法寻找函数最小值。损失函数有许多不同的类型,没有哪种损失函数适合所有的问题,需根据具体模型和问题进行选择。一般来说,损失函数大致可以分成两类:回归(Regression)和分类(Classification)。今天,红色石头将要总结回归问题中常用的 3 .转载 2020-05-20 19:05:34 · 11318 阅读 · 0 评论 -
回归问题评估模型的三个指标
我们通常都会训练多个模型,可以通过下面几个方法来评估模型的好坏转载 2020-05-06 17:55:22 · 5372 阅读 · 0 评论 -
Windows系统安装Tensorflow,出现mportError: DLL load failed: 动态链接库(DLL)初始化例程失败
看见网上有很多说用anaconda安装tensorflow, 其实并没有这么复杂,直接安装即可。环境版本:python: 3.6.5tensorflow: 1.5.0如果直接使用下面的命令行安装会非常慢,而且经常time out,根本就下不下来。因为这是从国外的服务器上下载文件。python -m pip install tensorflow使用清华镜像就可以快速的下载文...原创 2020-03-16 11:48:29 · 1987 阅读 · 3 评论 -
KS曲线和ROC曲线(二)
上一篇文章我们说了KS曲线和ROC曲线的理论知识,这篇文章我们来实际操作一下。import pandas as pdfrom sklearn.metrics import roc_curveimport matplotlib.pyplot as plt### 构造数据data = [[1,1,0,1,0,0],[0.9,0.8,0.5,0.6,0.2,0.6]]### 转化喂da...原创 2019-12-25 15:02:38 · 1204 阅读 · 1 评论 -
softmax上溢和下溢问题
在计算机里面数据都是以二进制的形式存储的,如果数据超过了计算机所能存储的最大范围,就会发生溢出。softmax公式: softmax公式里面因为存在指数函数,所以有可能会出现上溢或下溢的问题。如下面的例子所示: import mathimport...原创 2019-01-14 17:02:06 · 5016 阅读 · 0 评论 -
Tensorflow如何打印神经网络权重参数
在Tensorflow中,神经网络的权重是一个variable,所以要打印出来只需要按下面的代码即可。最重要的就是sess.run()import tensorflow as tfweight = tf.Variable(tf.random_normal([1,2]))sess = tf.Session()init = tf.global_variables_initializer(...原创 2019-01-17 23:47:24 · 16578 阅读 · 0 评论 -
softmax回归
之前讲了一下逻辑回归,主要是用于二分类的。对于多分类的问题,我们可以用softmax回归。逻辑回归使用的是sigmoid函数,将wx+b的值映射到(0, 1)的区间,输出的结果为样本标签等于1的概率值;而softmax回归采用的是softmax函数,将wx+b的值映射到[0, 1]的区间,输出的结果为一个向量,向量里的值为样本属于每个标签的概率值.我们先来看一下softmax函数,它将非标准化...原创 2019-01-02 21:58:23 · 8961 阅读 · 0 评论 -
奇异值分解(SVD)
前言奇异值分解(Singular Value Decomposition,简称SVD)是在机器学习领域广泛应用的算法,它不光可以用于降维算法中的特征分解,还可以用于推荐系统,以及自然语言处理等领域,是很多机器学习算法的基石。本文就对SVD的原理做一个总结,并讨论在在PCA降维算法中是如何运用运用SVD的。特征值与特征向量首先回顾下特征值和特征向量的定义如下:Ax=λx其中A是一个n×n...转载 2019-02-19 17:48:46 · 1357 阅读 · 0 评论 -
朴素贝叶斯算法
朴素贝叶斯算法是一种生成算法,主要用于分类,可以处理非线性的数据。它会计算样本属于每一个类的后验概率,然后判定样本属于后验概率最大的那一个类。朴素贝叶斯有两个假设条件:条件独立假设:用于分类的特征在类确定的条件下都是条件独立的; 连续型特征服从正太分布假设:如果特征是连续型的变量,就假设该特征服从正太分布。这些假设使朴素贝叶斯算法变得简单(这个我们可以在后面看到),但有时也会牺牲一定的分类...原创 2018-12-26 20:55:59 · 1382 阅读 · 0 评论 -
随机梯度下降法--Stochastic Gradient Descent
之前的博客讲了一下批量梯度下降优化算法,这一篇我们来看看与之对应的随机梯度下降法。批量梯度下降法每次更新参数时,用的都是所有的样本。而随机梯度下降法每次只用一个样本来跟新参数。下面是以最小平方误差损失函数为例的随机梯度下降法伪代码: Randomly shuffle dataset;...原创 2019-01-16 15:28:06 · 3175 阅读 · 0 评论 -
Mini-batch随机梯度下降
全批量梯度下降虽然稳定,但速度较慢;SGD虽然快,但是不够稳定。为了综合两者的优缺点,小批量随机梯度下降法应运而生。 Mini-batch随机梯度下降:Mini-batch随机梯度下降法是介于批量梯度下降法和随机梯度下降法之间的方法。我们可以看到当b=1的时候,Mini-batch梯度下降就等于随机梯度下降;当b=m的时候,Mini-bat...原创 2019-01-18 16:51:53 · 961 阅读 · 0 评论 -
K近邻算法(KNN)原理解析及python实现代码
KNN算法是一个有监督的算法,也就是样本是有标签的。KNN可以用于分类,也可以用于回归。这里主要讲knn在分类上的原理。KNN的原理很简单: 放入一个待分类的样本,用户指定k的大小,然后计算所有训练样本与该样本的距离,选择距离该样本最近的k个训练样本。这k个样本少数服从多数的结果就是该样本的类别。计算样本之间的距离一般选择欧式距离,k值的选取可以使用交叉验证。KNN有趣...原创 2018-11-05 23:17:01 · 1920 阅读 · 3 评论 -
python3使用matplotlib.pyplot绘制动态图
参考链接:https://blog.youkuaiyun.com/sinat_36256646/article/details/81002809 https://zhuanlan.zhihu.com/p/31323002pyplot里面自带interactive mode可以用来画动态图。在这中模式下,pyplot.plot()可以立马在画布上画出图像,而不需要pyp...原创 2018-12-31 15:31:47 · 8030 阅读 · 0 评论 -
神经网络-激活函数
上一篇讲了一下多层前馈神经网络的结构,这一篇我们来具体讲一讲里面的激活函数。对于一个神经元,先计算输入向量和权重向量的内积,加上偏置项,再送入一个函数进行变化。这个函数就是激活函数。在神经网络的结构里,除了输入层的神经元不需要激活函数,后面的若干层隐藏层和输出层的神经元都需要激活函数。为什么需要激活函数因为如果不使用激活函数函数,整个神经网络其实还是一个线性模型,并不能解决非线性问题。...原创 2019-01-05 22:09:44 · 1052 阅读 · 0 评论 -
Adaboost基本二分类算法
最早类型的Adaboost是由Yoav Freund和Robert E.Schapire提出的,一种用于二分类的boosting集成学习方法。也是李航《统计学习方法》中所介绍的Adaboost。它将一系列弱分类器的线性组合,生成一个强分类器。需要注意的是这里的弱分类器的定义是学习的正确率仅比随机猜测略好的分类器。如果基分类器已经是强学习了,再用boosing的话可能提升的效果就不是很明显了。因为b...原创 2018-12-04 15:40:42 · 4292 阅读 · 0 评论 -
回归问题提升树
网上已经有很多介绍Boosting的资料了,这里简单概述一下Boosting。Boosting是一种ensemble的学习方法。通过反复学习多个弱学习器,然后使用加法模型将弱学习器组合到一起形成一个强学习器。如果每次学习一个弱分类器都用同样的数据,显然是学习多少次都是没有太大意义。所以,大多数Boosting每一轮训练一个弱学习器时就会改变样本的概率分布,也就是每个样本的权重。然后下一个弱学习...原创 2018-11-29 22:01:58 · 1643 阅读 · 0 评论 -
GBDT算法讲解
GBDT(Gradient Boosting Decision Tree)是一种以决策树(cart 树)作为基学习器的机器学习方法。它是具体实现gradient boosting框架算法中的一种,会学习多棵决策树。GBDT的基学习器是CART树,所以GBDT每一棵树的生成过程都是CART树的生成过程,例如:如何选择最优的分裂节点。正如GBDT的名字一样,它采用梯度下降的方法来优化损失函数,所以每一...原创 2018-11-22 22:48:25 · 1555 阅读 · 1 评论 -
逻辑回归-Logistic Regression
逻辑回归-Logistic Regression逻辑回归是一种二分类算法 ,即数据集的标签为{0,1}两种类别。比如判断邮件是否是垃圾邮件,客户的好坏等。相比于线性回归用数据来拟合一条直线,逻辑回归用数据拟合一条决策边界。假设函数 : hθ(x)=g(θTx)h_\theta(x)=g(\theta^Tx)hθ(x)=g(θTx) g(z)=11+e−...原创 2018-11-12 15:47:03 · 654 阅读 · 0 评论 -
DataFrame计算corr()函数计算相关系数时,出现返回值为空或NaN的情况
1. 返回值为空的情况出现返回值为空的情况是因为数据的类型不是数值型。用data.info()函数可以查看dataframe的信息。这里举个例子:###创建一个dataframe,数据类型为objectdata = pd.DataFrame([[1,2,3],[4,5,6]],columns=['a','b','c'],dtype=object)dataOut[23]: ...原创 2018-09-15 00:01:48 · 43389 阅读 · 7 评论 -
KNN算法优化
在之前所写的KNN算法python实现里,KNN对k的选取很敏感,因为它给所有的近邻分配相同权重,无论距离测试样本有多远。为了降低该敏感性,可以使用加权KNN,给更近的近邻分配更大的权重,给较远的样本权重相应减少。Gaussian函数可以实现这一点,如下图所示。python实现代码:def gaussian(dist, sigma = 10.0): """ Input a d...原创 2018-11-06 22:54:27 · 2347 阅读 · 0 评论 -
metrics.roc_curve()输出的tpr或fpr的结果为nan
在用metrics.roc_curve()函数计算tpr的时候,出现tpr为nan的情况,主要是因为label里面没有正样本的标签。下面是roc_curve()里面的一段源码,其中tps[-1]存放的是所有的正样本。同理,如果fpr出现nan的情况是因为label里面没有负样本。 if fps[-1] <= 0: warnings.warn("No negative...原创 2018-09-30 15:00:20 · 11402 阅读 · 7 评论 -
神经网络-多层前馈神经网络
神经网络-反向传播算法 神经网络-激活函数神经网络是将许多个神经元按一定的层次结构连接起来的网络结构。不同的层次结构会产出不同类型神经网络,比如前馈神经网络和递归神经网络。神经元神经元是神经网络最重要的组成部分,下图为一个神经元的示意图,箭头的方向就是数据运行的方向。为神经元接受的输入向量a,为输入向量各个分量的权重w;b为偏置项bias,该条连接的输入固定为1。它可以让建模能力更强,...原创 2019-01-04 16:48:24 · 10957 阅读 · 0 评论 -
交叉验证
交叉验证其实就是为了检查模型的泛化行和稳定性,让模型的输出更加可靠。因为当我们只将训练数据划分一次时,有可能划分的不好,所以模型的结果会有偏差,不可靠。所以,我们可以使用交叉验证。经常使用的是k-fold交叉验证,将数据划分k份,每次用一份做为验证集,其他的k-1份作为训练集来训练k个模型,然后对多个模型的结果取均值就是这个模型的输出。同时,我们还会看一下k的模型的具体输出值,看一下波动是否很...原创 2018-12-18 15:27:30 · 3250 阅读 · 0 评论 -
神经网络-反向传播算法
反向传播算法(Backpropagation Algorithm,简称BP算法)是深度学习的重要思想基础,对于初学者来说也是必须要掌握的基础知识!本文希望以一个清晰的脉络和详细的说明,来让读者彻底明白BP算法的原理和计算过程。本文主要介绍BP算法的原理(即公式的推导),介绍完原理之后,我们会将一些具体的数据带入一个简单的三层神经网络中,去完整的体验一遍BP算法的计算过程。1.BP算法的推导...转载 2018-12-28 22:45:34 · 1218 阅读 · 0 评论 -
KS曲线和ROC曲线(一)
KS曲线和ROC曲线都是在对二分类模型做评估时的一种直观表现。以前用的和听得多的是ROC曲线,很少会听到KS曲线。只能说偶孤陋寡闻了。下面就聊一聊KS曲线和ROC曲线。既然要画曲线,我们先看看需要用到哪些数据。因为是二分类,我们就分为正样本和负样本。TP 真正例,也就是被正确分类的正样本 FP 假正例,也就是被误分为正样本的负样本 TN 真反例,也...原创 2018-12-17 23:15:20 · 4788 阅读 · 0 评论 -
随机森林(RandomForest)算法
随机森林是bagging方法的一种具体实现。它会训练多棵决策树,然后将这些结果融合在一起就是最终的结果。随机森林可以用于分裂,也可以用于回归。主要在于决策树类型的选取,根据具体的任务选择具体类别的决策树。对于分类问题,一个测试样本会送到每一颗决策树中进行预测,然后投票,得票最多的类为最终的分类结果;对与回归问题,随机森林的预测结果是所有决策树输出的均值。随机森林的随机性主要体现在两个地...原创 2018-12-18 20:31:07 · 4930 阅读 · 0 评论 -
L1和L2正则化项
首先我们来看一下什么是正则化正则化的作用就是缓解模型的过拟合。它通常会添加在损失函数的后面,然后通过缩小模型参数来减小模型的复杂度,从而达到提高模型泛化性的效果。因为如果模型的参数很大的话,feature值的一个小小的变化会对模型的结果产生很大的影响,这样就不利于模型的泛化。其实正则化就相当于一个惩罚项。在正则化项前面还会乘上一个正则化系数用来决定惩罚的力度。L1正则化和L2正则化就是正则化的...原创 2018-12-20 20:43:17 · 585 阅读 · 0 评论 -
梯度下降(批量梯度下降)
随机梯度下降梯度下降是机器学习常用的优化方法之一,用来求解无约束目标函数(损失函数)的极值。但是它收敛到的是局部最小值,当函数是凸函数时,可以收敛到全局最小值。当我们在模型中运用梯度下降法求解时,其实就是求解在该模型损失函数取得最小值时所对用的模型参数值是多少。当然梯度下降也可以单纯的用来求解一个函数的极值。梯度是函数值上升变化最快的方向,可以求得函数的最大值;所以负梯度就是函数值下降变化...原创 2018-11-10 21:31:41 · 2076 阅读 · 2 评论