长安的花

当学问走过漫漫古道
凿刻入千窟,心也从愚昧中苏醒

0%

Udacity 3.朴素贝叶斯cpp代码解析 1

Udacity 3.朴素贝叶斯cpp代码解析 1

主函数 main

定义从txt里加载数据的函数:

1
2
3
//函数定义
vector<vector<double> > Load_State(string file_name);
vector<string> Load_Label(string file_name);

函数主体实现

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
vector<vector<double> > Load_State(string file_name) {//返回一个向量,向量里放的是一个存放double数据的向量
ifstream in_state_(file_name.c_str(), ifstream::in); //ifstream 输入流 以读的方式打开文件
vector< vector<double >> state_out;
string line;

while (getline(in_state_, line)) {//getline 从流in_state_里读取整行文本 并存储到字符串line里
std::istringstream iss(line);//来自头文件<sstream> 串流的输入操作
vector<double> x_coord;

string token;
while (getline(iss,token,',')) {//以逗号区分,将iss里的字符串以,隔开存放到token里,遇到逗号代表完成
x_coord.push_back(stod(token));//std::stod 将字符串转为浮点值
}
state_out.push_back(x_coord);
}

return state_out;
}

1
2
3
4
5
6
7
8
9
10
11
12
13
14
vector<string> Load_Label(string file_name) {
ifstream in_label_(file_name.c_str(), ifstream::in);
vector< string > label_out;
string line;
while (getline(in_label_, line)) {
std::istringstream iss(line);
string label;
iss >> label;

label_out.push_back(label);
}

return label_out;
}

比较预测结果是否一致:

string A;string B;A.compare(B);

传入到训练

gnb.train(X_train, Y_train); x是特征, y是标签

如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!

欢迎关注我的其它发布渠道