测试目标:
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
分享到:
相关推荐
6. **预测**:最后,你可以使用训练好的模型对新的股票数据进行预测,这通过`classifyInstance`方法完成。 `Test2.java`文件应该包含了实现这些步骤的具体Java代码,它可能包含以下关键部分: - 导入必要的Weka库。...
WEKA 使用中文教程 WEKA(Waikato Environment for Knowledge ...WEKA 是一个功能强大且易于使用的数据挖掘工具,能够满足各种数据挖掘需求。WEKA 的中文教程可以帮助初学者快速掌握 WEKA 的使用方法和数据挖掘技术。
3. **训练模型**:使用选定的算法对数据集进行训练,调整超参数以优化模型性能。 4. **评估模型**:使用交叉验证、测试集评估模型的泛化能力,比较不同算法的表现。 5. **可视化结果**:通过Weka的图形界面展示学习...
在进行时间序列预测前,通常需要对数据进行预处理,如缺失值填充、趋势分析、季节性调整等。Weka提供了一系列预处理工具,帮助用户准备适合时间序列预测的数据。 5. **模型选择与评估**: Weka的...
- **定义**:WEKA(Waikato Environment for Knowledge Analysis)是由新西兰怀卡托大学开发的一款开源数据挖掘工具,主要用于机器学习和数据分析。 - **特点**: - 开源软件,基于Java编写。 - 支持多种操作系统...
2. 期货数据的特殊性:期货数据具有连续性和时序性特征,这些特性导致现有的金融数据挖掘工具(如股票数据挖掘工具)并不适合直接应用于期货数据挖掘。 3. 数据预处理的重要性:文章分析了现有分类算法J48直接处理...
数据挖掘的代码是用C++写的,包含了三个算法 k-means ,CURE,DBSCAN,分别对三个数据集做处理,分别为小麦种子,股票数据,糖尿病患者。另外还有其他两个算法,代码在cplusplus文件里面,但是没有用于数据分析,有...
时序预测算法是一种在IT行业中广泛应用的技术,特别是在数据分析和机器学习领域。它的主要目标是对时间序列数据进行建模,以预测未来的趋势或模式。在给定的标题“时序预测算法”中,我们可以理解到这个压缩包可能...
数据挖掘是一种从海量数据中提取有价值知识的过程,它结合了计算机科学、统计学和机器学习等领域...通过阅读这些文献,可以不断提升对数据挖掘的理解,掌握先进的技术和方法,从而在数据分析和预测领域取得更好的成果。
在Java编程环境中实现ARIMA模型,可以为各种业务场景提供数据驱动的决策支持,例如销售预测、股票市场分析等。 自回归(AR)部分是指模型利用过去一定期数的值来预测未来的值,这些历史值以线性组合的形式出现在...
这些工具提供了丰富的库和算法,方便进行数据预处理、建模和评估。 此外,数据挖掘的伦理和隐私问题也是讨论的重要部分。在挖掘过程中,必须遵循法律和道德规范,保护个人隐私,避免滥用数据。 总的来说,这份386...
2. 填空题中,关联分析主要使用支持度和置信度作为度量标准,挖掘算法包括Apriori和FP-Growth等,购物篮分析的数据通常以事务形式存在,满足最小支持度的项集被称为频繁项集,同时满足最小支持度和最小置信度的规则...
6. 时间序列分析:ARIMA、状态空间模型等,适用于处理具有时间依赖性的数据,如股票价格预测、销售趋势分析等。 数据挖掘的过程通常遵循CRISP-DM(Cross-Industry Standard Process for Data Mining)流程,包括...
2. 数据理解:探索性数据分析,了解数据分布、相关性和潜在问题。 3. 数据准备:数据清洗、集成、转换和规范化,确保数据质量。 4. 模型构建:选择合适的挖掘算法,训练模型。 5. 评估与验证:通过交叉验证等方法...
2. 数据探索:通过可视化工具和统计分析方法,如直方图、散点图和相关性分析,对数据进行初步了解,寻找可能的关联和趋势。 3. 数据建模:数据挖掘的主要任务之一是构建预测或分类模型。这可能包括决策树、贝叶斯...
数据可视化是大数据分析的重要环节,课程通过PPT详细阐述了数据可视化的概念、发展历程、技术分类和具体方法,以及如何使用Excel进行数据可视化。 总之,这个系列的课程为学生提供了全面的大数据知识体系,从理论到...
5. **序列模式挖掘**:这种技术用于发现数据中的时间序列模式,常见于用户行为分析或股票市场预测。 6. **异常检测**:识别数据中的离群值或异常事件,有助于发现潜在问题或欺诈行为。 7. **数据挖掘软件**:如...