libsvm 鸢尾花数据加载的c#代码
时间: 2024-02-15 19:34:29 浏览: 106
语言示例代码
以下是使用C语言加载鸢尾花数据集的示例代码:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX_FEATURES 4
#define MAX_SAMPLES 150
int main()
{
FILE *fp = fopen("iris.data", "r"); // 打开数据文件
if (!fp) {
printf("Failed to open file.\n");
return -1;
}
double features[MAX_SAMPLES][MAX_FEATURES]; // 特征矩阵
int labels[MAX_SAMPLES]; // 类别标签
char line[1024]; // 读取数据文件每一行的缓冲区
int i = 0; // 样本计数器
while (fgets(line, 1024, fp)) { // 逐行读取数据文件
char *token = strtok(line, ","); // 分割每一行数据
int j = 0; // 特征计数器
while (token) {
if (j < MAX_FEATURES) {
features[i][j] = atof(token); // 保存特征值
} else {
if (strcmp(token, "Iris-setosa\n") == 0) {
labels[i] = 1; // 设置类别标签
} else if (strcmp(token, "Iris-versicolor\n") == 0) {
labels[i] = 2;
} else {
labels[i] = 3;
}
}
token = strtok(NULL, ","); // 继续分割数据
j++;
}
i++;
}
fclose(fp); // 关闭数据文件
// 输出特征矩阵和类别标签
for (int i = 0; i < MAX_SAMPLES; i++) {
for (int j = 0; j < MAX_FEATURES; j++) {
printf("%lf,", features[i][j]);
}
printf("%d\n", labels[i]);
}
return 0;
}
```
以上代码使用了C标准库中的文件读取函数`fopen`,并使用了字符串分割函数`strtok`来解析每一行的数据。最终将特征矩阵和类别标签分别保存在`features`和`labels`数组中,可以用于训练`libsvm`分类器。
阅读全文