机器学习
gaoyueace
GitHub主页:https://github.com/TimeIvyace
展开
-
决策树算法
from math import logimport operator#创建数据集def createDataSet(): dataSet = [[1, 1, 'yes'], [1, 1, 'yes'], [1, 0, 'no'], [0, 1, 'no'], [0,原创 2017-12-06 21:02:06 · 359 阅读 · 0 评论 -
按照特征值划分数据集
#创建数据集def createDataSet(): dataSet = [[1, 1, 'yes'], [1, 1, 'yes'], [1, 0, 'no'], [0, 1, 'no'], [0, 1, 'no']] labels = ['no surfacin原创 2017-12-06 16:31:18 · 3064 阅读 · 0 评论 -
使用Matplotlib文本注解绘制树节点
Matplotlib提供了一个注解工具annotations,可以在数据图形上添加文本注解。import matplotlib.pyplot as pltdecisionNode = dict(boxstyle="sawtooth", fc="0.8") # 决策节点的属性。boxstyle为文本框的类型,sawtooth是锯齿形,fc是边框线粗细# 可以写为decisionNode={boxst原创 2017-12-07 16:09:30 · 2814 阅读 · 0 评论 -
文档词袋模型
词袋模型记录了单词在词汇表中出现的次数。def loadDataSet(): #创建文档集合以及标签 postingList = [['my', 'dog', 'has', 'flea', 'problems', 'help', 'please'], ['maybe', 'not', 'take', 'him', 'to', 'dog', 'park',原创 2017-12-17 23:18:07 · 527 阅读 · 0 评论 -
神经网络前向传播算法
#前向传播算法的神经网络,输入为2个参数,隐藏层为3个参数,输出为1个参数import tensorflow as tf#声明w1、w2两个变量,通过设定seed参数随机种子,随机种子相同,则每次使用此代码都生成相同的随机数#stddev为标准差,没有mean设定均值,则均值默认为0w1 = tf.Variable(tf.random_normal([2, 3], stddev=1, seed=原创 2018-01-08 23:30:52 · 551 阅读 · 0 评论 -
使用kNN算法识别手写数字
trainingDigits文件夹中为训练数据,里面存储的都是32*32的txt格式的数字图像数值矩阵。testDigits文件夹中为测试数据,存储格式与trainingDigits中相同。文件格式名例如:0_1.txt,0为数字的标签(即数字本身),1为表示数字0的第一个文件。代码为:form numpy import *from os import listdirdef handwritin原创 2017-12-06 10:35:46 · 1111 阅读 · 0 评论 -
归一化数据特征值代码
在处理不同取值范围的特征值时,通常会对数据进行归一化处理,将取值范围处理为0~1或者-1~1之间。 归一化公式为:newValue = (oldValue-min)/(max-min)代码为:from numpy import *def autoNorm(dataSet): minVals = dataSet.min(0) #0表示从列中选取最小值 maxV原创 2017-12-05 23:44:03 · 1526 阅读 · 0 评论 -
决策树代码
#创建数据集def createDataSet(): dataSet = [[1, 1, 'yes'], [1, 1, 'yes'], [1, 0, 'no'], [0, 1, 'no'], [0, 1, 'no']] labels = ['no surfaci原创 2017-12-08 17:17:19 · 515 阅读 · 0 评论 -
使用OpenCV调用摄像头检测人脸并截图-Python
注意:需要在python中安装OpenCV库,同时需要下载OpenCV人脸识别模型haarcascade_frontalface_alt.xml,模型可在https://github.com/TimeIvyace/OpenCV-PCA-KNN-SVM_face_recognition.git中下载。使用OpenCV调用摄像头检测人脸并连续截图100张#-*- coding: utf-8...原创 2018-03-18 14:58:19 · 14174 阅读 · 23 评论 -
信息增益-香农熵
在划分数据集之前之后信息发生的变化称为信息增益,计算每个特征值划分数据集获得的信息增益,获得信息增益最高的特征就是最好的选择。 集合信息的度量方式称为香农熵或者简称为熵,熵定义为信息的期望值。何为信息,如果待分类的事物的标签占总标签的百分比为p(xi),则符号xi的信息定义为: 计算熵,则需要计算所有类别所有可能值包含的信息期望值,公式为:计算给定数据集的熵,代码为:from math im原创 2017-12-06 15:06:04 · 886 阅读 · 0 评论 -
二进制图像矩阵转换为向量
将一个32×32的二进制图像矩阵转换为1×1024的向量。先创建一个1×1024的NumPy数组,然后循环读出文件的前32行,并将 每行的前32个字符值存储在数组中。代码为:from numpy import *def img2vector (filename): returnVect = zeros((1, 1024)) #创建一个1*1024的数组 fr = open(file原创 2017-12-06 09:28:31 · 5666 阅读 · 0 评论 -
从文本中构建词向量
词表到向量的转换函数:def loadDataSet(): postingList = [['my', 'dog', 'has', 'flea', 'problems', 'help', 'please'], ['maybe', 'not', 'take', 'him', 'to', 'dog', 'park', 'stupid'],原创 2017-12-09 11:40:09 · 1417 阅读 · 0 评论 -
Python数据磁盘存储pickle-决策树的存储
为了节省计算时间,很多时候数据都会直接被存储在磁盘上。在python中,需要使用python模块pickle序列化对象,序列化对象可以在磁盘上保存对象,并在需要的时候读取出来。例如,使用pickle模块存储决策树:import pickle#创建数据集def createDataSet(): dataSet = [[1, 1, 'yes'], [1, 1, '原创 2017-12-08 20:08:28 · 1522 阅读 · 0 评论 -
决策树-构造注解树
注解树:将树中的信息添加到决策树图中。 Note:绘制图形的x轴有效范围是0.0到1.0,y轴有效范围也是0.0到1.0。def getNumLeafs(myTree): #获取叶节点树 numLeafs = 0 # firstStr = myTree.keys()[0] #mytree的第一个特征值 python2写法 first = list(myTree.ke原创 2017-12-08 16:38:10 · 485 阅读 · 0 评论 -
将文本记录转换为NumPy的解析程序
datingTestSet2.txt文件中每行有4个数据,前三个为对象特征值,第四个为对象标签。将txt数据转换为numpy数组,将特征值与标签分离。代码为:def file2matrix(filename): fr = open(filename) arrayOLines = fr.readlines() #读入所有行 numberOfLines = len(arrayOL原创 2017-12-04 16:21:21 · 1460 阅读 · 0 评论 -
使用Matplotlib创建散点图
import matplotlibimport matplotlib.pyplot as pltfig = plt.figure()ax = fig.add_subplot(111) #一行一列一个ax.scatter(datingDataMat[:,1], datingDataMat[:,2], 15.0*array(datingLabels),15.0*array(datingLa原创 2017-12-04 20:01:48 · 592 阅读 · 0 评论 -
文本分类-朴素贝叶斯分类器
判断输入句子向量是侮辱性语言还是正常言论。from numpy import *def loadDataSet(): postingList = [['my', 'dog', 'has', 'flea', 'problems', 'help', 'please'], ['maybe', 'not', 'take', 'him', 'to', 'dog',原创 2017-12-17 23:08:25 · 564 阅读 · 0 评论 -
k-近邻算法(kNN)
kNN的工作原理: 存在一个样本数据集合,也称作样本训练集,并且样本集中每个数据都存在标签,即样本集中每一数据与所属分类的对应关系。输入没有标签的新数据后,将新数据的每个特征与样本集中数据对应的特征进行比较,然后算法个提取样本集中特征最详细数据(最近邻)的分类标签。一般来说,只选择样本数据集中前k个最相似的数据,这就是k-近邻算法中的k值,通常k为不大于20的整数。kNN的伪代码: 对未原创 2017-12-04 14:58:44 · 278 阅读 · 0 评论 -
测试分类器的正确率
对于分类器来说,错误率就是分类器给出的错误结果的次数初一测试数据的总数。完美分类器的错误率为0,错误率为1的分类器不会给出任何正确的结果。测试函数为:def datingClassTest(): hoRatio = 0.10 #测试数据占总数据的百分比 datingDataMat, datingLabels = file2matrix('datingTestSet2.txt') #将原创 2017-12-06 00:12:26 · 1357 阅读 · 0 评论 -
使用OpenCV+PCA+KNN/SVM进行人脸检测和识别-Python
注:需要在python中安装opencv库和sklearn库,opencv调用摄像头并检测人脸,sklearn提供PCA、SVM和KNN库。 本文共识别三人,所有人脸图像保存在train文件夹内,并且三人图像分别存至s1、s2和s3文件夹内,每个人100张图。图像进行PCA降维前,全部处理为224*224大小。 如何创建自己的数据集,可见使用OpenCV调用摄像头检测人脸并截图。 OpenCV原创 2018-03-18 15:26:02 · 6698 阅读 · 9 评论