`
热带翎羽
  • 浏览: 64703 次
  • 性别: Icon_minigender_1
  • 来自: 福州
社区版块
存档分类
最新评论

使用Weka对股票数据进行分析

 
阅读更多
测试目标:
1) 对数据挖掘的步骤进行实践:生成、分析、验证
2) 熟悉对WEKA的使用

测试步骤:
1) 通达信导出股票复权数据
2) 通过程序生成: *.arff,包括:训练集和测试集合
3) 对结果进行评估

生成ARFF的代码如下:

File arffTrainingFile=new File("D:/ARFF/${name}Training.arff")

        arffTrainingFile.delete()
        arffTrainingFile.createNewFile()

        arffTrainingFile.withWriter {Writer writer->
            writer.println("% @author bruce.lin.chn")
            writer.println("% @date ${new Date().toLocaleString()}")
            writer.println("@relation \"${name}决策树分析训练\"")

            List keyList=metrics[0].keySet().toList().sort()

            keyList.each{String key->
                if (key !="date")
                {
                    writer.println("@attribute ${key} numeric")
                }
            }

            writer.println("@attribute class { \"Yes\", \"No\"}")
            writer.println("@data")

            for(int i=-360; i<-90;i++)
            {
                Map metric=metrics[i]
                keyList.each{ String key->
                    if (key !="date")
                    {
                        print "${metric[key]}, "
                        writer.print "${metric[key]}, "
                    }
                }

                println "${IsSuccessfulInvestment(i)}"
                if (IsSuccessfulInvestment(i)>0)
                    writer.println '"Yes"'
                else
                    writer.println '"No"'
            }
        }

        File arffTestingFile=new File("D:/ARFF/${name}Testing.arff")

        arffTestingFile.delete()
        arffTestingFile.createNewFile()

        arffTestingFile.withWriter {Writer writer->
            writer.println("% @author bruce.lin.chn")
            writer.println("% @date ${new Date().toLocaleString()}")
            writer.println("@relation \"${name}决策树分析测试\"")

            List keyList=metrics[0].keySet().toList().sort()

            keyList.each{String key->
                if (key !="date")
                {
                    writer.println("@attribute ${key} numeric")
                }
            }

            writer.println("@attribute class { \"Yes\", \"No\"}")
            writer.println("@data")

            for(int i=-90; i<-1;i++)
            {
                Map metric=metrics[i]
                keyList.each{ String key->
                    if (key !="date")
                    {
                        print "${metric[key]}, "
                        writer.print "${metric[key]}, "
                    }
                }

                println "${IsSuccessfulInvestment(i)}"
                if (IsSuccessfulInvestment(i)>0)
                    writer.println '"Yes"'
                else
                    writer.println '"No"'
            }
        }


生成的文件如下:

% @author bruce.lin.chn
% @date 2013-2-4 11:00:55
@relation "SZ002250决策树分析训练"
@attribute amplitude05 numeric
@attribute amplitude10 numeric
@attribute amplitude30 numeric
@attribute amplitude90 numeric
@attribute averageAmplitude05 numeric
@attribute averageAmplitude10 numeric
@attribute averageAmplitude30 numeric
@attribute averageAmplitude90 numeric
@attribute layoutBullAlignment numeric
@attribute layoutUpUpDown numeric
@attribute ma05 numeric
@attribute ma10 numeric
@attribute ma30 numeric
@attribute ma90 numeric
@attribute class { "Yes", "No"}
@data
0.78, 3.06, 9.47, 3.02, 1.4, 2.39, 4.47, 5.07, -1, -1, 97.88, 95.72, 90.11, 95.76, "No"
0.78, 3.13, 10.1, 4.03, 0.66, 2.34, 4.76, 5.01, -1, -1, 98.75, 96.49, 90.39, 95.66, "No"
-0.5, 1.23, 8.1, 2.6, 0.74, 2.17, 4.94, 4.94, -1, -1, 98.53, 96.86, 90.7, 95.56, "No"
-3.07, -1.97, 4.67, -0.36, 1.26, 1.98, 5.09, 4.85, -1, -1, 98.09, 96.98, 90.83, 95.42, "No"
-2.04, -1.95, 4.79, -0.06, 1.73, 1.72, 5.21, 4.79, -1, -1, 97.25, 97.15, 90.91, 95.31, "No"
-0.69, -1.2, 5.49, 0.85, 1.61, 1.6, 5.38, 4.77, -1, -1, 96.74, 97.25, 91.07, 95.27, "No"
1.66, 0.53, 7.34, 2.96, 1.28, 1.39, 5.54, 4.76, -1, -1, 96.46, 97.54, 91.35, 95.24, "No"
-2.44, -3.92, 1.81, -2.1, 1.3, 1.74, 5.46, 4.75, -1, -1, 95.52, 96.98, 91.52, 95.18, "No"
-3.05, -4.62, 0.44, -3.24, 1.95, 2.24, 5.38, 4.75, -1, -1, 94.94, 96.49, 91.64, 95.12, "No"
-0.36, -1.65, 2.78, -0.66, 1.96, 2.1, 5.25, 4.71, -1, -1, 94.78, 96.02, 91.88, 95.07, "No"
0.08, -1.12, 2.47, -0.51, 1.57, 1.91, 4.92, 4.68, -1, -1, 94.49, 95.65, 92.29, 95.06, "No"
-0.54, -2.14, 0.25, -2.14, 0.9, 1.61, 4.34, 4.68, -1, -1, 93.49, 95.03, 92.76, 95.03, "No"
-0.29, -1.41, 0.09, -1.86, 0.91, 1.41, 3.83, 4.68, -1, -1, 93.53, 94.59, 93.18, 95.03, "No"
-0.28, -0.94, -0.01, -1.51, 0.67, 1.45, 3.38, 4.66, -1, -1, 93.86, 94.49, 93.61, 95.03, "No"
-0.45, -1.17, -0.82, -1.9, 0.49, 1.45, 3.02, 4.63, -1, -1, 93.65, 94.34, 94.0, 95.03, "No"
-0.98, -1.81, -2.18, -2.84, 0.39, 1.29, 2.72, 4.59, -1, -1, 93.21, 93.99, 94.35, 95.0, "No"
-0.68, -1.06, -2.27, -2.63, 0.59, 0.72, 2.51, 4.56, -1, -1, 93.09, 93.44, 94.6, 94.95, "No"
-2.63, -3.37, -4.99, -5.17, 1.07, 1.11, 2.44, 4.57, -1, -1, 92.44, 93.15, 94.74, 94.92, "Yes"
-0.59, -1.76, -3.53, -3.59, 1.08, 1.25, 2.43, 4.55, -1, -1, 92.02, 93.11, 94.81, 94.88, "No"
... ... ...


分析的代码如下:

Classifier classifier= new J48()
ArffLoader arffLoader=new ArffLoader()
arffLoader.setFile(new File("D:/ARFF/SZ002250Training.arff"))

Instances instancesTraining=arffLoader.getDataSet()
instancesTraining.setClassIndex(14)

println "共加载:"+instancesTraining.numInstances().toString()
classifier.buildClassifier(instancesTraining)

println "训练完毕!"

println "classifier.graph()********************************************"
println classifier.graph()


arffLoader.setFile(new File("D:/ARFF/SZ002250Testing.arff"))

Instances instancesTesting=arffLoader.getDataSet()
instancesTesting.setClassIndex(14)

int sum=instancesTesting.numInstances()
int successful=0
for(int i=0;i<sum; i++)
{
    //分析结果与实际结果相同?
    if (classifier.classifyInstance(instancesTesting.instance(i))==instancesTesting.instance(i).classValue())
    {
        successful++
    }
}

println "正确率:"+(successful*100.0/sum).toString()+"%"


生成的决策树:



输出的结果:
正确率:86.5168539326%
  • 大小: 172.2 KB
分享到:
评论

相关推荐

    Java调用weka神经网络算法预测股票 代码及数据

    6. **预测**:最后,你可以使用训练好的模型对新的股票数据进行预测,这通过`classifyInstance`方法完成。 `Test2.java`文件应该包含了实现这些步骤的具体Java代码,它可能包含以下关键部分: - 导入必要的Weka库。...

    weka使用中文教程

    WEKA 使用中文教程 WEKA(Waikato Environment for Knowledge ...WEKA 是一个功能强大且易于使用的数据挖掘工具,能够满足各种数据挖掘需求。WEKA 的中文教程可以帮助初学者快速掌握 WEKA 的使用方法和数据挖掘技术。

    20个机器学习开源软件Weka实验数据集

    3. **训练模型**:使用选定的算法对数据集进行训练,调整超参数以优化模型性能。 4. **评估模型**:使用交叉验证、测试集评估模型的泛化能力,比较不同算法的表现。 5. **可视化结果**:通过Weka的图形界面展示学习...

    weka 融合TimeSerial Forcast资源

    在进行时间序列预测前,通常需要对数据进行预处理,如缺失值填充、趋势分析、季节性调整等。Weka提供了一系列预处理工具,帮助用户准备适合时间序列预测的数据。 5. **模型选择与评估**: Weka的...

    数据挖掘WEKA实验报告.doc

    - **定义**:WEKA(Waikato Environment for Knowledge Analysis)是由新西兰怀卡托大学开发的一款开源数据挖掘工具,主要用于机器学习和数据分析。 - **特点**: - 开源软件,基于Java编写。 - 支持多种操作系统...

    Weka期货数据挖掘中连续属性划分策略研究.pdf

    2. 期货数据的特殊性:期货数据具有连续性和时序性特征,这些特性导致现有的金融数据挖掘工具(如股票数据挖掘工具)并不适合直接应用于期货数据挖掘。 3. 数据预处理的重要性:文章分析了现有分类算法J48直接处理...

    数据挖掘聚类分析大作业

    数据挖掘的代码是用C++写的,包含了三个算法 k-means ,CURE,DBSCAN,分别对三个数据集做处理,分别为小麦种子,股票数据,糖尿病患者。另外还有其他两个算法,代码在cplusplus文件里面,但是没有用于数据分析,有...

    时序预测算法

    时序预测算法是一种在IT行业中广泛应用的技术,特别是在数据分析和机器学习领域。它的主要目标是对时间序列数据进行建模,以预测未来的趋势或模式。在给定的标题“时序预测算法”中,我们可以理解到这个压缩包可能...

    一些关于数据挖掘领域的相关文献

    数据挖掘是一种从海量数据中提取有价值知识的过程,它结合了计算机科学、统计学和机器学习等领域...通过阅读这些文献,可以不断提升对数据挖掘的理解,掌握先进的技术和方法,从而在数据分析和预测领域取得更好的成果。

    JAVA实现ARIMA

    在Java编程环境中实现ARIMA模型,可以为各种业务场景提供数据驱动的决策支持,例如销售预测、股票市场分析等。 自回归(AR)部分是指模型利用过去一定期数的值来预测未来的值,这些历史值以线性组合的形式出现在...

    数据挖掘讲义(ppt,386页)

    这些工具提供了丰富的库和算法,方便进行数据预处理、建模和评估。 此外,数据挖掘的伦理和隐私问题也是讨论的重要部分。在挖掘过程中,必须遵循法律和道德规范,保护个人隐私,避免滥用数据。 总的来说,这份386...

    数据挖掘考试题目——关联分析.pdf

    2. 填空题中,关联分析主要使用支持度和置信度作为度量标准,挖掘算法包括Apriori和FP-Growth等,购物篮分析的数据通常以事务形式存在,满足最小支持度的项集被称为频繁项集,同时满足最小支持度和最小置信度的规则...

    数据挖掘知识包

    6. 时间序列分析:ARIMA、状态空间模型等,适用于处理具有时间依赖性的数据,如股票价格预测、销售趋势分析等。 数据挖掘的过程通常遵循CRISP-DM(Cross-Industry Standard Process for Data Mining)流程,包括...

    数据挖掘资料

    2. 数据理解:探索性数据分析,了解数据分布、相关性和潜在问题。 3. 数据准备:数据清洗、集成、转换和规范化,确保数据质量。 4. 模型构建:选择合适的挖掘算法,训练模型。 5. 评估与验证:通过交叉验证等方法...

    浙大王灿数据挖掘课件——远程教育

    2. 数据探索:通过可视化工具和统计分析方法,如直方图、散点图和相关性分析,对数据进行初步了解,寻找可能的关联和趋势。 3. 数据建模:数据挖掘的主要任务之一是构建预测或分类模型。这可能包括决策树、贝叶斯...

    福建师范大学精品大数据导论课程系列 (9.1.1)--8.1 《大数据的广泛应用》PPT.pdf

    数据可视化是大数据分析的重要环节,课程通过PPT详细阐述了数据可视化的概念、发展历程、技术分类和具体方法,以及如何使用Excel进行数据可视化。 总之,这个系列的课程为学生提供了全面的大数据知识体系,从理论到...

    数据挖掘的ppt(比较基础的知识).ppt

    5. **序列模式挖掘**:这种技术用于发现数据中的时间序列模式,常见于用户行为分析或股票市场预测。 6. **异常检测**:识别数据中的离群值或异常事件,有助于发现潜在问题或欺诈行为。 7. **数据挖掘软件**:如...

Global site tag (gtag.js) - Google Analytics