第五次任务计划书

一、计划进度

计划安排时间 计划完成内容 是否完成
 2017.4.2---2017.4.8 尝试进行代码实现,并进行小规模数据集作为输入,进行测试  
 2017.4.9---2017.4.15 完善具体代码,并着手进行毕业论文撰写  
 2017.4.16---2017.4.22 进行Python更加深入学习,利用一些扩展包,尝试对数据结果进行展示  
 2017.4.23---2017.4.29 撰写毕业论文,并且与老师共同修改   
 2017.4.30---2017.5.6 继续完善毕业设计,与老师沟通  
 2017.5.7---2017.5.12 毕业论文定稿,准备毕业答辩  

二、本周研究内容。

1、简单实现朴素贝叶斯分类算法(python),主要包括以下步骤:

  (1)、导入数据函数和划分

import  csv
def loadfile(filename):
    with (open(filename,‘r‘)) as f: #用with语句比较方便
        reader = csv.reader(f)      #csv的reader函数读取
        dataset =  list(reader)     #将reader全部存储在dataset中,将其转为列表
        for i in range(len(dataset)):
            dataset[i] = [float(x) for x in dataset[i]]  #生成式将数字变为浮点数
        return dataset
import random  #导入随机数模块
def splitDataset(dataset,splitRatio):   #拆分数据集
    trainszie = int (len(dataset)*splitRatio)  #测试集的长度等于整体数据长度乘拆分比率
    trainset = []   #初始化测试集
    copy = list (dataset)  #作为抽离的数据集
    while len(trainset) < trainszie:  #当训练集的长度小于要求的拆分长度
        index = random.randrange(len(copy)) #在整个数组中随机取出一个下标
        trainset.append(copy.pop(index)) #这个下表从整个列表取出,放入训练集
    return [trainset,copy] #返回训练集合测试集

(2)、提取数据特征

  1)按类别划分数据

def separateByAttackClass (dataset):
    separated ={}
    for i in range(len(dataset)):  #循环dataset列表
        vector = dataset[i]          #取出dataset的值
        if(vector[-1] not in separated):  #下标记为-1表示末位元素,即类型的值,若一开始separate字典没有该特征,
            separated[vector[-1]]=[]       # 则置为空
        separated[vector[-1]].append(vector) #特征值为键值,相同键值的则归为同一键
    return separated

  2)计算均值,计算标准差

import math
def mean(numbers):
    return sum(numbers)/float(len(numbers))  #sum函数的参数是个List
def stdev(numbers):
    avg = mean(numbers)
    variance = sum([pow(x-avg,2) for x in numbers])/float(len(numbers)-1) #方差公式为,每一个数与均值的离差的平方和除以
                                                                 # 样本个数(因为此处为样本所以方差应除以N-1,保证对整体的估计)
    return math.sqrt(variance)   #math.sqrt函数求开方

3)提取数据集特征

提取数据集特征,计算每个属性的均值和标准差
#重点是ZIP函数的灵活应用!
def summarize(dataset):
    summaries = [(mean(attribute),stdev(attribute)) for attribute in zip(*dataset) ] #使用生产式,zip函数按列划分
    del summaries[-1] #删除最后的特征值
    return summaries

4)按类别提取属性特征

#合并函数,先分类后计算在各个类别下的属性
def summarizeByClass(dataset):
    separated = separateByAttackClass(dataset)  #按攻击类型分类
    summaries={}        #初始化一个字典
    for classValue, instances in separated.iteritems(): # 迭代器生成 键:值
        summaries[classValue] = summarize(instances)   #将值(列表)进行计算方差和均值,
    return summaries

(3)预测

  1)计算高斯概率密度函数

#确定完各个属性在各个类别下的均值和方差之后。就可以进行高斯分布的计算

import math
def calculateProbability(x,mean,stdev):  
    exponent = math.exp(-(math.pow(x-mean,2)/(2*math.pow(stdev,2)))) #正态分布的指数部分
    return (1/(math.sqrt(2*math.pi)*stdev))*exponent #正态分布指数前的部分

  2)计算对应类的概率

#计算所属于类的概率
def calculateClassProbabilities(summaries,inputVector):
    proabilities = {}  #初始化一个类
    for classValue , classSummaries in summaries.iteritems(): #迭代器
        proabilities[classValue] = 1  #先置为1
        for i in range(len(classSummaries)): 
            mean,stdev = classSummaries[i]   #获得平均数,方差
            x = inputVector[i]  
            proabilities[classValue] *= calculateProbability(x,mean,stdev)  #累乘计算
    return proabilities

  3)单一预测

def predic(summaries,inputVector):
    probailities = calculateClassProbabilities(summaries,inputVector)  #调用上一个属于某属性的类的概率
    bestlabel,bestProb = None,-1  #标签类型取值为None,最大概率先设为-1
    for classValue , proability in probailities.iteritems(): #迭代器获得类和概率对
        if bestlabel is None or proability > bestProb:  #判断如果一开始类型为空,以及之后寻找最大概率
            bestProb =  proability  #则使得最大概率赋值
            bestlabel = classValue  #并返回该类的类型
    return bestlabel

  4)进行多值预测

#多个输入的分类预测
def getPrediction(summaries, testSet):
    predictions = []  #初始化列表
    for i in range(len(testSet)):
        result = predic(summaries,testSet[i]) #列表多次调用预测
        predictions.append(result)   #将预测值插入列表
    return predictions

三、你本周的体会及需要改进地方。

  测试截图较多不方便放上去,每个函数都实现了相应的结果,现在只要拼凑起来,并对最后的结果进行即返回来的所有预测值的列表进行操作,不过在编写代码过程中,遗漏了先验概率的计算,之后会把这个添加进去!之后就是数据预处理,打算用python的库进行归一化处理之后,拿出若干属性预测,以及最后的图表展示,也是用Python实现

四、你本周参考的文献。

1、http://www.cnblogs.com/chaosimple/p/4153167.html

2、http://python.jobbole.com/81019/

时间: 2024-09-30 07:10:08

第五次任务计划书的相关文章

网站项目建设流程概述

网站项目建设流程概述 一.概念 网站项目管理就是根据特定的规范.在预算范围内.按时完成的网站开发任务. 二.需求分析 项目立项 我们接到客户的业务咨询,经过双方不断的接洽和了解,并通过基本的可行性讨论够,初步达成制作协议,这时就需要将项目立项.较好的做法是成立一个专门的项目小组,小组成员包括:项目经理,网页设计,程序员,测试员,编辑/文档等必须人员.项目实行项目经理制. 客户的需求说明书 第一步是需要客户提供一个完整的需求说明.很多客户对自己的需求并不是很清楚,需要您不断引导和帮助分析.曾经有一

项目开发计划书

基于andriod校园网上订餐系统   项目开发计划         报告名称  校园网上订餐系统项目开发计划书 专    业  计算机科学与技术 班    级   信1201-1班 组长姓名   王雪青 组员名单   陆宇 赵建松 张文东 徐擎天 日    期   2015.6.13 指导教师  王建民 项目开发计划 V1.0 拟 制 人____王雪青________ 审 核 人____王雪青_________ 批 准 人____王雪青________ 二零一五年六月十三日 项 目 开 发 计

谋哥:我的商业计划书

[谋哥每天一干货,第六十六篇] 秦大前几天写了一篇文章<秦刚:如何写出一份有份量的商业计划书 >,文章里他建议,不管你是否融资,都应该写一份这样的商业计划书,因为这样可以让自己对现在做的项目有个整体的认识. 于是我就写一份,锻炼锻炼!当做作业. 第一,几句话描述你的自媒体? 谋哥:目前市场上没有研究App产品推广盈利为一体的自媒体,特别是App自推广这个细分领域的自媒体.App自推广就是利用App产品本身的设计达到自我推广的目的. 第二,你有什么样的解决方案,或者什么样的产品,能够解决这个问题

斗兽棋项目开发计划书

项目开发计划书 一:市场分析 我国网络棋牌游戏市场现状 我国的网民数量在2011年12月底以高达5.13亿以上,拥有这么一个庞大的市场环境,无疑给中国的网络游戏带来了更多的发展机会.如今,网络游戏已经完全融入了人们的娱乐生活中,特别是棋牌类网络游戏,因为棋牌在中国本来就拥有很悠长的历史累积,网络棋牌的玩法和实际的棋牌玩法也基本一样,所以,在众多的网络游戏类型当中,棋牌类游戏倍受广大网民的喜爱.正式由于棋牌游戏广大的市场前景的吸引,国内众多知名游戏厂商也加入到了游戏的开发以及运用当中. 腾讯公司大

完美商业计划书全攻略

http://mp.weixin.qq.com/s?__biz=MjM5NDk5MTA0MQ==&mid=400159971&idx=1&sn=5451cc4bc3d62cc1f6e1676a2961131e&scene=0&key=b410d3164f5f798e3bffbefe9277f497e3823645496c804d2bddffe4f115dd8d79a628ca93efd4b44d83eb358732bdb5&ascene=0&uin=

项目管理的五个过程和九大知识领域

项目管理的五个过程和九大知识领域     项目是为完成某一独特的产品或服务所做的一次性努力.根 据这个定义,项目就具有了目标明确性.活动一次性及资源消耗性等特性.换句话说,具备前面三个主要特性的活动,都可以看作是项目.现实中的项目随处可见, 如设备消缺.会议组织.技术竞赛.结婚典礼以及家居装修等等,都可以看作是项目.在这些项目的实施过程中,都存在项目管理问题,不过,实际生活与工作中, 可能更多关注的事情本身,而对做好事情相关的组织.计划.控制等过程相对缺少关注,或者没有经验与能力加以关注. 项目

周鸿袆教你打造十页完美商业计划书的十条法则

http://www.gogogogo.me/digest/jihuashu.html 第一,用几句话清楚说明你发现目前市场中存在一个什么空白点,或者存在一个什么问题,以及这个问题有多严重,几句话就够了.很多人写了三百张纸,抄 上一些报告.投资人天天看这个,还需要你教育他吗?比如,现在网游市场里盗号严重,你有一个产品能解决这个问题,只需要一句话说清楚就可以.        第二,你有什么样的解决方案,或者什么样的产品,能够解决这个问题.你的方案或者产品是什么,提供了怎样的功能?        第

360内训:周鸿袆对商业计划书的10点建议

无论是传统企业转型移动互联网还是互联网企业的攻城略地,一份简洁有力的商业计划书极具穿透力.下面分享给大家360周鸿祎的玩法. 第一,用几句话清楚说明你发现目前市场中存在一个什么空白点,或者存在一个什么问题,以及这个问题有多严重,几句话就够了.很多人写了三百张纸,抄上一些报告.投资人天天看这个,还需要你教育他吗?比如,现在网游市场里盗号严重,你有一个产品能解决这个问题,只需要一句话说清楚就可以.(济南石材养护www.tengdashicai.com) 第二,你有什么样的解决方案,或者什么样的产品,

十分钟帮你拿到500万天使轮!手把手教你写商业计划书【干货】

由于我们带着常识和逻辑去解构商业的本质,因此我本人拒绝一切商业模式神秘主义,说不清楚的商业模式一定不是好的商业模式,当然,有些项目当前不需要商业模式,但至少眼下的产品有足够的“替代性拐点”,必须是个“金钩子”.很多创业者都是在某种机缘巧合.“形势所迫”或者“初心不改”的情况下开始自己的创业的,手上有现成的资源,有一个“靠谱的”点子(idea),为什么不来一场说干就干的创业呢?对于很多连续创业者来说,即便不写一份书面的商业计划书,那么心里面也应该有一个完整的逻辑了,这时候,商业计划书的作用无非是把