机器学习
晓东邪
扎实基础,记录学习点滴。
展开
-
使用python简单实现Kmeans
# -*- coding: utf-8 -*-# @Author: xiaodong# @Date : 2021/4/6import mathimport randomimport loggingfrom typing import Listlogger = logging.getLogger("kmeans")class KMeans: def __init__(self, dataset: List[float], k: int, iteration: int =原创 2021-04-06 11:44:11 · 668 阅读 · 0 评论 -
机器学习中非平衡数据集的常用处理方法
不平衡数据集: 在分类等问题中,正负样本,或者各个类别的样本数目不一致。:在人脸检测中,比如训练库有10万张人脸图像,其中9万没有包含人脸,1万包含人脸,这个数据集就是典型的不平衡数据集。 直观的影响就是,用这些不平衡的数据训练出来的模型,其预测结果偏向于训练数据中数据比较多的那一类,在人脸检测的例子中,就是检测器的检测结果大部分都偏向于没有检测到人脸图像。 另外一个不平衡数据集,就是信转载 2017-09-17 23:35:36 · 6114 阅读 · 0 评论 -
判别式模型和生成式模型
在进行机器学习中的分类中,经常看到的两个模型范畴,先占坑,后续写~原创 2017-09-15 09:24:50 · 1807 阅读 · 0 评论 -
“西瓜书”学习记录
1、什么是机器学习?机器学习是这样一门学科,它致力于研究如何通过计算的手段,利用经验来改善系统自身的性能。在计算机系统中,“经验”通常以“数据”形式存在,因此,机器学习所研究的主要内容,是关于在计算机上从数据中产生“模型”(model)的算法,即“学习算法”(learning algorithm)。有了学习算法,我们把经验数据提供给它,它就能基于这些数据产生模型;在面对新的情况时,模型会给我们提供相原创 2017-09-03 22:40:53 · 4197 阅读 · 0 评论 -
sklearn通过OneVsRestClassifier实现svm.SVC的多分类
这个repo 用来记录一些python技巧、书籍、学习链接等,欢迎stargithub地址svm.SVC 支持向量机分类是一个很有效的分类方式,但是其只对2分类有效,不过,可以将多分类经过多次2分类最终实现多分类,而sklearn中的multiclass包就可以实现这种方式,减少我们重复造轮子。import numpy as npfrom sklearn.datasets imp...原创 2017-07-28 10:10:18 · 26963 阅读 · 4 评论 -
sklearn中的Pipeline
一般来说,使用sklearn建模时步骤如下: 0、start 1、分隔训练集和测试集(和验证集) 2、数据预处理 3、模型选择 4、使用GridSearchCV进行参数寻优 5、end其中,数据预处理部分可能需要先fit_transform再transform,相对较为繁琐,此时可以通过Pipeline(管道)进行流水线处理。 代码讲解如下:#导入需要的包In [296]: impo原创 2017-08-10 11:43:49 · 24456 阅读 · 0 评论 -
机器学习中的bias和variance、欠拟合和过拟合
1、biasBias反映的是模型在样本上的输出与真实值之间的误差,即模型本身的精准度。2、varianceVariance 反映的是模型每一次输出结果与输出期望之间的误差,即模型的稳定性。欠拟合和过拟合当训练集和验证集准确度都很低时,则一般是欠拟合,(此时训练集和验证集损失error都比较大) 而当训练集准确度很高而验证集准确度很低时,则一般是过拟合(此时训练集损失error比较小而验证集比较大)原创 2017-07-19 18:34:15 · 1357 阅读 · 0 评论 -
训练集(train set) 验证集(validation set) 测试集(test set)
在有监督(supervise)的机器学习中,数据集常被分成2~3个,即:训练集(train set) 验证集(validation set) 测试集(test set)。一般需要将样本分成独立的三部分训练集(train set),验证集(validation set)和测试集(test set)。其中训练集用来估计模型,验证集用来确定网络结构或者控制模型复杂程度的参数,而测试集则检验最终选择最优的模转载 2017-07-20 10:28:06 · 8580 阅读 · 0 评论 -
机器学习基本总结
统计学习方法基本问题学习概念:如果一个系统能通过执行某个进程改进它的性能,这就是学习。 机器学习是使用计算机系统通过运用数据及统计方法提高系统性能。统计学习基本假设:同类数据独立同分布。统计学习假设要学习的模型属于某个函数的集合,称为假设空间。机器学习分类:根据任务:分类和回归根据样本的标注信息:监督,半监督,无监督,强化学习监督学习分为分类,回归,标注统计学习三要素:模型,策略,算法模型:所要学习转载 2017-05-10 10:05:43 · 4393 阅读 · 0 评论 -
特征选择的几种方式(降维)
1、PCA 主成分分析2、LDA 线性判别式分析3、MDS 多维标度法4、皮尔逊相关系数5、互信息(信息熵)6、RFE 特征递归消除先挖坑,待有空填上~原创 2017-09-26 23:08:16 · 2782 阅读 · 0 评论 -
xgboost 参数介绍
(1)objective[ default=reg:linear ] 定义学习任务及相应的学习目标,可选的目标函数如下:“reg:linear” –线性回归。 “reg:logistic” –逻辑回归。 “binary:logistic” –二分类的逻辑回归问题,输出为概率。 “binary:logitraw” –二分类的逻辑回归问题,输出的结果为wTx。 “count:poisson转载 2017-09-20 14:54:13 · 7912 阅读 · 0 评论 -
分类-回归-聚类-异常检测
分类:支持向量机(SVM)可用于找到尽可能宽的分类的边界。当两个分类不能被清楚地分开时,该算法会找到其所能找到的最佳边界。其真正的亮点在于处理特征密集的数据,比如文本或者基因组(特征数量> 100)。在这些情况下,除了仅需要适量的记忆外,支持向量机(SVM)能够比其它大多数算法更快且更少过拟合地进行分类。人工神经网络是涵盖二分类、多分类和回归问题的脑启发式学习算法。它们有无限的种类,...转载 2018-06-06 18:49:15 · 2979 阅读 · 0 评论 -
机器学习练习数据来源
我在github 上建了个repo DataSetForMachineLearning,用来存放各种数据集,如果有需要,欢迎star。进行机器学习时,有时候需要一些数据做练手,数据从何而来呢,可以充分利用一些库,像sklearn,seaborn 都是自带一些数据的(如常见的iris花卉,titanic泰坦尼克号数据。。。),可以通过如下方式获取:sklearnIn [80]: f...原创 2018-02-01 18:27:41 · 1969 阅读 · 0 评论 -
聚类后的类别对应
有时候我们会用sklearn进行数据聚类,但是聚类后如何将预测输出与实际进行对应,可以考虑如下两个方式:from collections import Counterfrom sklearn.mixture import GaussianMixturefrom sklearn.naive_bayes import GaussianNBfrom sklearn.decomposition impo原创 2018-01-03 17:40:50 · 4952 阅读 · 0 评论 -
机器学习性能改善速查
机器学习性能改善:原创 2017-05-08 14:21:39 · 5211 阅读 · 0 评论 -
机器学习算法优缺点比较
1决策树(Decision Trees)的优缺点 决策树的优点: 一、 决策树易于理解和解释.人们在通过解释后都有能力去理解决策树所表达的意义。 二、 对于决策树,数据的准备往往是简单或者是不必要的.其他的技术往往要求先把数据一般化,比如去掉多余的或者空白的属性。 三、 能够同时处理数据型和常规型属性。其他的技术往往要求数据属性的单转载 2017-11-03 01:00:53 · 896 阅读 · 0 评论 -
过拟合的解决方法
过拟合的处理处理过拟合的方法:1、去噪(数据清洗);2、增加训练数据集(收集或构造新数据)3、正则化(L1、L2)4、减少特征数目5、对于决策树可以采用剪枝法6、采用组合分类器(装袋或随机森林)7、选择合适的迭代停止条件8、迭代过程中进行权值衰减(以某个小因子降低每个权值)转载 2017-11-03 00:58:54 · 759 阅读 · 0 评论 -
相似度选择
不同条件下选择合适的相似度原创 2017-10-17 22:49:29 · 502 阅读 · 0 评论 -
分类树和回归树
分类树 以C4.5分类树为例,C4.5分类树在每次分枝时,是穷举每一个feature的每一个阈值,找到使得按照feature<=阈值,和feature>阈值分成的两个分枝的熵最大的阈值(熵最大的概念可理解成尽可能每个分枝的男女比例都远离1:1),按照该标准分枝得到两个新节点,用同样方法继续分枝直到所有人都被分入性别唯一的叶子节点,或达到预设的终止条件,若最终叶子节点中的性别不唯一,则以多数人的性转载 2017-09-20 17:59:23 · 3132 阅读 · 0 评论 -
tensorflow Examples:<4>实现RNN
# -*- coding: utf-8 -*-# @Author: xiaodong# @Date: 2017-06-19 21:26:12# @Last Modified by: xiaodong# @Last Modified time: 2017-07-02 10:15:48import tensorflow as tffrom tensorflow.contrib imp原创 2017-07-02 10:17:50 · 5529 阅读 · 0 评论 -
tensorflow Examples:<3>实现自编码
# -*- coding: utf-8 -*-# @Author: liangxiaodong# @Date: 2017-05-23 20:40:01# @Last Modified by: xiaodong# @Last Modified time: 2017-07-02 10:08:49import tensorflow as tfimport numpy as npimp原创 2017-07-02 10:12:02 · 9105 阅读 · 0 评论 -
tensorflow Examples:<2>实现卷积神经网络
一个使用tensorflow实现简单卷积神经网络的例子。#coding: utf-8'''os: windows 64env: python 3.6tensorflow: 1.1.0ide: jupyter notebook'''from tensorflow.examples.tutorials.mnist import input_dataimport tensorflow as原创 2017-07-01 01:02:09 · 5989 阅读 · 4 评论 -
机器学习概念速查
看到的机器学习概念总结,做的挺全的,记录之~转自:机器学习基本概念总结转载 2017-05-09 23:30:52 · 566 阅读 · 0 评论 -
对sklearn训练结果进行保存(joblib或pickle或cPickle的使用问题记录)
在使用sklearn对模型进行训练时需要保存模型数据,官方文档对此提供了两种方案:>>> from sklearn import svm>>> from sklearn import datasets>>> clf = svm.SVC()>>> iris = datasets.load_iris()>>> X, y = iris.data, iris.target>>> clf.fit(X原创 2017-04-27 15:08:38 · 12296 阅读 · 0 评论 -
机器学习算法中如何选取超参数:学习速率、正则项系数、minibatch size
当参数时随机变量时,该参数分布中的参数就是超参数,简单的说就是参数的参数,感觉一般在贝叶斯方法中出现。所谓超参数,就是机器学习模型里面的框架参数,比如聚类方法里面类的个数,或者话题模型里面话题的个数等等,都称为超参数。它们跟训练过程中学习的参数(权重)是不一样的,通常是手工设定,不断试错调整,或者对一系列穷举出来的参数组合一通枚举(叫做网格搜索)。深度学习和神经网络模型,有很多这样的参数需要学习,这转载 2017-04-27 20:51:45 · 3794 阅读 · 0 评论 -
机器学习基本数学概念速查
特征向量对于一个给定的线性变换A,它的特征向量(eigenvector,也譯固有向量或本征向量)v 经过这个线性变换之后,得到的新向量仍然与原来的v 保持在同一条直线上,但其长度或方向也许会改变。即 Av=λv特征空间特征空间(eigenspace)是具有相同特征值的特征向量与一个同维数的零向量的集合。假设空间一组函数的集合,这组集合中的函数都能将输入空间映射到输出空间,但是映射的准确性却大不相同转载 2017-05-10 10:04:34 · 6108 阅读 · 0 评论 -
假设检验
机器学习中的假设检验: (摘自:《常用数据挖掘算法总结及Python实现》)原创 2017-05-15 00:50:14 · 1677 阅读 · 0 评论 -
伯努利分布、二项分布、多项分布、Beta分布、Dirichlet分布、连续分布(正态分布)、大数定理、中心极限定理、贝叶斯理论
机器学习中常遇到关于各种分布的问题,不过这些知识都已经忘得差不多了,就搜了点资料,详细讲解下伯努利分布、二项分布、多项分布、Beta分布、Dirichlet分布 ,用于后期回顾。原创 2017-05-15 00:35:25 · 15328 阅读 · 1 评论 -
sklearn中的交叉验证(Cross-Validation)
这个repo 用来记录一些python技巧、书籍、学习链接等,欢迎stargithub地址sklearn是利用python进行机器学习中一个非常全面和好用的第三方库,用过的都说好。今天主要记录一下sklearn中关于交叉验证的各种用法,主要是对sklearn官方文档 Cross-validation: evaluating estimator performance进行讲解,英文水平好...原创 2017-05-14 01:49:30 · 136894 阅读 · 4 评论 -
神经网络学习之参数的设置原则
网络参数确定原则:①、网络节点 网络输入层神经元节点数就是系统的特征因子(自变量)个数,输出层神经元节点数就是系统目标个数。隐层节点选按经验选取,一般设为输入层节点数的75%。如果输入层有7个节点,输出层1个节点,那么隐含层可暂设为5个节点,即构成一个7-5-1 BP神经网络模型。在系统训练时,实际还要对不同的隐层节点数4、5、6个分别进行比较,最后确定出最合理的网络结构。②、初始权值的确定 初转载 2017-05-03 17:53:52 · 5780 阅读 · 1 评论 -
Python机器学习算法速查
常见的机器学习算法以下是最常用的机器学习算法,大部分数据问题都可以通过它们解决:线性回归 (Linear Regression)逻辑回归 (Logistic Regression)决策树 (Decision Tree)支持向量机(SVM)朴素贝叶斯 (Naive Bayes)K邻近算法(KNN)K-均值算法(K-means)随机森林 (Random Forest)降低维度算法(Di原创 2017-02-20 21:07:50 · 5063 阅读 · 0 评论 -
sklearn中的svm参数介绍
svm是sklearn中一个关于支持向量机的包,比较常用,在使用过程中若是不熟悉各个参数的意义,总以默认参数进行机器学习,则不能做到最优化使用SVM,这就是一个较为遗憾的事情了。为了加深理解和方便调用,根据现有理解,结合官方文档,对其中的参数做一些记录,方便自己时常温习,也给阅读者进行一些错粗浅的介绍,如果有理解错误的地方,希望阅读者能够指出。以svm中的支持向量分类SVC作为介绍,所有参数如下:c原创 2017-04-24 23:52:11 · 26798 阅读 · 1 评论 -
tensorflow 中MNIST数据集下载
学习tensorflow文档时有一个是需要下载MNIST手写数字数据集,但是文档中的链接不翻墙打不开,可以进入tensorflow的github,地址为:tensorflowMNIST数据集下载可以将代码复制并运行:from __future__ import absolute_importfrom __future__ import divisionfrom __future__ import原创 2017-06-08 17:52:25 · 5165 阅读 · 0 评论 -
神经网络(持续更新)
1、什么是神经网络?神经网络是由简单处理单元构成的大规模并行分布式处理器,天然地具有存储经验知识和使之可用的特性。神经网络在两个方面与大脑相似: 1.神经网络是通过学习过程从外界环境中获取知识的。 2.互连神经元的连接强度,即突触权值,用于存储获取的知识用于完成学习过程的程序称为学习算法,其功能是以有序的方式改变网络的突触权值以获得想要的设计目标。 2、神经网络的优点神经网络的大规模原创 2017-04-19 18:46:38 · 5789 阅读 · 0 评论 -
如何为你的机器学习问题选择合适的算法?
机器学习算法选择速查 机器学习算法选择速查表介绍 机器学习算法速查使用指南 随着机器学习越来越流行,也出现了越来越多能很好地处理任务的算法。但是,你不可能预先知道哪个算法对你的问题是最优的。如果你有足够的时间,你可以尝试所有的算法来找出最优的算法。本文介绍了如何依靠已有的方法(模型选择和超参数调节)去指导你更好地去选择算法。本文作者为华盛顿大学 eScience Institute 和 Ins转载 2017-04-25 21:58:56 · 8097 阅读 · 0 评论 -
集成学习==>Bootstrap Bagging AdaBoost简介
集成学习是使用一系列学习器进行学习,并使用某种规则把各个学习结果进行整合从而获得比单个学习器更好的学习效果的一种极其学习方法。简单地说,就是通过抽样等方式从原始数据集构造m个训练集,再选择一个弱分类器(比如决策树)对这些训练集进行训练得到m个分类器,在待分类数据进行分类时,同时使用这m个分类器去判断,使用多数表决或者权重联合的方式综合这m个分类器给出的分类结果,得到最终结果。就好比是:原始数据是一堆转载 2017-05-09 23:19:45 · 11017 阅读 · 0 评论 -
用pybrain构建BP神经网络
pybrain是一个python关于构建神经网络的包, 官方文档:http://pybrain.org/docs/index.html 安装:$ git clone git://github.com/pybrain/pybrain.git$ python setup.py install以sklearn作为辅助构建BP神经网络并保存,可二次读取使用。建立BP回归模型#coding:utf-原创 2017-04-26 18:28:02 · 10185 阅读 · 5 评论 -
机器学习中的特征工程
引言在之前学习机器学习技术中,很少关注特征工程(Feature Engineering),然而,单纯学习机器学习的算法流程,可能仍然不会使用这些算法,尤其是应用到实际问题的时候,常常不知道怎么提取特征来建模。特征是机器学习系统的原材料,对最终模型的影响是毋庸置疑的。 特征工程的重要意义数据特征会直接影响你使用的预测模型和实现的预测结果。准备和选择的特征越好,则实现的结果越好。影响预测结果好坏的因素:转载 2017-02-19 22:54:54 · 5627 阅读 · 0 评论 -
准确率Accuracy,精确度Precision,召回率Recall,F1值
1.什么是分类准确率?评价分类器性能的指标一般是分类准确率(Accuracy),其定义是:对于给定的测试数据集,分类器正确分类的样本数和总样本数之比。对于二分类问题常见的评价指标是精确率(precision)与召回率(recall)。 通常以关注的类为正类,其他类为负类,分类器在测试数据集上的预测或正确或不正确,四种情况出现的总数分别记作: TP ——将正类预测为正类数(True Posit原创 2017-03-27 22:16:33 · 18257 阅读 · 0 评论 -
神经网络及机器学习中一些专有名词缩写
缩写AR autoregressive 自回归BPTT back propagation through time 通过时间的反向传播BM Boltzmann machine Boltzmann机BP back propagation 反向传播BSB brain-state-in-a-box 脑中盒状态BSS blind source (signa原创 2017-04-19 14:37:08 · 5312 阅读 · 0 评论