我尝试对一个csv文件实施线性回归。这是csv文件的内容:
X1; X2; X3; X4; X5; X6; X7; X8; Y1; Y2;
0.98; 514.50; 294.00; 110.25; 7.00; 2; 0.00; 0; 15.55; 21.33; 0.98; 514.50; 294.00; 110.25; 7.00; 3; 0.00; 0; 15.55; 21.33; 0.98; 514.50; 294.00; 110.25; 7.00; 4; 0.00; 0; 15.55; 21.33; 0.98; 514.50; 294.00; 110.25; 7.00; 5; 0.00; 0; 15.55; 21.33; 0.90; 563.50; 318.50; 122.50; 7.00; 2; 0.00; 0; 20.84; 28.28; 0.90; 563.50; 318.50; 122.50; 7.00; 3; 0.00; 0; 21.46; 25.38; 0.90; 563.50; 318.50; 122.50; 7.00; 4; 0.00; 0; 20.71; 25.16; 0.90; 563.50; 318.50; 122.50; 7.00; 5; 0.00; 0; 19.68; 29.60; 0.86; 588.00; 294.00; 147.00; 7.00; 2; 0.00; 0; 19.50; 27.30; 0.86; 588.00; 294.00; 147.00; 7.00; 3; 0.00; 0; 19.95; 21.97; 0.86; 588.00; 294.00; 147.00; 7.00; 4; 0.00; 0; 19.34; 23.49; 0.86; 588.00; 294.00; 147.00; 7.00; 5; 0.00; 0; 18.31; 27.87; 0.82; 612.50; 318.50; 147.00; 7.00; 2; 0.00; 0; 17.05; 23.77;
...
0.71; 710.50; 269.50; 220.50; 3.50; 2; 0.40; 5; 12.43; 15.59; 0.71; 710.50; 269.50; 220.50; 3.50; 3; 0.40; 5; 12.63; 14.58; 0.71; 710.50; 269.50; 220.50; 3.50; 4; 0.40; 5; 12.76; 15.33; 0.71; 710.50; 269.50; 220.50; 3.50; 5; 0.40; 5; 12.42; 15.31; 0.69; 735.00; 294.00; 220.50; 3.50; 2; 0.40; 5; 14.12; 16.63; 0.69; 735.00; 294.00; 220.50; 3.50; 3; 0.40; 5; 14.28; 15.87; 0.69; 735.00; 294.00; 220.50; 3.50; 4; 0.40; 5; 14.37; 16.54; 0.69; 735.00; 294.00; 220.50; 3.50; 5; 0.40; 5; 14.21; 16.74; 0.66; 759.50; 318.50; 220.50; 3.50; 2; 0.40; 5; 14.96; 17.64; 0.66; 759.50; 318.50; 220.50; 3.50; 3; 0.40; 5; 14.92; 17.79; 0.66; 759.50; 318.50; 220.50; 3.50; 4; 0.40; 5; 14.92; 17.55; 0.66; 759.50; 318.50; 220.50; 3.50; 5; 0.40; 5; 15.16; 18.06; 0.64; 784.00; 343.00; 220.50; 3.50; 2; 0.40; 5; 17.69; 20.82; 0.64; 784.00; 343.00; 220.50; 3.50; 3; 0.40; 5; 18.19; 20.21; 0.64; 784.00; 343.00; 220.50; 3.50; 4; 0.40; 5; 18.16; 20.71; 0.64; 784.00; 343.00; 220.50; 3.50; 5; 0。40; 5; 17.88; 21.40; 0.62; 808.50; 367.50; 220.50; 3.50; 2; 0.40; 5; 16.54; 16.88; 0.62; 808.50; 367.50; 220.50; 3.50; 3; 0.40; 5; 16.44; 17.11; 0.62; 808.50; 367.50; 220.50; 3.50; 4; 0.40; 5; 16.48; 16.61; 0.62; 808.50; 367.50; 220.50; 3.50; 5; 0.40; 5; 16.64; 16.03;
我阅读了此csv文件并实现了线性回归实现。这是java中的源代码:
public static void main(String[] args) throws IOException
{
String csvFile = null;
CSVLoader loader = null;
Remove remove =null;
Instances data =null;
LinearRegression model = null;
int numberofFeatures = 0;
try
{
csvFile = "C:\\Users\\Taha\\Desktop/ENB2012_data.csv";
loader = new CSVLoader();
// load CSV
loader.setSource(new File(csvFile));
data = loader.getDataSet();
//System.out.println(data);
numberofFeatures = data.numAttributes();
System.out.println("number of features: " + numberofFeatures);
data.setClassIndex(data.numAttributes() - 2);
//remove last attribute Y2
remove = new Remove();
remove.setOptions(new String[]{"-R", data.numAttributes()+""});
remove.setInputFormat(data);
data = Filter.useFilter(data, remove);
// data.setClassIndex(data.numAttributes() - 2);
model = new LinearRegression();
model.buildClassifier(data);
System.out.println(model);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
Run Code Online (Sandbox Code Playgroud)
我遇到错误weka.core.UnassignedClassException:类索引为负(未设置)!在model.buildClassifier(data);行 功能数量为1,但是预计为9。它们是X1; X2; X3; X4; X5; X6; X7; X8; Y1; Y2我缺少什么?提前致谢。
小智 6
您可以在该行之后添加data=loader.getDataSet()下一行,以解决您的异常:
if (data.classIndex() == -1) {
System.out.println("reset index...");
instances.setClassIndex(data.numAttributes() - 1);
}
Run Code Online (Sandbox Code Playgroud)
这对我有用。
| 归档时间: |
|
| 查看次数: |
1159 次 |
| 最近记录: |