weka java预测天气代码
时间: 2024-04-14 21:09:16 浏览: 157
以下是一个简单的使用Weka Java API预测天气的示例代码:
```java
import java.io.BufferedReader;
import java.io.FileReader;
import weka.classifiers.Classifier;
import weka.classifiers.bayes.NaiveBayes;
import weka.classifiers.evaluation.Evaluation;
import weka.core.Instance;
import weka.core.Instances;
public class WeatherPredictor {
public static void main(String[] args) throws Exception {
// 1. 加载数据集
BufferedReader reader = new BufferedReader(new FileReader("weather.arff"));
Instances data = new Instances(reader);
reader.close();
// 2. 设置类别属性
data.setClassIndex(data.numAttributes() - 1);
// 3. 构建决策树分类器
Classifier classifier = new NaiveBayes();
classifier.buildClassifier(data);
// 4. 交叉验证评估分类器
Evaluation eval = new Evaluation(data);
eval.crossValidateModel(classifier, data, 10, new java.util.Random(1));
System.out.println(eval.toSummaryString());
// 5. 预测新实例
Instance instance = new Instance(4);
instance.setDataset(data);
instance.setValue(0, "sunny");
instance.setValue(1, "hot");
instance.setValue(2, "high");
instance.setValue(3, "weak");
double[] probabilities = classifier.distributionForInstance(instance);
System.out.println("Probability of each class:");
for (int i = 0; i < data.classAttribute().numValues(); i++) {
System.out.println(data.classAttribute().value(i) + ": " + probabilities[i]);
}
}
}
```
在本例中,我们使用了Weka自带的天气数据集(weather.arff)。在代码中,我们首先加载数据集,并将其类别属性设置为最后一个属性。然后,我们使用朴素贝叶斯分类器构建模型,并对模型进行10折交叉验证评估。最后,我们使用朴素贝叶斯分类器对新实例进行分类,并输出每个类别的概率。
阅读全文