精华内容
下载资源
问答
  • 支持向量机-手写数字识别

    万次阅读 2017-08-17 14:08:41
    决定分类直线位置的样本并不是所有的训练数据,而是其中对两个空间间隔最小的两个不同类别的数据点,把这种可以用来真正帮助决策最优贤行分类模型的数据点叫做“支持向量”。LR模型由于在训练过程中考虑了所有训练...

    支持向量机分类器:
    决定分类直线位置的样本并不是所有的训练数据,而是其中对两个空间间隔最小的两个不同类别的数据点,把这种可以用来真正帮助决策最优贤行分类模型的数据点叫做“支持向量”。LR模型由于在训练过程中考虑了所有训练样本对于参数的影响,因此不一定能获得最佳的分类器。
    本文使用支持向量机分类器处理sklearn内部集成的手写字体数字图片数据集。(sklearn中集成的手写体数字图像仅仅是https://archive.ics.uci.edu/ml/datasets/Optical+Recognition+of+Handwritten+Digits的测试数据集。)


    Python源码

    #coding=utf-8
    from sklearn.datasets import load_digits
    #-------------
    from sklearn.cross_validation import train_test_split
    #-------------
    #load data standardize model
    from sklearn.preprocessing import StandardScaler
    #load SVM:LinearSVC which is based on Linear hypothesis
    from sklearn.svm import LinearSVC
    #-------------
    from sklearn.metrics import classification_report
    
    #-------------  store handwrite num datas on digits
    digits=load_digits()
    print 'Total dataset shape',digits.data.shape
    #-------------  data prepare
    #75% training set,25% testing set
    X_train,X_test,y_train,y_test=train_test_split(digits.data,digits.target,test_size=0.25,random_state=33)
    print 'training data shape',y_train.shape
    print 'testing data shape',y_test.shape
    #-------------  training
    ss=StandardScaler()
    X_train=ss.fit_transform(X_train)
    X_test=ss.transform(X_test)
    
    #initialize LinearSVC
    lsvc=LinearSVC()
    #training model
    lsvc.fit(X_train,y_train)
    #use trained model to predict testing dataset,and store the result on y_predict
    y_predict=lsvc.predict(X_test)
    
    #-------------  performance measure
    print 'The Accuracy is',lsvc.score(X_test,y_test)
    
    print classification_report(y_test,y_predict,target_names=digits.target_names.astype(str))
    Result:

    Total dataset shape (1797, 64)
    training data shape (1347,)
    testing data shape (450,)
    The Accuracy of Linear SVC is 0.953333333333
                 precision    recall  f1-score   support
              0       0.92      1.00      0.96        35
              1       0.96      0.98      0.97        54
              2       0.98      1.00      0.99        44
              3       0.93      0.93      0.93        46
              4       0.97      1.00      0.99        35
              5       0.94      0.94      0.94        48
              6       0.96      0.98      0.97        51
              7       0.92      1.00      0.96        35
              8       0.98      0.84      0.91        58
              9       0.95      0.91      0.93        44
    avg / total       0.95      0.95      0.95       450


    R,P 和F1指标最先使用于二分类任务,在数字识别中有0-9共计10个类别,无法直接计算三个性能指标。通常逐一来进行计算:把其他的类别看作负样本,因此创造了十个二分类任务
    SVM模型曾经在ML领域繁荣了很长一段时间,由于其精妙的模型假设,可以帮助在海量甚至更高维度的数据中,筛选对预测任务最为有效的少数数据样本。这样不仅节省了模型学习需要的数据内存,也提高了模型的预测性能。但如此的优势要付出更多的计算代价。实际使用该模型时候,需要权衡利弊,达成任务目标。






    展开全文
  • 博客帮助文档

    万次阅读 多人点赞 2019-12-10 16:52:31
    博客积分规则 博客等级 ...Markdown帮助 博客积分规则 博客积分是CSDN对用户努力的认可和奖励,也是衡量博客水平的重要标准。博客等级也将由博客积分唯一决定。积分规则具体如下: 1、每发布一篇...

    目录

    博客积分规则

    博客等级

    C币规则(试运营)

    博客VIP文章说明

    博客专家

    如何成为博客专家?

    企业博客

    如何开通企业博客

    博客勋章

    分类专栏

    博客搬家

    CSDN博客用户准则

    总则:

    博客注册

    博客行为规则

    被投诉侵权用户处理规则

    附则

    博客评论活跃等级规则(试运营)

    Markdown帮助

    付费专栏开通规则


    博客积分规则


    博客积分是CSDN对用户努力的认可和奖励,也是衡量博客水平的重要标准。博客等级也将由博客积分唯一决定。积分规则具体如下:

    • 1、每发布一篇原创或者翻译文章:可获得10分;
    • 2、每发布一篇转载文章:可获得2分;
    • 3、博主的文章每被评论一次:可获得1分;
    • 4、每发表一次评论:可获得1分(自己给自己评论、博主回复评论不获得积分);
    • 5、博文阅读次数每超过100次:可获得1分,阅读加分最高加到100分,即文章点击上万次截止;
    • 6、文章被管理员或博主本人删除,相应减去博主基于该篇博文所获得的分数;
    • 7、评论被管理员或博主删除,相应减去发评论者和博主基于该评论各自获得的分数(博主应减积分不会动态实时去掉,是每周固定时间清理一次);
    • 8、另外会开设相应的抄袭举报功能,一旦举报证实某篇原创文章抄袭,将扣除博主该篇文章相应的得分。

    博客等级


    图标 等级 所需积分
    L1 0
    L2 100
    L3 400
    L4 800
    L5 1600
    L6 4500
    L7 9000
    L8 25000
    L9 50000
    L10 100000
    L11 200000
    L12 300000
    L13 500000
    L14 800000
    L15 1000000

    C币规则(试运营)


    什么是C币

    查看详细C币规则

    博客VIP文章说明


    博主专享福利,发付费文章后可获得返利。

    VIP文章即读者购买VIP付费后才可解锁阅读的文章,拥有VIP文章发表权限的作者可以发表VIP文章。

    发VIP文章,根据文章购买转化数据返利(详见收益中心:https://order.csdn.net/myorder/revenue

    如何取消VIP可读:进入该篇文章的编辑页面,在“发布形式”模块取消选择“VIP可见”重新发布

    博客专家


    “博客专家”是CSDN给予质量较高、影响力较大的IT类博客的荣誉称号,代表了CSDN官方对其博客的肯定。

    成为博客专家后会得到什么:

    • 用户头像上显示“专家”勋章;
    • 发布博客时可以直接引用CSDN站外的图片;
    • 有机会免费参加CSDN举办的各种会议;
    • 有机会成为CSDN学院讲师、CSDN博乐、CSDN问答导师等;
    • 有更多演讲机会,CSDN会推荐给厂商或者各种IT技术大会作为演讲嘉宾;
    • 享有月度原创奖励,C币、图书或定制礼品;
    • 享有自定义模块、自定义域名、全站免广告等权益;
    • 文章获得更多的推荐机会:博客专家所发的文章都会进入文章预选库,我们有专门的编辑负责从中筛选优质内容,并推荐到CSDN首页或其他内容频道。

    注意情况:

    • 所有博客专家(包括荣誉专家)均为实名制;
    • CSDN博客专家在三个月内如果没有发布任何原创或翻译博文,其博客专家身份将自动取消,转为博客频道荣誉专家,不能继续享有博客专家的福利;
    • CSDN博客专家不是CSDN博客的全职或兼职管理人员,不具备CSDN博客的管理权力,其观点及行为仅代表个人,不代表CSDN官方立场;
    • CSDN博客专家如有违反CSDN网站规则的行为,如大量发布广告或软文,对CSDN网站造成不良影响等,将永久取消其CSDN博客专家身份;希望恢复博客专家身份可重新申请,点击这里申请博客专家

    如何成为博客专家?


    申请CSDN博客专家应具备的条件:

    1. 在CSDN坚持写作三年及以上;
    2. 原创技术文章总数超过100篇,并且最近6个月内有一定的活跃度;
    3. 博客文章总浏览量超过20万次以上,同时参考点赞、评论、收藏等交互数据;
    4. 原创文章占比80%以上,且文章内容有一定深度;
    5. 企业、团队等非个人开设的博客,需要原创技术文章总数超过150篇,并且最近一个月内发布了新的原创技术文章,博文总浏览量超30万次才能申请博客专家;
    6. 其他情况:
    • 在CSDN学院成功发布过课程的博主可适当放宽要求;
    • 如果已经在某IT领域具有较大影响力,但是尚没有达到上述申请条件的用户,可以通过现有博客专家或者CSDN编辑部的推荐,暂时成为“特约专家”,待达到上述条件之后,再转为正式的博客专家(申请用户自成为“特约专家”后六个月内如仍未达到CSDN博客专家应具备的条件,则“特约专家”身份取消)。

    CSDN已开通博客专家在线申请功能,点击这里申请博客专家

    企业博客


    CSDN企业博客旨在利用CSDN站内流量、内容、用户等资源,为技术型企业提供营销推广平台
    企业博客免费版主要功能如下:

    1、优质企业博文可提高推荐权重;

    2、支持设置自定义主题图,方便更换企业品牌形象及广告图;

    3、企业博客内无联盟广告展示;

    4、企业博客有专属身份标识;

    5、企业博客内的相关推荐内容为该企业自己的博文;

    6、支持设置自定义背景色,支持添加自定义链接导航(目前最多可添加五个);

    7、支持百度关键词查询;

    8、搜索专区。

    如何开通企业博客


    企业博客已经开通在线申请功能,点击这里开通企业博客

    CSDN管理员在收到您的申请后,会在2个工作日内开通服务。如有问题可以直接发信至tobblog@csdn.net咨询。

    博客勋章


     博客专家

    CSDN给予质量较高、影响力较大的IT类博客的荣誉称号,代表了CSDN官方对其博客的肯定。成为博客专家后会得到我们一系列的服务,如在头像上加象征荣誉的专家勋章、有专人对接提供服务、文章获得更多的推荐机会、不定时获得CSDN的礼品、优先获得CSDN举办的各种会议的的门票等。

    博客之星 博客之星

    授予在“CSDN年度博客之星评选”中获得“博客之星”称号的用户。为了鼓励专业、乐于分享的广大CSDN博客用户。每年12月的CSDN博客之星评选中,综合专家评审和大众投票的结果,评选出“CSDN年度博客之星”。

    勋章icon 1024勋章

    #1024程序员节#活动勋章,当日发布原创博客即可获得

    1024超级勋章 1024超级勋章

    授予原创文章总数达到1024篇的博主,感谢你对CSDN社区的贡献,CSDN与你一起成长。

    勋章icon 勤写标兵Lv1

    授予每个自然周发布1篇到3篇原创IT博文的用户。本勋章将于次周周三上午根据用户上周的博文发布情况由系统自动颁发。

    勋章icon 勤写标兵Lv2

    授予每个自然周发布4篇到6篇原创IT博文的用户。本勋章将于次周周三上午根据用户上周的博文发布情况由系统自动颁发。

    勋章icon 勤写标兵Lv3

    授予每个自然周发布7篇到8篇原创IT博文的用户。本勋章将于次周周三上午根据用户上周的博文发布情况由系统自动颁发。

    勋章icon 勤写标兵Lv4

    授予每个自然周发布9篇以上(包括9篇)原创IT博文的用户。本勋章将于次周周三上午根据用户上周的博文发布情况由系统自动颁发。

    分类专栏


    分类专栏是把相同标签属性的技术博文聚集起来,集中展示,系统全面,更具目标性。CSDN鼓励每位博主撰写专属自己的专栏博文,构建自己的知识体系。

    发布分类专栏建议:

    1. 每个专栏至少发布10篇原创技术博文。

    2. 博文紧扣专栏主题,技术定位清晰,内容扎实详尽。

    CSDN博客频道编辑定期会把精华分类专栏荐给相应的受众群体。

    博客搬家


    CSDN是IT技术网站,欢迎大家发布原创或翻译IT技术类博客,非IT技术类博客将不提供搬家服务。博主可以点击这里申请博客搬家。

    CSDN推出博客搬家功能,目前支持以下站点的博客搬迁:博客园,微信公众号,简书,51CTO.com,新浪,开源中国,chinaUnix,个人博客,掘金,GitHub,知乎,segmentfault

    温馨提示:

    • 原创技术文章不能少于10篇方可申请。
    • 原博客数据不会丢失,仍然保留。
    • 如果检测到恶意导入,您的博客使用将会受到影响。
    • 审核通过的搬家申请,会持续与搬家源进行内容同步(个人博客和github同步历史文章)。
    • 审核时间一般为1个工作日,审核结果将通过站内信等方式告知。
    • 同一个站点只允许进行1次搬家申请,如申请失败则需要重新申请。

    对博客搬家有任何问题或建议请向博客客服邮箱发邮件咨询:webmaster@csdn.net。

    声明:CSDN用户要完成博客搬家需要承诺搬迁的博客为用户本人博客,如搬迁非用户本人博客所产生的后果由用户本人承担。


    CSDN博客用户准则


    总则:

    第1条 CSDN博客隶属于CSDN(包括CSDN网站与相应客户端、自媒体平台、主运营网站等),是为中国的软件开发者、IT从业者及其他人员提供以交流IT技术为主的网络社区。

    第2条 为保障CSDN博客健康发展,维护用户正当权益,规范信息发布行为,依据国家有关法律、法规、政策及CSDN相关规定,制定本博客用户准则(以下称“本准则”)。

    第3条 CSDN经营者(即北京创新乐知网络技术有限公司及其他相关联的公司)无法对用户传播内容的权属、合法性、真实性、科学性、完整性等问题进行实质审查,博客用户须对自己发布的内容独立承担责任,CSDN经营者不承担因此产生的任何法律责任。

    第4条 为保障CSDN博客的专业性与集成性,博客用户的交流不得涉及任何政治话题,CSDN博客用户须严格按照本准则的规定行使权利和履行义务。

    博客注册

    第1条 拟注册用户在CSDN博客进行注册时,需要按照提示填写详尽的用户信息(包括但不限于姓名或名称、身份证号码、邮箱、联系方式等),并对提供信息的真实性负责。在用户信息发生变动时,用户有责任及时更新、修改信息。如果博客用户提供的信息资料不准确,CSDN经营者保留终止用户使用CSDN博客提供的相关网络服务的权利。

    第2条 CSDN博客用户因提供用户信息不真实、不准确等而发生纠纷或需要帮助时,因不能确认用户身份及其帐号的使用权利,无法向用户提供相应的帮助所带来的一切后果由用户自己承担。

    第3条 CSDN经营者尊重用户隐私,未经用户合法授权,不会公开或透露其注册资料。

    第4条 用户注册并激活成功后,便成为CSDN博客的正式用户,正式博客用户拥有CSDN博客规定用户所应享有的一切权限。用户将获得一个用户名和密码,用户对自己的用户名、密码及帐号安全性负全部责任。用户同意,若发现任何非法使用帐号、密码或存在安全漏洞等其它有损用户利益的情况,应立即通知CSDN经营者。每个用户都应对以其用户名进行的所有活动和事件负全部责任。

    博客行为规则

    第1条 CSDN博客用户享有言论自由的权利,但不得违反法律法规及政策规定,不得违反诚实信用原则及公序良俗,不得损害国家、CSDN经营者及第三方权利及利益,不得违反CSDN用户协议及相关规则。严禁发表含有下列内容的信息:

    • 1.违反宪法确定的基本原则的;
    • 2.危害国家安全,泄露国家秘密,颠覆国家政权,破坏国家统一的;
    • 3.损害国家荣誉和利益的;
    • 4.煽动民族仇恨、民族歧视,破坏民族团结的;
    • 5.破坏国家宗教政策,宣扬邪教和封建迷信的;
    • 6.散布谣言,扰乱社会秩序,破坏社会稳定的;
    • 7.散布淫秽、色情、赌博、暴力、恐怖或者教唆犯罪的;
    • 8.侮辱或者诽谤他人,侵害他人合法权益的;
    • 9.煽动非法集会、结社、游行、示威、聚众扰乱社会秩序的;
    • 10.以非法民间组织名义活动的;
    • 11.可能教唆他人犯罪的;
    • 12.可能损害CSDN经营者名誉或商誉等权益的;
    • 13.其他违反中华人民共和国法律、法规、政策,违反诚实信用及公序良俗,或CSDN经营者认为不当及不宜传播的信息。 CSDN博客用户违反上述规定的,CSDN经营者有权在不通知用户的情况下,根据其独立判断,采取删除已发表言论,暂停账户使用,直至取消用户资格等措施。

    第2条 CSDN博客用户发表的文章、言论或其他信息仅代表其自身观点与立场,CSDN经营者不对用户发表内容的准确性、合法性、完整性负责。博客用户须承担一切因自己的行为而直接或间接导致的民事、行政或刑事法律责任。在任何情况下,CSDN经营者不承担因用户发表内容而引起的任何损失、损害的法律责任。

    第3条 CSDN博客用户不得发布非IT技术内容。

    第4条 未经CSDN经营者同意,禁止在博客发布与CSDN提供服务无关的广告。博客管理规则

    第1条 CSDN博客的管理权限由博客管理员享有,博客管理员由CSDN经营者正式全职员工担任,并由其按照相关法律、法规、政策以及CSDN规则行使本博客全部站务管理职责和权利,管理员代表本博客官方立场,除管理员之外的任何用户及网友言论或行为,由相关人员自行承担,均与本博客无关。

    第2条 用户恶意破坏CSDN博客版块正常秩序(包含但不限于恶意投票、刷流量、刷评论、利用自定义栏目传播病毒、垃圾广告、非法信息等)的,CSDN经营者有权视情节轻重给予警告、删帖、暂停账号使用、注销帐号等处理,并依法追究民事责任及其他法律责任。

    被投诉侵权用户处理规则

    第一次:封杀,解封时要求文章改为转载并注明出处

    第二次:封杀一个月,给予严重警告,解封时要求文章改为转载并注明出处

    第三次:不予解封

    附则

    第1条 CSDN提示博客用户,在用户与通过博客相识的其他用户进行交往时,应遵循谨慎原则。对于博客用户之间相识、交往所发生或可能发生的任何心理、身体上的伤害和经济上的损失与纠纷,由相关用户自行承担一切法律责任,CSDN经营者不承担任何法律责任。

    第2条 本准则如存在与国家法律、法规或司法解释、政策等有冲突的条款,以届时有效的国家法律、法规或司法解释、政策等为准。本准则的其余条款仍然有效并具有约束力。

    第3条 CSDN经营者有权对本准则进行修改,相关条款修改后,CSDN经营者将在相关页面公布修改的内容,修改后的条款一经公布即有效的代替原条款。用户如不同意相关条款的修改,可立即停止访问或使用CSDN博客或取消已经获得的服务;如用户选择在本准则修改后继续访问或使用CSDN博客,则视为用户已接受相关条款的修改。

    第4条 用户接受本准则的内容,并不能完全涵盖用户使用CSDN博客所产生的权利和义务,CSDN经营者公布的其他声明、规则等均视为本准则之补充条款,为本准则不可分割的组成部分,与本准则具有同等法律效力。

    第5条 本准则自发布之日起生效。

    第6条 本准则最终解释权归北京创新乐知网络技术有限公司所有。

    博客评论活跃等级规则(试运营)


    评论活跃等级是CSDN对用户在博客评论区活跃程度的辨别标准,旨在鼓励读者和博主互动交流,提高用户活跃度。活跃等级规则具体如下(该规则适用于所有用户):

    • 1、所有用户初始评论次数均为零

    • 2、活跃等级用评论次数衡量,评论次数越多,等级越高

    • 3、超过10天没有进行任何评论,等级称谓变成“潜水”,初始评论次数清零

    • 4、发布评论且审核通过后计算当前的有效评论数,根据当前的有效评论数展示不同的“评论等级称谓”

    • 5、该规则从2020年4月23日起开始执行,在此之前进行的评论不予计算,仅计算该日期以后进行的有效评论

    • 以下是评论次数对应的评论等级称谓

    评论等级称谓 评论次数区间
    潜水 0次
    码哥 1-3次
    码农 4-7次
    码工 8-15次
    码皇 16-31次
    码神 32-63次
    爱码士 64次以上


    Markdown帮助


    # 欢迎使用Markdown编辑器写博客

    ---------------------------

    撤销:Ctrl/Command + Z

    重做:Ctrl/Command + Y

    加粗:Ctrl/Command + B

    斜体:Ctrl/Command + I

    标题:Ctrl/Command + Shift + H

    无序列表:Ctrl/Command + Shift + U

    有序列表:Ctrl/Command + Shift + O

    检查列表:Ctrl/Command + Shift + C

    插入代码:Ctrl/Command + Shift + K

    插入链接:Ctrl/Command + Shift + L

    插入图片:Ctrl/Command + Shift + G

    标题

    ---------------------------

    # 1级标题

    ## 2级标题

    ### 3级标题

    #### 四级标题

    ##### 五级标题

    ###### 陆级标题

    文本样式

    ---------------------------

    *强调文本* _强调文本_

    **加粗文本** __加粗文本__

    ==标记文本==

    ~~删除文本~~

    > 引用文本

    H~2~O is是液体。

    2^10^ 运算结果是 1024。

    列表

    ---------------------------

    - 项目

    * 项目

    + 项目

    1. 项目1

    2. 项目2

    3. 项目3

    - [ ] 计划任务

    - [x] 完成任务

    链接

    ---------------------------

    链接: [link](https://mp.csdn.net).

    图片: ![Alt](https://avatar.csdn.net/7/7/B/1_ralf_hx163com.jpg)

    带尺寸的图片: ![Alt](https://avatar.csdn.net/7/7/B/1_ralf_hx163com.jpg =30x30)

    代码片

    ---------------------------

    下面展示一些 `内联代码片`。

    ```

    // A code block

    var foo = 'bar';

    ```

    ```javascript

    // An highlighted block

    var foo = 'bar';

    ```

    1. 代码片必须手动声明代码语言类型

    2. 目前支持代码类型: `markup`、`html`、`svg`、`xml`、`c`、`clike`、`cpp`、`csharp`、`java`、`vbnet`、`go`、`ruby/rb`、`python/py`、`php`、`sql`、`perl`、`objectivec`、`swift`、`javascript/js`、`css`、`handlebars`、`bash`、`kotlin`

    3. 代码片主题

    默认主题为:Atom One Dark

    可以前往 [**写作中心/博客设置**](https://mp.csdn.net/configure) 在**代码片样式**项进行更改

    表格

    ---------------------------

    项目 | Value

    -------- | -----

    电脑 | $1600

    手机 | $12

    导管 | $1

    | Column 1 | Column 2 |

    |:--------:| -------------:|

    | centered 文本居中 | right-aligned 文本居右 |

    自定义列表

    ---------------------------

    Markdown

    : Text-to-HTML conversion tool

    Authors

    : John

    : Luke

    注脚

    ---------------------------

    一个具有注脚的文本。[^1]

    [^1]: 注脚的解释

    注释

    ---------------------------

    Markdown将文本转换为 HTML。

    *[HTML]: 超文本标记语言

    KaTex 数学公式

    ---------------------------

    Gamma公式展示 $\Gamma(n) = (n-1)!\quad\forall

    n\in\mathbb N$ 是通过 Euler integral

    $$

    \Gamma(z) = \int_0^\infty t^{z-1}e^{-t}dt\,.

    $$

    新的数学公式使用了KaTex,其语法与 LaTex基本一致,但也有一些不同的地方,具体请参考KaTex官方使用文档: [https://katex.org/docs/supported.html](https://katex.org/docs/supported.html)

    插入甘特图

    ---------------------------

    ```mermaid

    gantt

    dateFormat YYYY-MM-DD

    title Adding GANTT diagram functionality to mermaid

    section 现有任务

    已完成 :done, des1, 2014-01-06,2014-01-08

    进行中 :active, des2, 2014-01-09, 3d

    计划中 : des3, after des2, 5d

    ```

    插入UML图

    ------------

    ```mermaid

    sequenceDiagram

    张三 ->> 李四: 你好!李四, 最近怎么样?

    李四-->>王五: 你最近怎么样,王五?

    李四--x 张三: 我很好,谢谢!

    李四-x 王五: 我很好,谢谢!

    Note right of 王五: 李四想了很长时间, 文字太长了
    不适合放在一行.

    李四-->>张三: 打量着王五...

    张三->>王五: 很好... 王五, 你怎么样?

    ```

    插入Mermaid流程图

    --------

    ```mermaid

    graph LR

    A[长方形] -- 链接 --> B((圆))

    A --> C(圆角长方形)

    B --> D{菱形}

    C --> D

    ```

    插入Flowchart流程图

    -------

    ```mermaid

    flowchat

    st=>start: 开始

    e=>end: 结束

    op=>operation: 我的操作

    cond=>condition: 确认?

    st->op->cond

    cond(yes)->e

    cond(no)->op

    ```

    付费专栏开通规则


    付费专栏是博主根据自己想变现的意愿而选择的一项可变现的产品,开通付费专栏事项须知:

    • 付费专栏开通提交前,请认真阅读《CSDN付费专栏写作协议》,知晓双方的权利与义务
    • 专栏文章需为原创文章且不少于15篇,每篇文章字数不得少于5000字(包括代码片段内字符数量)
    • 专栏申请需提交审核,审核时间1-2个工作日
    • 专栏定价,博主可以按照从系统已设定好的价格里选择定价
    • 确保专栏内容无违规、违法、广告等不当内容
    • 专栏一旦设置为收费,审核通过以后,无法取消,请谨慎操作

    展开全文
  • 以太坊:帮助手册-用MarkdownSphinx

    万次阅读 2019-05-09 09:13:59
    Sphinx 默认是使用...大部分情况,我们普通的Markdown格式,如果需需要高级一些的用法,可以看看下面有没有想要的效果: Markdown转reST 重要 Its a note! in markdown! 注解 Its a note! in mar...

    Sphinx 默认是使用reStructuredText(简称reST) 格式进行写作,喜欢Markdown格式可以使用Recommonmark插件来实现。

    大部分情况,我们写普通的Markdown格式,如果需需要高级一些的用法,可以看看下面有没有想要的效果:

    Markdown转reST

    重要

    Its a note! in markdown!

    注解

    Its a note! in markdown!

    警告

    Its a note! in markdown!

    侧边栏用法

    emphasis-lines:

    highlights the lines.

    linenos:

    shows the line numbers as well.

    caption:

    shown at the top of the code block.

    name:

    may be referenced with :ref: later.

    使用code-block 高亮 第3 5行.

    1
    2
    3
    4
    5
    # 注释行
    import System
    System.run_emphasis_line
    # code ........................ 很长的代码会自动产生 水平 scrollbar
    System.exit!
    

    数学公式

    E=mc2y=∑i=1ng(xi)E=mc2y=∑i=1ng(xi)

    参考

    展开全文
  • 摘要:本文详细介绍如何利用MATLAB实现手写数字的识别,其中特征提取过程采用方向梯度直方图(HOG)特征,分类过程采用性能优异的支持向量机(SVM)算法,训练测试数据集为学术及工程上常用的MNIST手写数字数据集,...

    演示动图

    摘要:本文详细介绍如何利用MATLAB实现手写数字的识别,其中特征提取过程采用方向梯度直方图(HOG)特征,分类过程采用性能优异的支持向量机(SVM)算法,训练测试数据集为学术及工程上常用的MNIST手写数字数据集,博主为SVM设置了合适的核函数,最终的测试准确率达99%的较高水平。根据训练得到的模型,利用MATLAB GUI工具设计了可以手写输入或读取图片进行识别的系统界面,同时可视化图片处理过程及识别结果。本套代码集成了众多机器学习的基础技术,适用性极强(用户可修改图片文件夹实现自定义数据集训练),相信会是一个非常好的学习Demo。本博文目录如下:

    ➷点击跳转至文末所有涉及的完整代码文件下载页☇

    代码介绍及演示视频链接:https://space.bilibili.com/456667721/(正在更新中,欢迎关注博主B站视频)


    前言

        机器学习中支持向量机(SVM)算法可谓是个超级经典,也许很多人倾向于使用深度神经网络解决问题,但在博主看来选择何种算法应该取决于具体的机器学习任务,对于复杂程度不高、数据量较少的任务,也许经典的机器学习算法能够更好地解决问题。手写数字识别这一任务要求正确分类出0-9的手写数字图片,最常用的数据集是MNIST,该数据集也是众多论文中经常用来测试对比算法的对象。博主想说的是其实SVM也可以很好地解决这一问题,本文介绍的代码就可以实现99%的测试准确率,所以想借此为大家提供一个学习的Demo共同交流。

        博主之前也曾写过两篇利用SVM进行分类的博文:基于支持向量机的图像分类(上篇)基于支持向量机的图像分类(下篇:MATLAB实现),详细介绍了特征提取的基本技术和支持向量机的原理,亦可供大家参考。本文给出了MATLAB实现的完整代码供大家参考,有基础的读者可按照文中的介绍复现出完整程序;对于想获取全部数据集及程序文件的朋友,可以点击提供的下载链接获取可直接运行的代码,原创不易,还请多多支持了。如本文对您有所帮助,敬请点赞、收藏、关注!


    1. 效果演示

        找资料的大伙时间宝贵,为了方便大家了解项目,我们老规矩先上效果演示,GUI界面有几个主要功能:通过手写板写入数字进行识别;利用文件浏览器选取一张手写数字的图片进行识别;同步可视化处理过程中的图像,显示最终识别结果。GUI界面如下:

    GUI界面展示图
        在手写板中写入数字后可点击下方保存按钮保存为图片文件,手写输入及读图输入及保存功能的演示动图如下图所示。右侧为图像原图、灰度化处理、二值化处理及特征提取后的图像,方便了解识别的处理过程:

    动图演示
        本项目所有功能均已在MATLAB R2020b中测试通过,更多演示细节敬请前往博主B站观看演示视频,视频具体演示程序运行效果并介绍如何使用代码,欢迎关注!


    2. MNIST数据集

        MNIST数据集来自美国国家标准与技术研究所(National Institute of Standards and Technology, NIST)。训练集 (Training Set) 由来自250个不同人手写的数字构成,其中50%是高中学生,50%来自人口普查局的工作人员;测试集(Test Set) 也是同样比例的手写数字数据。

    MNIST数据集
        MNIST数据集可在 http://yann.lecun.com/exdb/mnist/获取,但由于访问外网下载速度很慢,博主已将该数据集打包上传至百度网盘,大家可以通过博主前面发布的博文:深度学习常用数据集介绍与下载(附网盘链接)进行下载。MNIST数据集包含了四个部分:

    • Training set images:train-images-idx3-ubyte.gz (9.9MB,解压后47MB,包含60000个样本)
    • Training set labels:train-labels-idx1-ubyte.gz(29KB,解压后60KB,包含60000个标签)
    • Test set images:t10k-images-idx3-ubyte.gz (1.6MB,解压后7.8MB,包含10000个样本)
    • Test set labels: t10k-labels-idx1-ubyte.gz(5KB,解压后10KB,包含10000个标签)

        将下载后的数据集文件放在一个文件夹下,用于后续处理,MNIST数据集文件如下图所示:

    数据集文件
        由于MNIST的原始文件并非常见的图片格式,因此为了方便后续处理,我们先将这几个文件转化为mat文件,然后逐个读取转换为图像矩阵并保存为图片文件。值得注意的是,我们需按照每条样本数据的标签将其分别放置在不同的文件夹中,如下方式在train文件夹中创建0-9的文件夹用来存放要写入的对应标签的图片:

    子文件夹
        这里写一个小脚本将数据集图片按标签存入对应文件夹中,其中的mat文件为读取原始数据并转存后的数据集,MNIST每张图片的尺寸均为28×28,所以可以先通过reshape恢复数据尺寸,然后利用imwrite函数写入文件中(路径为对应标签的子文件夹),该部分代码如下:

    clear
    clc
    % P = loadMNISTImages('mnist/train-images.idx3-ubyte');
    % T = loadMNISTLabels('mnist/train-labels.idx1-ubyte');
    load('test_data.mat', 'test_X')
    load('test_label.mat', 'test_Y')
    load('train_data.mat', 'train_X')
    load('train_label.mat', 'train_Y')
    load('validation_data.mat', 'validation_X')
    load('validation_label.mat', 'validation_Y')
    % 遍历每张图片
    disp('现在将训练数据保存为图片文件格式')
    for i = 1:length(train_X)
        img = reshape(train_X(i, :), 28, 28); % 转换成28*28的图片
        img = img';
        imwrite(img, ['./mnist/train/', int2str(train_Y(i)), '/', int2str(i), '.jpg']);
        disp(i);
    end
    % 遍历每张图片
    disp('现在将测试数据保存为图片文件格式')
    for i = 1:length(test_X)
        img = reshape(test_X(i, :), 28, 28); % 转换成28*28的图片
        img = img';
        imwrite(img, ['./mnist/test/', int2str(test_Y(i)), '/', int2str(i), '.jpg']);
        disp(i);
    end
    

        处理后的子文件夹中将存放对应的图片文件,其中两个子文件夹的截图如下图所示:

    子文件夹详情
        数据集准备完毕,现在可以通过文件夹读取图片了。在MATLAB中可使用imageDatastore函数方便地批量读取图片集,它通过递归扫描文件夹目录,将每个文件夹名称自动作为图像的标签,该部分代码如下:

    % 给出训练和测试数据路径,利用imageDatastore载入数据集
    syntheticDir   = fullfile('data','mnist', 'train');
    handwrittenDir = fullfile('data','mnist', 'test');
    
    % imageDatastore递归扫描目录,将每个文件夹名称自动作为图像的标签
    trainSet = imageDatastore(syntheticDir,   'IncludeSubfolders', true, 'LabelSource', 'foldernames');
    testSet  = imageDatastore(handwrittenDir, 'IncludeSubfolders', true, 'LabelSource', 'foldernames');
    

        至此训练和测试数据集分别被存放在trainSettestSet变量中,可以简单查看训练和测试集每类标签的样本个数,显示代码如下:

    trainSetDetail = countEachLabel(trainSet) % 训练数据
    testSetDetail = countEachLabel(testSet) % 测试数据
    

        执行以上代码运行结果如下:

    查看各类文件个数
        下面读取几张训练和测试集的图片,显示原始图片帮助我们清楚该数据集的实际情况,按照两行显示:第一行为训练图片,第二行为测试图片,该部分代码如下:

    figure;
    % 显示训练、测试图片(第一行是训练图片、第二行是测试图片)
    subplot(2,5,1);imshow(trainSet.Files{4417});
    subplot(2,5,2);imshow(trainSet.Files{23696});
    subplot(2,5,3);imshow(trainSet.Files{31739});
    subplot(2,5,4);imshow(trainSet.Files{46740});
    subplot(2,5,5);imshow(trainSet.Files{54784});
    subplot(2,5,6);imshow(testSet.Files{53});
    subplot(2,5,7);imshow(testSet.Files{4572});
    subplot(2,5,8);imshow(testSet.Files{5163});
    subplot(2,5,9);imshow(testSet.Files{8381});
    subplot(2,5,10);imshow(testSet.Files{9549});
    

        执行该代码可以看到如下的运行结果:

    数据集显示
        在提取特征前我们对图片进行一些必要的预处理操作,首先读取图片后进行灰度化,然后进行二值化处理,以方便后续的特征提取。这里我们将原始图片和二值化后的图像显示在一个窗口中,其代码如下:

    exampleImage = readimage(trainSet, 31739);
    if numel(size(exampleImage))==3
            exampleImage = rgb2gray(exampleImage);   % 灰度化图片
    end
    
    processedImage = imbinarize(exampleImage);
    
    figure;
    subplot(1,2,1)
    imshow(exampleImage)
    title('原始图像')
    
    subplot(1,2,2)
    imshow(processedImage)
    title('二值化后图像')
    

        执行该代码可以看到如下的原始图像与二值化后的对比结果:
    二值化对比结果


    3. HOG特征提取

        真正用于训练分类器的数据并不是原始图片数据,而是先经过特征提取后得到的特征向量,这里使用的特征类型是HOG,也就是方向梯度直方图。所以这里重要的一点是正确提取出HOG特征,extractHOGFeaturesMATLAB自带的HOG特征提取函数,该函数不仅可以有效提取特征,还可以返回特征的可视化结果以方便展示。这里通过调整每个细胞单元的尺寸大小实现不同尺寸的特征提取,可以通过可视化的结果看到细胞单元的尺寸对图像的形状信息量的影响:

    img = readimage(trainSet, 31739);
    
    % 提取HOG特征,并进行HOG可视化
    [hog_2x2, vis2x2] = extractHOGFeatures(img,'CellSize',[2 2]);
    [hog_4x4, vis4x4] = extractHOGFeatures(img,'CellSize',[4 4]);
    [hog_8x8, vis8x8] = extractHOGFeatures(img,'CellSize',[8 8]);
    
    % 显示原始图片
    figure; 
    subplot(2,3,1:3); imshow(img);
    title('原始图片');
    
    % 可视化HOG特征
    subplot(2,3,4);  
    plot(vis2x2); 
    title({'CellSize = [2 2]'; ['Length = ' num2str(length(hog_2x2))]});
    
    subplot(2,3,5);
    plot(vis4x4); 
    title({'CellSize = [4 4]'; ['Length = ' num2str(length(hog_4x4))]});
    
    subplot(2,3,6);
    plot(vis8x8); 
    title({'CellSize = [8 8]'; ['Length = ' num2str(length(hog_8x8))]});
    

        通过以上代码我们分别提取了2×24×48×8三种尺寸的HOG特征,其运行的可视化结果如下:
    不同尺寸HOG特征
        从以上结果可以看出2×2的细胞尺寸会编码更多的形状信息,这会显著增加HOG特征向量的维数,相反8×8的细胞尺寸得到的特征量最少。这其实是一个需要调试的参数,一方面应该对足够的空间信息进行编码,另一方面需要减少HOG特征向量的维数,为此可以选择4×4的细胞大小。当然读者还可以通过反复根据分类器训练和测试的效果来调整HOG特征的相关参数,以实现最佳参数设置。


    3. 训练和评估SVM分类器

        下面我们使用以上提取的HOG特征训练支持向量机,以上的代码只是提取了一张图片的特征,训练前我们对整个训练数据集提取HOG特征并组合,为了方便后面的性能评估,这里对测试数据集也进行特征提取:

    cellSize = [4 4];
    hogFeatureSize = length(hog_4x4);
    
    % 提取HOG特征
    tStart = tic; 
    [trainFeatures, trainLabels] = extractHogFromImageSet(trainSet, hogFeatureSize, cellSize); % 训练集特征提取
    [testFeatures, testLabels] = extractHogFromImageSet(testSet, hogFeatureSize, cellSize);    % 测试集特征提取
    
    tEnd = toc(tStart);
    fprintf('提取特征所用时间:%.2f秒\n', tEnd);
    

        由于图片数量众多,提取特征过程尚需一定时间,这里对训练集、测试集提取过程进行计时,因计算机算力不同,执行时间可能会不一致。以下代码中extractHogFromImageSet函数为自定义函数,封装了前面所提到的图像灰度化、二值化和HOG特征提取的代码,可以方便我们复用代码,使得程序更加简洁。

    cellSize = [4 4];
    hogFeatureSize = length(hog_4x4);
    
    % 提取HOG特征
    tStart = tic; 
    [trainFeatures, trainLabels] = extractHogFromImageSet(trainSet, hogFeatureSize, cellSize); % 训练集特征提取
    [testFeatures, testLabels] = extractHogFromImageSet(testSet, hogFeatureSize, cellSize);    % 测试集特征提取
    
    tEnd = toc(tStart);
    fprintf('提取特征所用时间:%.2f秒\n', tEnd);
    

        运行以上代码结果如下:

    提取特征所用时间:181.59秒
    

        构建支持向量机模型,利用提取的训练集特征进行训练。首先利用templateSVM函数构建支持向量机模板参数,选择polynomial核函数,执行标准化处理数据,显示训练过程;利用fitcecoc函数执行训练过程,其代码如下:

    % 训练支持向量机
    
    t = templateSVM('SaveSupportVectors',true, 'Standardize', true, 'KernelFunction','polynomial', ...
        'KernelScale', 'auto','Verbose', 1);      % 利用polynomial核函数, 标准化处理数据,显示训练过程(verbose取0时取消显示)
    
    tStart = tic; % 计时开始
    classifier = fitcecoc(trainFeatures, trainLabels, 'Learner', t); % 训练SVM模型
    tEnd = toc(tStart);
    fprintf('训练模型所用时间:%.2f秒\n', tEnd);
    

        以上代码开启了训练过程信息显示,训练过程中显示信息如下:

    训练过程展示

    训练模型所用时间:104.96秒
    

        等待训练完成,我们可以使用训练好的分类器进行预测,这里先利用测试集评估模型并计算分类评价指标,对测试集进行预测的代码如下:

    tStart = tic;
    
    % 对测试数据集进行预测
    predictedLabels = predict(classifier, testFeatures);
    
    tEnd = toc(tStart);
    fprintf('模型对测试集进行预测所用时间:%.2f秒\n', tEnd);
    

        运行结果如下:

    模型对测试集进行预测所用时间:5.18秒
    

        得到了预测结果,可以使用混淆矩阵评估结果,以下代码首先计算混淆矩阵结果,然后将结果打印出来:

    % 使用混淆矩阵评估结果
    confMat = confusionmat(testLabels, predictedLabels);
    dispConfusionMatrix(confMat); % 显示混淆矩阵
    

        运行结果如下:

    混淆矩阵打印结果
        以上代码显示了混淆矩阵的结果,但可能还不够直观,下面绘制混淆矩阵图帮助更好了解模型性能:

    % 绘制混淆矩阵图
    plotconfusion(testLabels, predictedLabels);
    

        运行代码后显示混淆矩阵图如下图所示,每行对角线上的网格(绿色网格)处显示了某类样本预测正确的数目及其占比。右下角网格表示分类的准确率,可以看出该分类器具有98.9%的总体分类准确率。
    混淆矩阵图
        分类准确率还可以通过以下代码进行计算:

    accuracy = sum(predictedLabels == testLabels) / numel(testLabels);
    fprintf('模型在测试集上的准确率:%.0f%%\n', accuracy*100);
    

        同样可以计算出预测的准确率,这里四舍五入取整可得以下结果:

    模型在测试集上的准确率:99%
    

        通过测试集评估结果,可以看出采用核函数的支持向量机准确率为99%,其性能已逼近深度卷积神经网络。得到了一个性能优良的分类器,接下来便可以利用模型设计一些有意思的东西了。为此我将该模型用于实际的手写数字识别中,以下是在MATLAB GUI工具中设计的界面,如若读者反响热烈,后期将很快更GUI的设计介绍,还请关注了!

    GUI界面


    下载链接

        若您想获得博文中涉及的实现完整全部程序文件(包括数据集,m, UI文件等,如下图),这里已打包上传至博主的面包多平台和CSDN下载资源。本资源已上传至面包多网站和CSDN下载资源频道,可以点击以下链接获取,已将所有涉及的文件同时打包到里面,点击即可运行,完整文件截图如下:

    文件夹详情

    注意:本资源已经过调试通过,下载后可通过MATLAB R2020b运行;训练主程序为main_showData.mlxDigitClassify_HOG_SVM.m文件,测试程序可运行testImage.mlx,要使用GUI界面请运行DigitClassifyUI.m文件(脚本文件可直接运行);其它程序文件大部分为函数而非可直接运行的脚本,使用时请勿直接点击运行!➷➷➷

    完整资源下载链接1博主在面包多网站上的完整资源下载页

    完整资源下载链接2https://mianbaoduo.com/o/bread/YZeUkplu

    注:以上两个链接为面包多平台下载链接,CSDN下载资源频道下载链接稍后上传。

    代码使用介绍及演示视频链接:https://space.bilibili.com/456667721/(尚在更新中,欢迎关注博主B站视频)


    结束语

        由于博主能力有限,博文中提及的方法即使经过试验,也难免会有疏漏之处。希望您能热心指出其中的错误,以便下次修改时能以一个更完美更严谨的样子,呈现在大家面前。同时如果有更好的实现方法也请您不吝赐教。如果本博文反响较好,其界面部分也将在下篇博文中介绍,所有涉及的GUI界面程序也会作细致讲解,敬请期待!

    展开全文
  • Linux Shell CentOS 一个输出命令 支持颜色

    千次阅读 热门讨论 2020-10-21 11:49:11
    文章目录Linux Shell CentOS 一个输出命令 支持颜色1、代码2、演示 Linux Shell CentOS 一个输出命令 支持颜色 1、代码 #!/usr/bin/env bash # --------------------------------------------- # 使用说明 # ...
  • 有时候我回头会问自己,为什么能坚持...人都会有惰性,让外力来帮助自己坚持更容易。介绍几款现在常用的记录软件。 1,读书软件的选取:从考虑实惠到深陷其中。 我用的第一个阅读记录软件是百度阅读,刚开始选...
  • 验证”支持6-20个字母、数字、下划线或减号,以字母开头“的正则表达式怎么,谢谢亲们的帮助···················
  • 手把手教你专利申请书/如何申请专利

    万次阅读 多人点赞 2008-12-10 10:46:00
    手把手教你专利申请书·如何申请专利   摘要 小前言 (一)申请前的准备工作  1、申请前查询  2、其他方面的考虑 ...常见问题的问答   摘要:  如何好专利申请?由于很多专利申请人都...
  • 好的售前解决方案需要这样

    万次阅读 2017-02-09 13:12:54
    所以在方案之前,问问需要方案的同事,甚至是客户,听听他们对方案的想法和建议,这样对方案会有很大帮助。  闭门造车往往导致接受者对方案不满意,要求返工修改。所以动笔前先打几个电话,问清楚客户需求,...
  • 问题描述 java验证,”支持6-20...验证”支持6-20个字母、数字、下划线或减号,以字母开头“的正则表达式怎么,谢谢亲们的帮助··················· 解决方案 ^[a-zA-Z][a-zA-Z0-9_-]{519}$ ...
  • 支持向量机SVM、支持向量回归SVR详细推导

    万次阅读 多人点赞 2019-06-30 09:31:52
    文章详细介绍了支持向量机SVM及其拓展,支持向量回归SVR.并从线性分类和非线性分类的角度出发,详细推导了硬间隔、软间隔和核函数的支持向量机。
  • 没用过这些 IDEA 插件?怪不得代码头疼

    万次阅读 多人点赞 2020-01-14 18:42:30
    使用插件,可以提高开发效率。对于开发人员很有帮助。这篇博客介绍了IDEA中最常用的一些插件。
  • 最近做springboot+mybatis的项目想要用到读写分离,查了一圈发现大家都是自己的,没用通用现成的读写分离架构,因此就了一个比较简单好用的小插件,来帮助大家简单的实现读写分离的功能,项目已开源并已经上传到...
  • Android N(7.0)中的Vulkan支持

    万次阅读 2016-09-04 12:07:37
    Vulkan为Khronos Group推出的下一代跨平台图形开发接口,用于替代历史悠久的OpenGL。...原本用OpenGL个最简单的demo百来行,用vulkan祼的话没千把行下不来。因此实际使用中需要有utility层来简化接口调用。
  • Blog 项目源码:... 目录 目录 前文列表 reCAPTCHA 应用 reCAPTCHA ...用 Flask 来个轻博客 (1) — 创建项目 用 Flask 来个轻博客 (2) — Hello World!...用 Flask 来个轻博客 (3) — (M)VC_连接 MyS...
  • 特别说明一下:程序中,提取数字所在区域的立式外接矩形我通过手工确定在boundRect[的第9个,实际上每幅图像是不一样的,甚至更一般的情况下需要写专门的程序作处理,在实际应用时,必须要修改这一部分程序,否则...
  • 秒杀多线程第十四篇 读者者问题继 读写锁SRWLock

    万次阅读 多人点赞 2012-06-13 09:33:42
    在《秒杀多线程第十一篇读者者问题》文章中我们使用事件和一个记录读者个数的变量来解决读者者问题。问题虽然得到了解决,但代码有点复杂。本篇将介绍一种新方法——读写锁SRWLock来解决这一问题。读写锁在对...
  • sqlite读写锁和线程模式

    万次阅读 2019-06-14 18:06:40
    sqlite读写锁 SQLite3总共有三种事务类型:BEGIN [ DEFERRED /IMMEDIATE / EXCLUSIVE ] TRANSCATION,提供以下五种的文件锁状态,按锁的级别依次是:... 文件没有持有任何锁,即当前数据库不存在任何读或...
  • 40款帮助你加薪的IDEA神器插件!

    万次阅读 多人点赞 2020-03-20 23:46:23
    在前面的话 : 大家好,我是全栈小刘,一名零零后的编程爱好者。 从初中开始编程,对编程有独特情怀,热爱技术,目前已有五年的编程经验,做过许许多多有意思的项目,这篇博客,算是对自己学习的一个总结,算是一...
  • OSX: 内置读写NTFS分区

    万次阅读 2013-10-12 15:23:11
    曾经在10.6的时候,OS X用户可以方便地,通过OS X系统内置的功能,对NTFS分区方便读写,具体方法可以参见,前面的blog: Mac OS X:雪豹内置支持读写NTFS卷。 可是在10.7之后,该方法似乎是不能使用了. 其实不然,...
  • 非常荣幸能够晋级"2019年博客之星年度总评选"前200名!1月10日起进入200进20的...看到每天博客可以帮助几千人,心里还是很开心的,大家的支持是我坚持的动力,2020年,我会继续输出高质量的文章。 重点来啦,大...
  • 收藏!一篇教会你90%的shell脚本!

    万次阅读 多人点赞 2019-09-06 18:18:36
    还不会shell脚本?这篇文章教会你90%的shell脚本!
  • 今年-计划一本java方面的书籍

    千次阅读 多人点赞 2013-05-12 00:54:40
    原本以博客为主,在众多朋友的支持下,今年决心一本java书籍,不论是否能收到大家的关注,也会尽心去好每一条内容。其实目前java方面的书籍十分多,而高手看来,十本书有8、9本是垃圾书,要么是本身得不好,...
  • iReportJasperReport中文支持全面解决

    万次阅读 2007-01-05 16:50:00
    iReportJasperReport中文支持全面解决 在使用iReportJasperReport作为报表产生工具时, 中文支持是经常遇到的问题,笔者最近做的一个J2EE Web项目采用这套工具开发报表,也遇到了类似问题,本文总结了在使用iReport...
  • 好一份数据分析报告需要注意的13个要点先说说一份好的数据分析报告的重要性,很简单,因为分析报告的输出是是你整个分析过程的成果,是评定一个产品、一个运营事件的定性结论,很可能是产品决策的参考依据,既然...
  • 于2020 05 16 今天远程连接卧室电脑,一直提示 出现身份验证错误,无法连接到本地...如需帮助,请于管理员或技术支持人员联系。 这玩意 然后百度一堆方法,一个都没有 用 最后发现只要把这个√去掉即可 ...
  • 坚持技术博客一年能有多少收获!

    万次阅读 多人点赞 2020-10-10 08:31:57
    作者:小傅哥 ... 沉淀、分享、成长,让自己和他人都能有所收获!...粉丝过万说明这个公众号已经度过了冷启动阶段,并且所的技术文章得到了一定的市场认可。这些文章内容构成了一个小的生态圈,通过内
  • 为什么我在CSDN坚持了3年多的博客?

    万次阅读 多人点赞 2018-11-04 23:47:48
    准确的说,我入驻CSDN应该是将近5年了,我读本科那会儿有个账号,由于用户名起的很“随心所欲”,再加上当时刚刚,文章也的很“下不为例”,所以决定弃掉了。 后面注册了一个新的号,也就是目前我在更新的号,又...
  • 在线拼音大小转换

    千次阅读 2019-01-28 09:44:37
    在线拼音大小转换工具,简单好用的支持拼音转化成大写和小写,为在工作所需转化的大大们提供了一定的帮助 网站在线工具地址:https://www.lmcjl.com/index/typeface/pinyin.html?menu_id=48...
  • 程序员,如何好文档?

    千次阅读 2016-06-19 16:16:06
    听说要文档,程序员的第一反应是:为什么要文档?不!程序员的我们善于编码、善于讨论方案、争辩技术,大多不善于交流、尤其不善于文档。记得我们团队有的童鞋的周报就一句话:修改bug:TDXXXX,TDXXX2,TDXXX3...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 768,287
精华内容 307,314
关键字:

如何写需要公司的支持与帮助