精华内容
下载资源
问答
  • matlab-K折交叉验证与分层K折交叉验证
    千次阅读 多人点赞
    2020-10-12 21:21:09


    很多论文都会用到K折交叉验证,但是我以前实验一直没有做这个步骤,最近整理了一下关于这个方面的资料,其实就是把看到的文字资料整理一下,有些文字自己进行了突出和调整,感谢所有博主,最后是我的matlab版的分层交叉验证,通过这一段的学习,最大的感受就是 python 好,python好,python 好,真是令人忧伤啊。。。
    分层K折交叉验证是K折交叉验证的一个变种, 适用于不平衡的数据集,所以先介绍K折交叉验证,之后再介绍分层K折交叉验证。

    K折交叉验证有什么用?

    用法1:常用的精度测试方法主要是交叉验证,例如10折交叉验证(10-fold cross validation,CV),将数据集分成平均分成互斥的十份,轮流将其中9份做训练1份做验证,10次的结果的均值作为对算法精度的估计,一般还需要进行多次10折交叉验证求均值,例如:10次10折交叉验证,以求更精确一点。
    来源——参考博客1https://blog.csdn.net/Dream_angel_Z/article/details/47110077?utm_medium=distribute.pc_relevant.none-task-blog-OPENSEARCH-6.channel_param&depth_1-utm_source=distribute.pc_relevant.none-task-blog-OPENSEARCH-6.channel_param

    用法2一般情况将K折交叉验证用于模型调优,找到使得模型泛化性能最优的超参值。找到后,在全部训练集上重新训练模型,并使用独立测试集对模型性能做出最终评价。
    来源——参考博客2https://blog.csdn.net/ChenVast/article/details/79257097?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522160249987519725222451761%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fblog.%2522%257D&request_id=160249987519725222451761&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2blogfirst_rank_v2~rank_blog_v1-1-79257097.pc_v2_rank_blog_v1&utm_term=k%E6%8A%98&spm=1018.2118.3001.4187
    关于这两种用法,我目前看到的论文中,几乎都是第1种,我也是为了精度测试方法来学习k折交叉验证的,第2种用法没怎么看到过,所以记录一下啊,仅供参考。

    如何实现K折交叉验证?

    K折交叉验证的要点:(文字版)

    1:数据集划分为K个相同大小互斥子集。
    2:每次用K-1个集合训练,剩下的1个做测试集,得到结果。
    3:循环K次,得到K个结果,至此1次完整的K折交叉验证结束
    来源——参考博客3(有改动):https://baijiahao.baidu.com/s?id=1677821446173455536&wfr=spider&for=pc
    这个是博主:桔子的算法之路写的,,但是我觉得他原文比较像是分层K折交叉验证,所以我就改了一点点

    如何实现K折交叉验证(图片版)

    图片比文字直观,下面的图很清楚地告诉我们,大小相同、互斥、以及具体的过程图片来源,依旧是参考博客2https://blog.csdn.net/ChenVast/article/details/79257097?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522160249987519725222451761%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fblog.%2522%257D&request_id=160249987519725222451761&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2blogfirst_rank_v2~rank_blog_v1-1-79257097.pc_v2_rank_blog_v1&utm_term=k%E6%8A%98&spm=1018.2118.3001.4187
    在这里插入图片描述
    在这里插入图片描述

    如何实现K折交叉验证(matlab版)

    这个之前有特地整理过了,代码来自博主:野狗汪汪汪,这里再贴一下mattlab代码,博客地址:https://blog.csdn.net/weixin_41274837/article/details/90169268

    data=double(xtrain');
    label=double(ytrain');  %要求数据集每一行代表一个样本 ;label每行为标签
     
    [M,N]=size(data); % M:总样本量; N:一个样本的元素总数
    indices=crossvalind('Kfold',data(1:M,N),5);  %进行随机分包
     
    for k=1:5  %交叉验证k=10,10个包轮流作为测试集
        test = (indices == k);   %获得test集元素在数据集中对应的单元编号
        train = ~test;  %train集元素的编号为非test元素的编号
        train_data=data(train,:);%从数据集中划分出train样本的数据
        train_label=label(train,:);
        test_data=data(test,:);  %test样本集
        test_label=label(test,:);
    end
    

    这个代码的具体原理可以参考这个博客,来源——参考博客7https://blog.csdn.net/IT_flying625/article/details/102995537
    至此,k折交叉验证的内容全部介绍完毕,下面是分层交叉验证的内容

    为啥我们需要分层K折交叉验证?

    K折交叉验证和分层k折交叉验证的区别,字面上看就是多了个分层,那么为啥要分层呢,前面有说到,分层k折交叉验证是适用于不平衡的数据集的,依然是参考博客2写道:
    K折交叉验证改进成的分层K折交叉验证:
    获得偏差和方差都低的评估结果,特别是类别比例相差较大时。

    那么为什么类别比例相差比较大的时候(就是数据集不平衡时),不分层的k折交叉验证得到的结果不准确呢?请参考这个回答http://sofasofa.io/forum_main_post.php?postid=1000505&
    对于非平衡分类,stratified CV(这里指分层的k折交叉验证)的优点就更加明显了。如果二元分类中分类A只占有0.01%,分类B占有99.99%,当你使用常规的交叉验证的时候,可能你的训练集里甚至都没有足够的A来训练,或者测试集里A的数量极少,严重影响了验证结果的可靠性。
    怎么理解这个影响可靠性,换句话来说,假设整个数据集100张图,进行5折交叉验证,那么一折就有20张图,假设两个类A和B比例是1:9,运气非常差的情况下,某一折的过程中,所有的A(10个样本)全部分为测试集,训练集中一张都没有A,那么相当于老师讲课没有说这个类型题(训练),考试(测试)还考到了,考的差(评估结果差)就说你水平(这个模型效果不好),这个说法一看就知道不对劲。而越是不平衡的数据集,越有可能出现这种情况,所以我们要通过分层,来让每一折的——不管是训练集还是测试集——每个类的比例都尽量和原来的数据集保持一样,这就类似于,老师平时讲的多的东西,考试占的分也多,然后我们考很多次试,取评分,这个才能比较客观地体现出你的能力,如果是一个平衡的数据集,如果你某一次考试考的特别好或者特别差,这都不是你的真实水平,K折交叉验证通过让你考很多次,取平均分可以避免这种情况,但是不平衡的数据集,K折交叉就好像你参加的考试本身就有些问题,考很多次也不能体现你的真实水平,而分层K折交叉验证就可以解决这个问题。

    如何实现分层k折交叉验证

    如何实现分层k折交叉验证(文字版)

    分层交叉验证(Stratified k-fold cross validation):首先它属于交叉验证类型,分层的意思是说在每一折中都保持着原始数据中各个类别的比例关系,比如说:原始数据有3类,比例为1:2:1,采用3折分层交叉验证,那么划分的3折中,每一折中的数据类别保持着1:2:1的比例,这样的验证结果更加可信。
    来源——参考博客5https://www.cnblogs.com/ysugyl/p/8707887.html

    如何实现分层k折交叉验证(图片版)

    这张图可以直观感受一下啥叫分层k折交叉验证,这是我找到的最好的一张图了,只看下面那个部分就好了,图片来源——参考博客4https://blog.csdn.net/ssswill/article/details/85267864
    在这里插入图片描述
    因此正如原博客所说的:分层保证了每个折中类别之间的比例与整个数据集中的比例相同。

    如何实现分层K折交叉验证(matlab版)

    看了一圈,好像程序都是python的,难过,以后要自学python啊!!!感觉python开源,资料比较丰富,matlab闭源再加上之前哈工大那个新闻,哎,好麻烦啊…
    我没找到分层k折交叉验证的代码,所以自己改了一下,基础代码就是之前那个很工整但是没跑过的代码,转载的时候没跑过,但是现在跑过了,果然很漂亮啊,和他的程序比起来,我的这个程序一点也不智能,类别数还要自己写,而且也没有抽象成函数,但是记录一下吧,毕竟这个地方卡了这么久。
    思路就是用上面的k折交叉验证把每个类单独分成k份,然后再合并在一起。Data有两种,一个是特征,一个是标签,两种都进行类似的操作。
    在这里插入图片描述

    下面这个是程序,我的是8分类,在k折交叉验证的基础上改的,原来的代码来源——参考博客6https://blog.csdn.net/u010513327/article/details/80560750?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-3.channel_param&depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-3.channel_param
    人家写得好工整啊,为啥我的就显得很乱呢…
    程序中有一个num_in_class,我的是8分类问题,所以是这样一个东西,这个变量代表了每一类有多少个样本,前提是你的样本数据集要同一个类都放在一起,然后第1类,第2类,第3类这样一直排下去。
    在这里插入图片描述

    
    %需要先载入特征和标签,没有对应的mat文件的话会报错,所以要根据自己的情况改
    clc
    clear all
    tic
    load features1%第一种特征
    load features2%第2种特征
    load Labels 
    features=[features1,features2];%把两个矩阵横向拼起来起来,注意中间是逗号,不是分号
    num_in_class=[713,1343,1165,728,1217,713,1378,795];%说明第一类有713张图片,第2类有1343张图片,以此类推,需要改成自己的数据。
    
    classnums=length(num_in_class);%类别数为classnums,这一步是为了把每一类都取出来,注释掉的是手动的,下面是自动的,功能一样,我觉得我的自动的没有错...但是不敢打包票....
    %     features_lei1=features(1:713,:);%这个步骤不是自动化的,是自己把num_in_class的东西用excel累计求和,features矩阵第一行到第713行的所有数据数据是类别1
    %     features_lei2=features(713+1:2056,:);%features矩阵第713+1行到第2056行的所有数据数据是类别2,2026=713+1343
    %     features_lei3=features(2056+1:3221,:);
    %     features_lei4=features(3221+1:3949,:);
    %     features_lei5=features(3949+1:5166,:);
    %     features_lei6=features(5166+1:5879,:);
    %     features_lei7=features(5879+1:7257,:);
    %     features_lei8=features(7257+1:8052,:);
        
        features_lei1=features(1:num_in_class(1),:);%这个步骤是自动化的,其实是确定上面的没问题后,改出来的
        lei2_end=num_in_class(1)+num_in_class(2);
        features_lei2=features(num_in_class(1)+1:lei2_end,:);
        lei3_end=lei2_end+num_in_class(3);
        features_lei3=features(lei2_end+1:lei3_end,:);
        lei4_end=lei3_end+num_in_class(4);
        features_lei4=features(lei3_end+1:lei4_end,:);
        lei5_end=lei4_end+num_in_class(5);
        features_lei5=features(lei4_end+1:lei5_end,:);
        lei6_end=lei5_end+num_in_class(6);
        features_lei6=features(lei5_end+1:lei6_end,:);
        lei7_end=lei6_end+num_in_class(7);
        features_lei7=features(lei6_end+1:lei7_end,:);
        lei8_end=lei7_end+num_in_class(8);
        features_lei8=features(lei7_end+1:lei8_end,:);
        
    %     Labels_lei1=Labels(1:713,:);%这个步骤不是自动化的,是自己把num_in_class的东西用excel累计求和
    %     Labels_lei2=Labels(713+1:2056,:);
    %     Labels_lei3=Labels(2056+1:3221,:);
    %     Labels_lei4=Labels(3221+1:3949,:);
    %     Labels_lei5=Labels(3949+1:5166,:);
    %     Labels_lei6=Labels(5166+1:5879,:);
    %     Labels_lei7=Labels(5879+1:7257,:);
    %     Labels_lei8=Labels(7257+1:8052,:);
        
        Labels_lei1=Labels(1:num_in_class(1),:);%这个步骤是自动化的,其实是确定上面的没问题后,改出来的
        Labels_lei2=Labels(num_in_class(1)+1:lei2_end,:);
        Labels_lei3=Labels(lei2_end+1:lei3_end,:);
        Labels_lei4=Labels(lei3_end+1:lei4_end,:);
        Labels_lei5=Labels(lei4_end+1:lei5_end,:);
        Labels_lei6=Labels(lei5_end+1:lei6_end,:);
        Labels_lei7=Labels(lei6_end+1:lei7_end,:);
        Labels_lei8=Labels(lei7_end+1:lei8_end,:);
    %% k折交叉验证
    %交叉验证
    k =5;%预将数据分成5份
    sum_accuracy_svm = 0;
    %% 类别1
    [m,n] = size(features_lei1);
    %交叉验证,使用k折交叉验证  Kfold  
    %indices为 m 行一列数据,表示每个训练样本属于k份数据的哪一份
    indices_1 = crossvalind('Kfold',m,k);
    %% 类别2
    [m,n] = size(features_lei2);
    %交叉验证,使用k折交叉验证  Kfold  
    %indices为 m 行一列数据,表示每个训练样本属于k份数据的哪一份
    indices_2 = crossvalind('Kfold',m,k);
    %% 类别3
    [m,n] = size(features_lei3);
    %交叉验证,使用k折交叉验证  Kfold  
    %indices为 m 行一列数据,表示每个训练样本属于k份数据的哪一份
    indices_3 = crossvalind('Kfold',m,k);
    %% 类别4
    [m,n] = size(features_lei4);
    %交叉验证,使用k折交叉验证  Kfold  
    %indices为 m 行一列数据,表示每个训练样本属于k份数据的哪一份
    indices_4 = crossvalind('Kfold',m,k);
    %% 类别5
    [m,n] = size(features_lei5);
    %交叉验证,使用k折交叉验证  Kfold  
    %indices为 m 行一列数据,表示每个训练样本属于k份数据的哪一份
    indices_5 = crossvalind('Kfold',m,k);
    %% 类别6
    [m,n] = size(features_lei6);
    %交叉验证,使用k折交叉验证  Kfold  
    %indices为 m 行一列数据,表示每个训练样本属于k份数据的哪一份
    indices_6 = crossvalind('Kfold',m,k);
    %%  类别7
    [m,n] = size(features_lei7);
    %交叉验证,使用k折交叉验证  Kfold  
    %indices为 m 行一列数据,表示每个训练样本属于k份数据的哪一份
    indices_7 = crossvalind('Kfold',m,k);
    %%  类别8
    [m,n] = size(features_lei8);
    %交叉验证,使用k折交叉验证  Kfold  
    %indices为 m 行一列数据,表示每个训练样本属于k份数据的哪一份
    indices_8 = crossvalind('Kfold',m,k);
    
    for i = 1:k
        % 针对第1类划分训练集和测试集
        test_indic_1 = (indices_1 == i);
        train_indic_1 = ~test_indic_1;
        train_datas_1 = features_lei1(train_indic_1,:);%找出训练数据与标签
        train_labels_1 = Labels_lei1(train_indic_1,:);
        test_datas_1 = features_lei1(test_indic_1,:);%找出测试数据与标签
        test_labels_1 = Labels_lei1(test_indic_1,:);
        
        % 针对第2类划分训练集和测试集
        test_indic_2 = (indices_2 == i);
        train_indic_2 = ~test_indic_2;
        train_datas_2 = features_lei2(train_indic_2,:);%找出训练数据与标签
        train_labels_2 = Labels_lei2(train_indic_2,:);
        test_datas_2 = features_lei2(test_indic_2,:);%找出测试数据与标签
        test_labels_2 = Labels_lei2(test_indic_2,:);
        
         % 针对第3类划分训练集和测试集
        test_indic_3 = (indices_3 == i);
        train_indic_3 = ~test_indic_3;
        train_datas_3 = features_lei3(train_indic_3,:);%找出训练数据与标签
        train_labels_3 = Labels_lei3(train_indic_3,:);
        test_datas_3 = features_lei3(test_indic_3,:);%找出测试数据与标签
        test_labels_3 = Labels_lei3(test_indic_3,:);
        
          % 针对第4类划分训练集和测试集
        test_indic_4 = (indices_4 == i);
        train_indic_4 = ~test_indic_4;
        train_datas_4 = features_lei4(train_indic_4,:);%找出训练数据与标签
        train_labels_4 = Labels_lei4(train_indic_4,:);
        test_datas_4 = features_lei4(test_indic_4,:);%找出测试数据与标签
        test_labels_4 = Labels_lei4(test_indic_4,:);
        
            % 针对第5类划分训练集和测试集
        test_indic_5 = (indices_5 == i);
        train_indic_5 = ~test_indic_5;
        train_datas_5 = features_lei5(train_indic_5,:);%找出训练数据与标签
        train_labels_5 = Labels_lei5(train_indic_5,:);
        test_datas_5 = features_lei5(test_indic_5,:);%找出测试数据与标签
        test_labels_5 = Labels_lei5(test_indic_5,:);
        
            % 针对第6类划分训练集和测试集
        test_indic_6 = (indices_6 == i);
        train_indic_6 = ~test_indic_6;
        train_datas_6 = features_lei6(train_indic_6,:);%找出训练数据与标签
        train_labels_6 = Labels_lei6(train_indic_6,:);
        test_datas_6 = features_lei6(test_indic_6,:);%找出测试数据与标签
        test_labels_6 = Labels_lei6(test_indic_6,:);
        
          % 针对第7类划分训练集和测试集
        test_indic_7 = (indices_7 == i);
        train_indic_7 = ~test_indic_7;
        train_datas_7 = features_lei7(train_indic_7,:);%找出训练数据与标签
        train_labels_7 = Labels_lei7(train_indic_7,:);
        test_datas_7 = features_lei7(test_indic_7,:);%找出测试数据与标签
        test_labels_7 = Labels_lei7(test_indic_7,:);
        
           % 针对第8类划分训练集和测试集
        test_indic_8 = (indices_8 == i);
        train_indic_8 = ~test_indic_8;
        train_datas_8 = features_lei8(train_indic_8,:);%找出训练数据与标签
        train_labels_8 = Labels_lei8(train_indic_8,:);
        test_datas_8 = features_lei8(test_indic_8,:);%找出测试数据与标签
        test_labels_8 = Labels_lei8(test_indic_8,:);
        
        % 合并
        train_datas = [train_datas_1;train_datas_2;train_datas_3;train_datas_4;train_datas_5;train_datas_6;train_datas_7;train_datas_8];
        train_labels =[train_labels_1;train_labels_2;train_labels_3;train_labels_4;train_labels_5;train_labels_6;train_labels_7;train_labels_8];
        
        test_datas = [test_datas_1;test_datas_2;test_datas_3;test_datas_4;test_datas_5;test_datas_6;test_datas_7;test_datas_8];
        test_labels =[test_labels_1;test_labels_2;test_labels_3;test_labels_4;test_labels_5;test_labels_6;test_labels_7;test_labels_8];
    
        
        % 开始svm多分类训练,fitcsvm用于二分类,fitcecoc用于多分类,    
        classifer = fitcecoc(train_datas,train_labels);%训练模型
        predict_label  = predict(classifer, test_datas);%测试
        
        fprintf('第%d折\n',i)
        disp('分类正确率:'); 
        accuracy_svm = length(find(predict_label == test_labels))/length(test_labels)%正确率
        sum_accuracy_svm = sum_accuracy_svm + accuracy_svm;
        end
        mean_accuracy_svm = sum_accuracy_svm / k;
    	disp('平均准确率:');   
    	disp( mean_accuracy_svm);
    toc
    

    再次感谢以上所有的博主们!!!

    更多相关内容
  • Kof97,98.zip

    2019-08-21 10:26:41
    Kof97,98.zipKof97,98.zipKof97,98.zipKof97,98.zipKof97,98.zip
  • n1 N1 openwrt F大固件
  • kof98combo版1

    2015-02-03 23:51:21
    kof98combo版1 最好玩的BT98
  • kof98umol:描述我对KOF98um在线应用程序的体验
  • 在ubunutu14.04 LTS + MAME模拟器下成功运行的kof97.zip。
  • roms kof97.zip neogeo.zip

    2017-08-03 10:56:08
    linux windows 模拟器roms 因附件大小问题只上传kof97.zip
  • 它通常出现在下跌趋势中,由三根连续的K线组成,第⼀天的K线为⼀根实体较⻓的中阴线或⼤阴线,第⼆天的K线是⼀根⼗字线(也可以是⼗字线的变体)或者是实体极⼩的⼩阴线或⼩阳线,第三天是⼀根中阳线或⼤阳线,它的...

    买入型三日K线组合

    一、早晨之星

           早晨之星⼜称为“黎明之星”、“晨星”或“希望之星”,表⽰在太阳升起之前,前途⼀⽚光明,它代表股价将⻅底回升,后市应看好。它通常出现在下跌趋势中,由三根连续的K线组成,第⼀天的K线为⼀根实体较⻓的中阴线或⼤阴线, 第⼆天的K线是⼀根⼗字线(也可以是⼗字线的变体)或者是实体极⼩的⼩阴线或⼩阳线,第三天是⼀根中阳线或⼤阳线,它的收盘价⼀定要超过第⼆根K线的最⾼价并且同时要超过第⼀根K线实体的⼀半以上,如下图所⽰。

           早晨之星K线组合是⼀种典型的底部转势信号。如果早晨之星的组合形态出现在下跌趋势的末期,或者出现在股价暴跌的极⼤跌幅处,那么它的准确性往往很⾼。所以,投资者对出现的每⼀个早晨之星K线组合都应引起⾜够的重视。

           早晨之星的第⼀根K线出现在股价运动⻓期下跌的趋势之中,通常是⼀根顺势下跌的中阴线或者⼤阴线,表⽰在当时的盘⾯上由于恐慌性的抛盘极⼤,股价急剧下跌,⼤事不妙。在随后的第⼆个交易⽇⾥,盘⾯出现⼀根向下跳空的⼗字线,但是由于股价的跌幅⼗分有限,实体部分⽐较短,构成了早晨之星的星体部分,这⼀部分不管是阴还是阳,意义都基本相同。第三个交易⽇出现了⼀根实体部分向上跳空的中阳线或者⼤阳线,预⽰着此时多⽅已经奋⼒反击,收复了⼤部分的失地,后市股价即将转跌为升。如果⼗字线之后出现跳空缺⼝,则股价反转向上的⼒度更⼤。

           在使⽤早晨之星的K线组合时要注意以下的要点:

    1. 在运⽤早晨之星组合的时候,应当特别注意它所对应的成交量,形成早晨之星组合的第三根K线出现时,成交量应当相应地放⼤,如果创下近期以来的天量,那么,它的可靠性就更⾼。
    2. 利⽤早晨之星作为买⼈信号,其⼤前提是股价已有⼀定的跌幅,否则可能会出现判断失误。
    3. 早晨之星所形成的低点⼀般是股价的阶段性低点,⼀般情况下短期内将难以再探到此价位。
    4. 在出现早晨之星后,投资者应该逢低分批介⼊,不要犹豫不决,以免以后被轧空。

    二、红三兵

           红三兵一般出现在下跌趋势中,由三根连续上涨的实体较小的阳线组成,这三根阳线的收盘价一个比一个高,实体一个比一长,如下图所示。

           红三兵中每一天的收盘价都在向上攀升并超过前一天的收盘价,股价稳健地逐步向上,是一种极为常见的而且准确性很高的上升形态。当股价运动经过长时间的下跌之后,一旦在底部企稳,随后又出现红三兵的K线组合,说明此时市场上多方的能量正在不断地聚集,后市股价极有可能出现大幅度上升,从此走出一波行情来。

           在使用红三兵的K线组合时要注意以下的要点:

    1. 红三兵的三根K线必须是实体部分比较小的阳线组成,每一根小阳线的收盘价都高于前一一天的收盘价,每一根小阳线的开盘价都位于前一-根小阳线的实体之内,每一天的收盘价都接近当天交易行情的最高点,整个走势呈现为稳健的上升形态。
    2. 红三兵K线组合一般出现在股价长期下跌之后的底部,或者出现在股价启动上升的初期,上升的幅度不大,每一天的振幅一般不超过2%,上升的势头迟缓而稳健。对于投资者来说,这时候正是最好的建仓机会。
    3. 红三兵K线组合的成交量应该是稳步地逐步放大,如果成交量不但没有逐步放大,反而出现萎缩的情形,就应当引起足够的重视。投资者对于这样的图形应当区别对待,千万不可把它当做红三兵来看。
    4. 如果三根阳线实体部分逐渐缩短,一根比一根短,表明此时多方的动能严重的不足,上升势头开始逐步减弱,后市的股价走势很难乐观。如果第三根K线还带有比较长的上影线,则说明此时空方的力量十分强大,股价在短期内难以上攻,这样的形态不能称为红三兵。

    三、多方炮

           多方炮又称为“两阳夹一阴”,一般出现在股价上升的途中。多方炮由三根K线组成,第一天股价,上升收阳线,第二天股价下跌收阴线,第三天股价再度上升收阳线,如图7-5所示。

           多方炮中三根K线总体呈上升趋势,表示了多方力量的强势,股价短期可看涨。这种K线组合属于主力的震仓行为,由于其出现的位置往往是下跌的底部或上升的中途,所以容易使散户抛出手中的筹码,从而让主力顺利完成拉升过程前的洗盘。由于第一天的走势容易使人获利了结,第二天出现阴线,更会诱使散户抛出手中筹码,第三天又容易使已抛出筹码的人十分懊悔,不愿意买回,这些现象都有利于主力的洗盘。

           在使用多方炮的K线组合时要注意以下的要点:

    1. 多方炮的K线组合中阴线的实体越长,上涨的力量越强。
    2. 在一轮明显下跌行情之后,股价有一个低位止跌横盘的过程,然后再出现的多方炮适合中长线投资者逢低买人,否则以短线进出为佳。
    3. 多方炮K线组合中,第二天出现的阴线,成交量必须是萎缩的,第三天阳线的收盘价要高于第一天的收盘价, 并且要比第一天放量, 但不可以是巨量。
    4. 一旦多方炮K线组合明显确认,不管是空仓者还是刚被震出仓者,均可立即半仓介人,另外半仓可以在该股的价格创出新高后再次介人。

    四、平底镊子线

           平底镊子线通常在股价下跌的底部区域出现,其K线组合的形状像把倒过来的镊子钳,所以称为“平底镊子线”。它由一阴一阳两根实体较长并长度大致相当的K线和一根实体较短的K线组成,较短的K线可以是阳线也可以是阴线,它被夹在两根长的K线的中间,三根K线实体的最高价(或最低价)几乎在一-个水平位置,如下图所示。

           平底镊子线出现在股价大幅下跌后的底部区域时,首先收出一根惯性下跌的大阴线或中阴线,隔天一根实体很小的K线止跌,股价不再创新低,与前一根大阴线组成平底的形态,股价有短期止跌企稳的迹象,第三根K线收出一根中阳线或大阳线,代表股价下跌趋势已经扭转,并且第三根阳线实体深人第一根阴线实体二分之一以上,行情转强的可能将大大增强。投资者在跌势中看到平底镊子线就不能再盲目看空,等待股价企稳时,可适量买人做多。

           在使用平底镊子线的K线组合时要注意以下的要点:

    1. 平底镊子线的K线组合中间的小实体的阴线或阳线的实体越小越好,第一天和第三天的阴线、阳线的实体越大越好,这样的平底镊子线后市上涨的幅度越高。
    2. 平底镊子线K线组合中,第二天出现的成交量必须是萎缩的,第三天大阳线的收盘价要明显高于第-二天的收盘价。
    3. 在实际走势中,完全标准的平底镊子线K线组合出现的不是太多,所以,对三根K线的实体长度和位置的要求可以不必太高,只要是相似或近似即可。

    五、并排阳线

           并排阳线通常在股价上升的中途出现,它由三根K线组成,第一根是阳线,第二根是跳空高开的阳线,第二根线和第三根线实体大小相差不大的并排的阳线。如下图所示。

           并排阳线属于常见的上涨中继形态,表示股价仍然会继续上扬,其第二根K线的跳空缺口往往成为今后一段时间内股价运行的一个支撑区域。投资者在股价从底部开始上升的初期发现出现这种并排阳线K线组合后,如果第二天股价继续向上时,就可以考虑买入股票,等待大行情的来临。

           在使用并排阳线的K线组合时要注意以下的要点:

    1. 并排阳线的K线组合中,第一根阳线的成交量要大于后面的两根成交量,也就是说后面的两根K线要是缩量的。
    2. 有时候也会出现失败的并排阳线,如果此后,股价下跌封闭了跳空缺口,应先止损退出,避免更大的损失。

    六、上升两颗星

           上升两颗星通常在股价上升的中途出现,它由三根K线组成,第一根是大阳线,第二根是跳空高开的小阴、小阳线或者是十字线,第三根是和第二根并排或上下相差不大的小阴线、小阳线或者是十字线。如下图所示。

           上升两颗星属于常见的上涨中继形态,一般出现在大行情的初期。当股价从底部刚刚涨起来不久,出现了一根较长的阳线打破了原来的缓慢上升趋势,然后接连出现两颗星星,意味着多空双方的力量在新的条件下取得了平衡,多方的胜利被巩固了,投资者对股价的上涨已经取得共识,此后往往会出现股价大幅度攀升的走势。

           在使用上升两颗星的K线组合时要注意以下的要点:

    1. 上升两颗星的K线组合中,两个小星星的位置一定要高于阳线实体,这是判断强势最重要的一点。
    2. 上升两颗星的K线组合一般出现在大行情的初期,至少不能是强势的末期,否则有主力骗线的嫌疑。
    3. 形成小星星的成交量不能比大阳线的成交量有明显的萎缩,否则说明投资者买人的热情降低,后市股票就不会再大幅上升。
    4. 后市股价如果配合成交量的放大再度上涨,就是投资者可信的买进信号。

    七、低位三根大阴线

           低位三根大阴线是指出现在股价经过一段较长时间的下跌后,连续三个交易日出现三根实体较大的阴线,这三根阴线呈现逐级下跌的态势。如下图所示。

           低位三根大阴线的K线组合是股价经过了一段长时间的下跌,做空动能已得到了一定程度的释放,此时突然拉出大阴线,而且连续三天天天如此,这绝不是散户能做到的,很明显是主力所为,故意制造跳水的恐慌,目的是为了打压吸筹。股价经过这最后一跌后,往往会快速拉升,而一旦回升,涨幅也是惊人的。因此,低位三根大阴线是明确的见底信号,随之而来的往往是大幅反弹或中线上涨行情。

           在使用低位三根大阴线的K线组合时要注意以下的要点:

    1. 在低位三根大阴线的K线组合出现之前,股价跌得越深,三条阴线的实体越长,成交量放得越大,见底信号越强烈。
    2. 低位三根大阴线中阴线实体大致相同或者实体逐渐变长都是可以的。
    3. 低位三根大阴线出现后的第二天股价往往会低开高走,如果能收出阳线并盘中突破第三根阴线开盘价时,投资者就可以适量买入。

    八、底部三鸦

           底部三鸦出现在股价经过一-段较长时间和较大幅度下跌后的底部区域,它由倒“山”字形的三根阴线组成,实体的长短应大体相当。其中,第二根K线一般平开或低开;第三根K线一般是向上跳空高开,收盘价收在第二根K线的开盘价之上,如下图所示。

           底部三鸦K线组合是典型的见底信号,预示着底部近在眼前,投资者可以考虑做多。该形态中的第二根K线最好是低开并留有较长的下影线,其股价见底的有效性更高,第三根K线高开的幅度最好是与前两条阴线实体的长度相当,但不能太小。

           在使用底部三鸦K线组合时要注意以下的要点:

    1. 底部三鸦K线组合必须处于低位,如果下跌的幅度超过30%,就可视为处在低位,因为即使不是股价的底部,但一般绝大多数的股票都会出现一次像样的反弹。
    2. 底部三鸦K线组合完全符合标准形态的是不多见的,所以只要是相似或近似的即可。
    3. 底部三鸦K线组合中的第二根阴线,如果带有较长的下影线时,则可以大胆买入。因为长下影线本身就是一个可信的见底信号,这两种见底信号一起出现,能更加使人放心。
    4. 底部三鸦的见底信号虽然非常明显,但为了资金的安全,投资者可以考虑底部三鸦出现后的下一个交易日收阳线时再买入。

    九、上升跳空三法

           上升跳空三法出现在股价的上升行情中,它由三根K线组成,第一根是阳线,第二根是跳空高开的阳线,第三根是实体长短大体相当的阴线。其中,第三根低开低走的阴线补去或者没有补去前一天的缺口都可以,如下图所示。

           上升跳空三法K线组合是典型的多头市场中的回档形态,它反映了在上升行情中,多方发力使股价高开高走,形成跳空阳线,随后空头奋力反扑,在前一根阳线的实体内低开后一路打压,股价不断地走低。上升跳空三法K线组合一般是主力震仓行为,是股价将要加速上升的前兆。其中的阴线只不过是多头在以退为进,为下一步的继续拉升做准备,投资者不需要惊慌失措而抛出手中的股票,以免错失后市的一波持续上升行情。

           在使用上升跳空三法K线组合时要注意以下的要点:

    1. 上升跳空三法K线组合中留下的缺口,如果在三日内不被封闭的话,更加具有标志性的意义,后市上涨的概率和幅度较缺口被封闭的形态要大得多。
    2. 上升跳空三法K线组合中阴线的成交量要比阳线的成交量有所萎缩,但不能菱缩得太多。
    3. 上升跳空三法K线组合出现后的下一个交易日如果能够高开高走,放量收出阳线,就是投资者买人的最佳时机。

    展开全文
  • Python绘制K线图之可视化神器pyecharts

    千次阅读 热门讨论 2021-02-20 17:29:38
    目录 K线图 概念 用处 K线图系列模板 最简单的K线图绘制 ...K线图鼠标缩放 ...如果把每日的K线图放在一张纸上,就能得到日K线图,同样也可画出周K线图、月K线图。研究金融的小伙伴肯定比较熟悉这个,..

    目录

    K线图

    概念

    用处

    K线图系列模板

    最简单的K线图绘制

    K线图鼠标缩放

    有刻度标签的K线图

    K线图鼠标无缩放

    大量数据K线图绘制(X轴鼠标可移动)

    每文一语


    K线图

     

     

    概念

    股市及期货市bai场中的K线图的du画法包含四个zhi数据,即开盘dao价、最高价、最低价zhuan、收盘价,所有的shuk线都是围绕这四个数据展开,反映大势的状况和价格信息。如果把每日的K线图放在一张纸上,就能得到日K线图,同样也可画出周K线图、月K线图。研究金融的小伙伴肯定比较熟悉这个,那么我们看起来比较复杂的K线图,又是这样画出来的,本文我们将一起探索K线图的魅力与神奇之处吧!

    K线图

     

    用处

    K线图用处于股票分析,作为数据分析,以后的进入大数据肯定是一个趋势和热潮,K线图的专业知识,说实话肯定比较的复杂,这里就不做过多的展示了,有兴趣的小伙伴去问问百度小哥哥哟!

    K线图系列模板

    最简单的K线图绘制

    第一个K线图绘制,来看看需要哪些参数吧,数据集都有四个必要的哟!

    import pyecharts.options as opts
    from pyecharts.charts import Candlestick
    
    x_data = ["2017-10-24", "2017-10-25", "2017-10-26", "2017-10-27"]
    y_data = [[20, 30, 10, 35], [40, 35, 30, 55], [33, 38, 33, 40], [40, 40, 32, 42]]
    
    (
        Candlestick(init_opts=opts.InitOpts(width="1200px", height="600px"))
        .add_xaxis(xaxis_data=x_data)
        .add_yaxis(series_name="", y_axis=y_data)
        .set_series_opts()
        .set_global_opts(
            yaxis_opts=opts.AxisOpts(
                splitline_opts=opts.SplitLineOpts(
                    is_show=True, linestyle_opts=opts.LineStyleOpts(width=1)
                )
            )
        )
        .render("简单K线图.html")
    )

    K线图鼠标缩放

    大量的数据集的时候,我们不可以全部同时展示,我们可以缩放来进行定向展示。

    from pyecharts import options as opts
    from pyecharts.charts import Kline
    
    data = [
        [2320.26, 2320.26, 2287.3, 2362.94],
        [2300, 2291.3, 2288.26, 2308.38],
        [2295.35, 2346.5, 2295.35, 2345.92],
        [2347.22, 2358.98, 2337.35, 2363.8],
        [2360.75, 2382.48, 2347.89, 2383.76],
        [2383.43, 2385.42, 2371.23, 2391.82],
        [2377.41, 2419.02, 2369.57, 2421.15],
        [2425.92, 2428.15, 2417.58, 2440.38],
        [2411, 2433.13, 2403.3, 2437.42],
        [2432.68, 2334.48, 2427.7, 2441.73],
        [2430.69, 2418.53, 2394.22, 2433.89],
        [2416.62, 2432.4, 2414.4, 2443.03],
        [2441.91, 2421.56, 2418.43, 2444.8],
        [2420.26, 2382.91, 2373.53, 2427.07],
        [2383.49, 2397.18, 2370.61, 2397.94],
        [2378.82, 2325.95, 2309.17, 2378.82],
        [2322.94, 2314.16, 2308.76, 2330.88],
        [2320.62, 2325.82, 2315.01, 2338.78],
        [2313.74, 2293.34, 2289.89, 2340.71],
        [2297.77, 2313.22, 2292.03, 2324.63],
        [2322.32, 2365.59, 2308.92, 2366.16],
        [2364.54, 2359.51, 2330.86, 2369.65],
        [2332.08, 2273.4, 2259.25, 2333.54],
        [2274.81, 2326.31, 2270.1, 2328.14],
        [2333.61, 2347.18, 2321.6, 2351.44],
        [2340.44, 2324.29, 2304.27, 2352.02],
        [2326.42, 2318.61, 2314.59, 2333.67],
        [2314.68, 2310.59, 2296.58, 2320.96],
        [2309.16, 2286.6, 2264.83, 2333.29],
        [2282.17, 2263.97, 2253.25, 2286.33],
        [2255.77, 2270.28, 2253.31, 2276.22],
    ]
    
    
    c = (
        Kline()
        .add_xaxis(["2017/7/{}".format(i + 1) for i in range(31)])
        .add_yaxis(
            "kline",
            data,
            itemstyle_opts=opts.ItemStyleOpts(
                color="#ec0000",
                color0="#00da3c",
                border_color="#8A0000",
                border_color0="#008F28",
            ),
        )
        .set_global_opts(
            xaxis_opts=opts.AxisOpts(is_scale=True),
            yaxis_opts=opts.AxisOpts(
                is_scale=True,
                splitarea_opts=opts.SplitAreaOpts(
                    is_show=True, areastyle_opts=opts.AreaStyleOpts(opacity=1)
                ),
            ),
            datazoom_opts=[opts.DataZoomOpts(type_="inside")],
            title_opts=opts.TitleOpts(title="Kline-ItemStyle"),
        )
        .render("K线图鼠标缩放.html")
    )

    有刻度标签的K线图

    我们知道一个数据节点,但是我们不能在图像里面一眼看出有哪些数据量超出了它的范围,刻度标签就可以派上用场了。

    from pyecharts import options as opts
    from pyecharts.charts import Kline
    
    data = [
        [2320.26, 2320.26, 2287.3, 2362.94],
        [2300, 2291.3, 2288.26, 2308.38],
        [2295.35, 2346.5, 2295.35, 2345.92],
        [2347.22, 2358.98, 2337.35, 2363.8],
        [2360.75, 2382.48, 2347.89, 2383.76],
        [2383.43, 2385.42, 2371.23, 2391.82],
        [2377.41, 2419.02, 2369.57, 2421.15],
        [2425.92, 2428.15, 2417.58, 2440.38],
        [2411, 2433.13, 2403.3, 2437.42],
        [2432.68, 2334.48, 2427.7, 2441.73],
        [2430.69, 2418.53, 2394.22, 2433.89],
        [2416.62, 2432.4, 2414.4, 2443.03],
        [2441.91, 2421.56, 2418.43, 2444.8],
        [2420.26, 2382.91, 2373.53, 2427.07],
        [2383.49, 2397.18, 2370.61, 2397.94],
        [2378.82, 2325.95, 2309.17, 2378.82],
        [2322.94, 2314.16, 2308.76, 2330.88],
        [2320.62, 2325.82, 2315.01, 2338.78],
        [2313.74, 2293.34, 2289.89, 2340.71],
        [2297.77, 2313.22, 2292.03, 2324.63],
        [2322.32, 2365.59, 2308.92, 2366.16],
        [2364.54, 2359.51, 2330.86, 2369.65],
        [2332.08, 2273.4, 2259.25, 2333.54],
        [2274.81, 2326.31, 2270.1, 2328.14],
        [2333.61, 2347.18, 2321.6, 2351.44],
        [2340.44, 2324.29, 2304.27, 2352.02],
        [2326.42, 2318.61, 2314.59, 2333.67],
        [2314.68, 2310.59, 2296.58, 2320.96],
        [2309.16, 2286.6, 2264.83, 2333.29],
        [2282.17, 2263.97, 2253.25, 2286.33],
        [2255.77, 2270.28, 2253.31, 2276.22],
    ]
    
    c = (
        Kline()
        .add_xaxis(["2017/7/{}".format(i + 1) for i in range(31)])
        .add_yaxis(
            "kline",
            data,
            markline_opts=opts.MarkLineOpts(
                data=[opts.MarkLineItem(type_="max", value_dim="close")]
            ),
        )
        .set_global_opts(
            xaxis_opts=opts.AxisOpts(is_scale=True),
            yaxis_opts=opts.AxisOpts(
                is_scale=True,
                splitarea_opts=opts.SplitAreaOpts(
                    is_show=True, areastyle_opts=opts.AreaStyleOpts(opacity=1)
                ),
            ),
            title_opts=opts.TitleOpts(title="标题"),
        )
        .render("刻度标签.html")
    )

    K线图鼠标无缩放

    前面的是一个有缩放功能的图例代码,但是有时候我们不想要那么修改一下参数就可以了。

    from pyecharts import options as opts
    from pyecharts.charts import Kline
    
    data = [
        [2320.26, 2320.26, 2287.3, 2362.94],
        [2300, 2291.3, 2288.26, 2308.38],
        [2295.35, 2346.5, 2295.35, 2345.92],
        [2347.22, 2358.98, 2337.35, 2363.8],
        [2360.75, 2382.48, 2347.89, 2383.76],
        [2383.43, 2385.42, 2371.23, 2391.82],
        [2377.41, 2419.02, 2369.57, 2421.15],
        [2425.92, 2428.15, 2417.58, 2440.38],
        [2411, 2433.13, 2403.3, 2437.42],
        [2432.68, 2334.48, 2427.7, 2441.73],
        [2430.69, 2418.53, 2394.22, 2433.89],
        [2416.62, 2432.4, 2414.4, 2443.03],
        [2441.91, 2421.56, 2418.43, 2444.8],
        [2420.26, 2382.91, 2373.53, 2427.07],
        [2383.49, 2397.18, 2370.61, 2397.94],
        [2378.82, 2325.95, 2309.17, 2378.82],
        [2322.94, 2314.16, 2308.76, 2330.88],
        [2320.62, 2325.82, 2315.01, 2338.78],
        [2313.74, 2293.34, 2289.89, 2340.71],
        [2297.77, 2313.22, 2292.03, 2324.63],
        [2322.32, 2365.59, 2308.92, 2366.16],
        [2364.54, 2359.51, 2330.86, 2369.65],
        [2332.08, 2273.4, 2259.25, 2333.54],
        [2274.81, 2326.31, 2270.1, 2328.14],
        [2333.61, 2347.18, 2321.6, 2351.44],
        [2340.44, 2324.29, 2304.27, 2352.02],
        [2326.42, 2318.61, 2314.59, 2333.67],
        [2314.68, 2310.59, 2296.58, 2320.96],
        [2309.16, 2286.6, 2264.83, 2333.29],
        [2282.17, 2263.97, 2253.25, 2286.33],
        [2255.77, 2270.28, 2253.31, 2276.22],
    ]
    
    
    c = (
        Kline()
        .add_xaxis(["2017/7/{}".format(i + 1) for i in range(31)])
        .add_yaxis("kline", data)
        .set_global_opts(
            yaxis_opts=opts.AxisOpts(is_scale=True),
            xaxis_opts=opts.AxisOpts(is_scale=True),
            title_opts=opts.TitleOpts(title="Kline-基本示例"),
        )
        .render("鼠标无缩放.html")
    )

    大量数据K线图绘制(X轴鼠标可移动)

    虽然有时候缩放可以容纳较多的数据量,但是还是不够智能,可以利用这个

    from pyecharts import options as opts
    from pyecharts.charts import Kline
    
    data = [
        [2320.26, 2320.26, 2287.3, 2362.94],
        [2300, 2291.3, 2288.26, 2308.38],
        [2295.35, 2346.5, 2295.35, 2345.92],
        [2347.22, 2358.98, 2337.35, 2363.8],
        [2360.75, 2382.48, 2347.89, 2383.76],
        [2383.43, 2385.42, 2371.23, 2391.82],
        [2377.41, 2419.02, 2369.57, 2421.15],
        [2425.92, 2428.15, 2417.58, 2440.38],
        [2411, 2433.13, 2403.3, 2437.42],
        [2432.68, 2334.48, 2427.7, 2441.73],
        [2430.69, 2418.53, 2394.22, 2433.89],
        [2416.62, 2432.4, 2414.4, 2443.03],
        [2441.91, 2421.56, 2418.43, 2444.8],
        [2420.26, 2382.91, 2373.53, 2427.07],
        [2383.49, 2397.18, 2370.61, 2397.94],
        [2378.82, 2325.95, 2309.17, 2378.82],
        [2322.94, 2314.16, 2308.76, 2330.88],
        [2320.62, 2325.82, 2315.01, 2338.78],
        [2313.74, 2293.34, 2289.89, 2340.71],
        [2297.77, 2313.22, 2292.03, 2324.63],
        [2322.32, 2365.59, 2308.92, 2366.16],
        [2364.54, 2359.51, 2330.86, 2369.65],
        [2332.08, 2273.4, 2259.25, 2333.54],
        [2274.81, 2326.31, 2270.1, 2328.14],
        [2333.61, 2347.18, 2321.6, 2351.44],
        [2340.44, 2324.29, 2304.27, 2352.02],
        [2326.42, 2318.61, 2314.59, 2333.67],
        [2314.68, 2310.59, 2296.58, 2320.96],
        [2309.16, 2286.6, 2264.83, 2333.29],
        [2282.17, 2263.97, 2253.25, 2286.33],
        [2255.77, 2270.28, 2253.31, 2276.22],
    ]
    
    c = (
        Kline()
        .add_xaxis(["2017/7/{}".format(i + 1) for i in range(31)])
        .add_yaxis("kline", data)
        .set_global_opts(
            xaxis_opts=opts.AxisOpts(is_scale=True),
            yaxis_opts=opts.AxisOpts(
                is_scale=True,
                splitarea_opts=opts.SplitAreaOpts(
                    is_show=True, areastyle_opts=opts.AreaStyleOpts(opacity=1)
                ),
            ),
            datazoom_opts=[opts.DataZoomOpts(pos_bottom="-2%")],
            title_opts=opts.TitleOpts(title="Kline-DataZoom-slider-Position"),
        )
        .render("大量数据展示.html")
    )

     

     

    K线图的绘制需要有专业的基本知识哟,不然可能有点恼火了。

    每文一语

    运动是治愈一切最好的良药

    展开全文
  • 上证指数季度k线图400x296 - 90KB - JPEG戴若顾比:上证指数寻找新的支撑_股市及时雨550x341 - 25KB - JPEG上证综指周K线图300x232 - 16KB - JPEG上证指数季度K线图_焦点透视332x250 - 67KB - JPEG上证指数日K线图550...

    上证指数季度k线图

    400x296 - 90KB - JPEG

    戴若顾比:上证指数寻找新的支撑_股市及时雨

    550x341 - 25KB - JPEG

    上证综指周K线图

    300x232 - 16KB - JPEG

    上证指数季度K线图_焦点透视

    332x250 - 67KB - JPEG

    上证指数日K线图

    550x330 - 56KB - JPEG

    (上证指数月k线图)

    550x251 - 63KB - PNG

    上证指数日K线图

    450x360 - 40KB - JPEG

    图2 上证指数日K线

    554x208 - 16KB - JPEG

    图4为上证综指2001-2008年月k线图

    445x230 - 26KB - JPEG

    股市下半场 基本面说了算

    499x270 - 24KB - JPEG

    刚刚:周四A股走势已定,一旦出现此信号或将暴

    873x682 - 820KB - PNG

    春节红包行情怎么玩?

    550x330 - 33KB - JPEG

    上证综合指数月K线图

    400x216 - 15KB - JPEG

    沪深A股连续九周下跌 春节前大盘有望阶段性反

    410x255 - 20KB - JPEG

    上证指数日K线图

    360x270 - 20KB - JPEG

    前一篇:道琼斯指数走势图以及恒指、台湾、日本、A股PE历史图 后一篇:读书 我们从二十多年的指数趋势图

    在线互动式文档分享平台,在这里,您可以和千万网友分享自己手中的文档,全文阅读其他用户的文档,同时,也

    上证指数历史走势图:日 K线图 上证指数历史走势图:周 K线图 上证指数历史走势图:月 K线图 推荐教程:新生300

    打开通达信,切换到个股K线图界面,按Insert,选择你要看的指数或个股,确认就可以了。如果你嫌指标太多,

    上证指数历史月K线图。大盘特喜欢做三角形,95年和10-11的形态相似最终选择下破然后上行的走势,97-98年在

    如果自大盘的第一根K线起,每次为了帮助江恩爱好者能更清晰直观的研究大盘走势,笔者以上证指数日K线走势图

    按方向键↓ 然后可按←移动

    我们从上证指数的年K线图可以看到历史上年K线的阴线最多只有2个。2个 阴线后边起码跟随1个阳线。所以讲2012

    前一篇:[转载]道琼斯指数走势图以及恒指、台湾、日本、A股PE历史图 后一篇:[转载]与张化桥商榷:股市市盈

    展开全文
  • vue中使用Echarts绘制K线图

    千次阅读 2019-12-28 23:41:10
    下面是一个简单的K线图绘制,数据是伪造的,虽然不多,但是能够实现大致的K线图效果。 二、需求分析 对于使用Echarts绘制K线图,首先我们需要下载Echarts,可以通过 npm install echarts --save命令下载。在这个文件...
  • 文章目录 1.实验目的 2.导入数据和必要模块 3.比较不同模型预测准确率 3.1.逻辑回归 3.2.决策树 3.3.支持向量机 3.4.随机森林 1.实验目的 使用sklearn库中的鸢尾花数据集,并针对以下模型使用cross_val_...达到98%。
  • pyecharts绘制K线

    万次阅读 热门讨论 2018-12-23 20:07:15
    vnpy原生的回测结果没有绘制k线,所以也就没有指标的可视化和开仓平仓的可视化,只有随后交易结果的可视化。笔者自己其实有点点不习惯,没有看到策略的可视化回测结果,有点点不开心,所以打算自己一下。首先...
  • K近邻算法的Python实现

    千次阅读 2019-01-07 17:26:35
    作为『十大机器学习算法』之一的K-近邻(K-Nearest Neighbors)算法是思想简单、易于理解的一种分类和回归算法。今天,我们来一起学习KNN算法的基本原理,并用Python实现该算法,最后,通过一个案例阐述其应用价值。...
  • kof98jar 手机jar 软件

    2009-07-04 16:04:36
    亲测很不错,在网上费了好大功夫,终于找到。 喜欢玩的一定值得一下。
  • def k_largest_index_argpartition_v1(a, k):idx = np.argpartition(-a.ravel(),k)[:k]return np.column_stack(np.unravel_index(idx, a.shape))def k_largest_index_argpartition_v2(a, k):idx = np.argpartition(a...
  • 什么是 K-Means ? 学习 K-Means 之前,大家首先需要对聚类有一个概念. 我们都知道,机器学习可以划分为 3 类:监督学习、无监督学习、强化学习. 无监督学习指的是数据没有标签,也就是说我们只有数据的特征,但并不知道...
  • //每个k线图间间距 数量 宽度 所有k线图的最大值/最小值 var totalYNomber; //y轴上的标识数量 var showArr; //显示出来的数据部分(因为可以选择范围,所以需要这个数据) //范围选择属性 var dragBarX,...
  • 以粗品人参皂苷C-K为原料,进行脱色、脱脂、硅胶柱层析法分离纯化,得到纯度较高的人参皂苷C-K。结果表明,粗品人参皂苷C-K...样品结晶后收率为90%,高效液相色谱检测结晶产物中稀有人参皂苷C-K的质量分数为98. 09%。
  • 土壤K~+的互交换均为吸热反应,△H°分别为0.11~33.98KJ/mol和40.39~65.82KJ/mol。土壤K~+,NH的互交换,包含了物理化学吸附的机理。温度升高,可使交换反应的△G°由正值转为负值,促进了交换反应的进行。交换反应为...
  • 使用k-means聚类anchors

    千次阅读 多人点赞 2021-08-12 16:10:48
    在之前讲yolo理论基础知识时有提到过,从yolov2开始使用的anchors都是通过聚类得到的。...今天补下之前没有细讲的聚类anchors相关...文章目录K-means理论简介K-mean在anchors中的应用yolov5中聚类anchors代码讲解聚类anch
  • CP2K入门教程分享

    万次阅读 2019-06-07 16:45:00
    CP2K入门教程-1:CP2K的安装 CP2K的安装 1.1 直接使用二进制版本 CP2K的安装有很多种方法。最简单的方法是直接使用预编译版本的二进制可执行文件。 用户可以选择从发行版所带的软件源安装预编译版本的...
  • 摘要时过境迁现在Intel i7 8700K问世了,最一代的Graphics UHD620被很多的笔记本采用,如:联想 小新潮7000、宏碁 蜂鸟Swift3、戴尔 灵越7570-R2645S、华硕 灵耀360、惠普 薄锐ENVY 13-ad103TX等等。有些童鞋和发烧...
  • 网站被K你慌了吗?这时你该怎么办呢?其实这都是老生常谈了,网上很多相关内容,但是还是忍不住搜集整理了一下网上的内容并... 我们SEO的人,经常听到圈内SEO人员的网站被搜索引擎K了,到处找所谓的SEO大神求助,...
  • k-means++代码示例

    千次阅读 2019-11-01 00:43:10
    利用K-Means++对会员用户进行分类,例如工资高又舍得花钱的人,工资高但不舍得花钱的人 代码 # K-Means Clustering # Importing the libraries import numpy as np import matplotlib.pyplot as plt im...
  • 快速排序与查找第K大的数

    千次阅读 2019-09-11 23:59:32
    快速排序与查找第K大的数 今天种树的任务是复习一下快排,顺便实现了一下查找第K大的数的算法。 快速排序 非常常见也非常经典的算法,随便给你们找一篇。 https://www.cnblogs.com/ayqy/p/3862938.html 快速排序C++...
  • kof98 rom下载

    2011-11-02 22:01:05
    http://www.97kof.net/soft/807.htm 转载于:https://blog.51cto.com/kitten/704343
  • 本文介绍基于k-means和KNN的语音性别识别,把k-means聚类应用到语音性别识别问题中去,并同时使用KNN识别算法。读者可以先看我的其他两篇博客:《kaggl基于朴素贝叶斯分类器的语音性别识别》和《算法|k-means聚类》...
  • 数据集来源于某互联网公司,特征值标签已脱敏处理。数据集尺寸为111行×5列,第一行为标题行,其余110行为实例。 第一列:城市名,将作为index不参与模型计算; 第二列:特征值a,以数值表现的分类变量,1代表...
  • Top K算法

    千次阅读 2017-03-25 20:27:04
    1、查找最大的k个元素 1、排序,快速排序。...用选择或交换排序,即遍历n个数,先把最先遍历到得k个数存入大小为k的数组之中,对这k个数,利用选择或交换排序,找到k个数中的最小数kmin(kmin设为k

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 263,095
精华内容 105,238
热门标签
关键字:

做九八k