机器学习实战
lilong117194
“The world is not made of strings , but is made of things.”
展开
-
决策树—ID3(源码解析)
理论方面机器学习实战中讲的非常清楚,深入点的话在西瓜书可以参考,这里只把源码贴出来和学习中的一些困难。这里主要主要是有这么几块:首先搞懂信息熵和其作用划分数据集递归构建决策树Matplotlib注解绘制树形图测试和存储分类器示例:使用决策树预测隐形眼镜类型构建一个决策树:from math import logimport operator#import pi原创 2017-08-13 22:01:49 · 1185 阅读 · 4 评论 -
预测数值型数据:回归源码分析(1)
回归模型比较简单,这里先简单介绍下,后面遇到难点再具体分析。回归的一般方法: (1)收集数据:采用任意方法收集数据。 (2)准备数据:回归需要数值型数据,标称型数据将被转成二值型数据。 (3)分析数据:绘出数据的可视化二维图将有助于对数据做出理解和分析,在采用缩减法 求得新回归系数之后,可以将新拟合线绘在图上作为对比。 (4)训练算法:找到回归系数。 (5)测试算法:使用幻或者预测值和数原创 2017-10-30 13:52:07 · 1581 阅读 · 0 评论 -
K-均值聚类算法对未标注数据分组(1)
1. K-均值聚类算法优点:容易实现。 缺点:可能收敛到局部最小值,在大规模数据集上收敛较慢。 适用数据类型:数值型数据。K-均值算法的工作流程是这样的。首先,随机确定&个初始点作为质心。然后将数据集中的每个点分配到一个簇中,具体来讲,为每个点找距其最近的质心,并将其分配给该质心所对应的簇。这一步完成之后,每个簇的质心更新为该簇所有点的平均值。上述过程的伪代码表示如下: 创建k个点作为起始质原创 2017-11-07 16:39:09 · 710 阅读 · 1 评论 -
预测数值型数据:回归 源码分析(2)
缩减系数来“理解”数据如果数据的特征比样本点还多,那么就不能使用线性回归,因为在计算(XTX)−1(X^TX)^{-1}的时候会出错。也就是输入数据的矩阵XX不是满秩矩阵,非满秩矩阵在求逆时会出现问题,为此有了岭回归。原创 2017-10-30 19:35:50 · 873 阅读 · 0 评论 -
PCA简化数据
1. 降维在已标注与未标注的数据上都有降维技术。这里我们将主要关注未标注数据上的降维技术,该技术同时也可以应用于已标注的数据主成分分析(Principal Component Analysis,PCA): 将数据从原来的坐标系转移到新的坐标系,新坐标系的选择由数据本身决定,新坐标系的第一个坐标轴是原始数据中方差最大的方向,新坐标系的第二个坐标轴和第一个坐标轴正交、并且具有最大方差。该过程一直重复原创 2017-11-17 14:29:35 · 1916 阅读 · 0 评论 -
机器学习实战_09_树回归_源代码错误修正
《机器学习实战》第9章的树回归运行时频繁出错,这里主要有两点:1. TypeError: unhashable type: ‘matrix’出错的代码行是:for splitVal in set(dataSet[:,featIndex]):应改为:for splitVal in set(dataSet[:,featIndex].T.A.tolist()[0]):具体分析过程查看:http://blo原创 2017-11-04 17:06:47 · 721 阅读 · 1 评论 -
树回归源码分析(1)
线性回归包含了强大的方法,但是需要拟合所有的数据集(局部加权线性回归除外),但是当数据特征复杂时,构建全局模型就难了,况且实际生活很多问题都是非线性的,不可能使用全局线性模型来拟合所有的数据。 现有可以将数据集切分成很多易建模的数据,然后再利用线性回归技术建模,以就得到了CART——Classification And Regression Tree(分类回归树)的树构建算法,该算法既可以原创 2017-11-05 14:44:10 · 477 阅读 · 0 评论 -
FP-growth算法高效发现频繁项集
在用搜索引擎时,我们发现输入单词的一部分时,搜索引擎会自动补全查询词项,这里的原理其实是通过查询互联网上的词来找出经常出现在一块的词对,这需要一种高效发现频繁集的方法。它基于Apriori构建,但在完成相同任务时采用了一些不同的技术。这里的任务是将数据集存储在一个特定的称作FP树的结构之后发现频繁项集或者频繁项对,即常在一块出现的元素项的集合FP树。这种做法使得算法的执行速度要快于Apriori,通原创 2017-11-15 13:28:33 · 1500 阅读 · 0 评论 -
SVD简化数据
基础知识可以参考: http://blog.csdn.net/lilong117194/article/details/785790621. 奇异值分解 SVD(singular value decomposition)1.1 基本概念:(1)定义:提取信息的方法:奇异值分解Singular Value Decomposition(SVD) (2)优点:简化数据, 去除噪声,提高算法的结果 (原创 2017-11-21 00:13:04 · 657 阅读 · 0 评论 -
Rocchio算法—文本分类
文本表示:其实就是文本的向量化问题。 向量空间模型的思想是把文档简化为特征项的权重为分量的向量表示,其中选取词作为特征项,权重用词频表示。 其主要用的是TF-IDF算法来计算:TF(词频)是一个词语出现的次数除以该文件的总词语数。IDF(文件频率)的方法是测定有多少文件出现过某个词,然后除以文件集里的文件数。注意这里IDF用的是逆向文件频率,即假如“汽车”一词在100份文件中出现过,总文件数是原创 2018-01-06 16:17:59 · 10108 阅读 · 0 评论 -
支持向量机—SMO算法源码分析(1)
支持向量机的理论支持在此不细说,可以参考李航的《统计学习》,还有西瓜书。简化版SMO算法处理小规模数据集SMO算法是一种启发式算法。此简化版首先在数据集上遍历每一个alpha,然后在剩下的alpha集合中随机选择另一个alpha,从而建立alpha对。# -*- coding: utf-8 -*-from numpy import *from time import sleep# SMO算法的原创 2017-10-15 10:09:53 · 3233 阅读 · 8 评论 -
Logistic回归
先不说算法基础,直接干。。。。使用梯度上升找到最佳参数# -*- coding: utf-8 -*-"""Created on Fri Aug 18 01:05:58 2017@author: LiLong"""from numpy import *def loadDataSet(): dataMat = []; labelMat = [] fr = open('testSe原创 2017-08-22 18:56:33 · 494 阅读 · 2 评论 -
树回归--python Tkinter库创建GUI(2)
简单的Tkinter库创建GUI的例子可参考: http://blog.csdn.net/lilong117194/article/details/78456376下面是代码:# -*- coding: utf-8 -*-"""Created on Mon Nov 06 10:24:42 2017"""from numpy import *from Tkinter import *imp原创 2017-11-06 18:21:47 · 751 阅读 · 0 评论 -
支持向量机—核函数源码分析(2)
本代码用的是径向基核函数,径向基函数是一个采用向量作为自变量的函数,能够基于向量距离运算输出一个标量。 所谓径向基函数 (Radial Basis Function 简称 RBF), 就是某种沿径向对称的标量函数。 通常定义为空间中任一点x到某一中心xcx_c之间欧氏距离的单调函数 , 可记作 k(||x−xc||)k(||x-x_c||), 其作用往往是局部的 , 即当x远离xc时函数取值很小。原创 2017-10-22 18:52:06 · 1573 阅读 · 0 评论 -
K-均值对地图上的点进行聚类(2)
3. 对地图上的点进行聚类示例:对于地理数据应用二分K-均值算法(1)收集数据:使用Yahoo! placeFinder API收集数据。 (2)准备数据:只保留经纬度信息。 (3)分析数据:使用matplotlib来构建一个二维数据图,其中包含簇与地图。 (4)训练算法:训练不适用无监督学习。 (5)测试算法:使用上篇中的bikmeans()函教。 (6)使用算法:最后的输出是包含簇及簇原创 2017-11-08 21:52:07 · 7879 阅读 · 1 评论 -
AdaBoost算法源码分析
基本的理论知识可以参考李航的统计学习和西瓜书,在这里简单介绍:bagging:基于数据随机抽样的分类器,更先进的bagging方法有随机森林等。boosting:是一种与bagging类似的技术,但boosting是不同的分类器通过串行训练获得的,每个新分类器都是根据已训练出的分类器的性能进行训练。boosting是通过集中关注被已有分类器错分的那些数据来获得新的分类器。AdaBoost算法的流原创 2017-10-24 16:38:27 · 1775 阅读 · 0 评论 -
Apriori算法进行关联分析(1)
1. 使用Apriori算法来发现频繁集1.1 关联分析关联分析:是一种在大规模数据集中寻找有趣关系的任务。这些关系可以有两种形式:频繁项集或者关联规则。频繁项集(frequent item sets)是经常出现在一块的物品的集合,关联规则(association rules)暗示两种物品之间可能存在很强的关系。而有趣、频繁、有趣的关系这些量化的工具就是支持度和可信度。一个项集的支持度(suppo原创 2017-11-10 21:28:31 · 1579 阅读 · 0 评论 -
Apriori算法进行关联分析(2)
频繁项集及关联规则的应用中,购物、搜索引擎中的查询词等,下面看一个美国国会议员投票的例子。1. 示例:发现国会投票中的模式这个例子虽然在数据的获取过程中有点复杂,但我觉得还是很有必要分析下整个过程。1. 收集数据:构建美国国会投票记录的事务数据集我们希望最终数据的格式:即每一行代表美国国会的一个成员,而每列都是他们投票的对象。(1)需要提前做的准备:安装python-votesmart获得API原创 2017-11-11 13:58:27 · 3775 阅读 · 4 评论 -
KNN简单实现
最近开始学习机器学习实战,第一个就是KNN,由于K-近邻算法比较简单,这里不再介绍理论知识,直接看代码实现:用到的数据准备:源码及数据KNN的简单实现需要用到的一些语法: tile() sum(axis=1) argsort,sort 和 sorted,operator.itemgetter函数 get(),items(),iteritems()方法# coding=utf-8from n原创 2017-08-03 18:13:18 · 1163 阅读 · 0 评论 -
KNN识别手写体数字
首先准备好数据集,可以在网上下载好(机器学习实战源码及数据) 用到的是目录ch02里的testDigits和trainingDigits其具体步骤和理论参考机器学习实战 Maching Learning in Action一些语法: 正则匹配# coding=utf-8from numpy import *from os import listdirimport operator # 运算原创 2017-08-04 12:31:12 · 480 阅读 · 0 评论 -
朴素贝叶斯--实战分析
概率论及贝叶斯决策理论的一些知识请参阅相关书籍,这里给出源码及解析。1. 使用python进行文本分类# -*- coding: utf-8 -*-"""Created on Mon Aug 14 21:40:38 2017@author: LiLong"""from numpy import *# 创建实验样本def loadDataSet(): # 词条集合 posti原创 2017-08-15 17:57:57 · 505 阅读 · 0 评论 -
python 时间序列分析之ARIMA(不使用第三方库)
这里简单介绍下ARMA模型:在生产和科学研究中,对某一个或者一组变量 x(t)x(t) 进行观察测量,将在一系列时刻t1,t2,⋯,tnt1,t2,⋯,tn t_1,t_2,⋯,t_n 所得到的离散数字组成的序列集合,称之为时间序列。 时间序列分析是根据系统观察得到的时间序列数据,通过曲线拟合和参数估计来建立数学模型的理论和方法。 时间序列建模基本步骤:获取被观测系统时间序列数据;...原创 2018-04-24 16:48:51 · 4333 阅读 · 2 评论
分享