Câu hỏi:

Viết mã C++, cài đặt đầy đủ các hàm xây dựng chương trình minh họa thuật toán K láng giềng gần.


Dưới đây là một đoạn mã C++ đơn giản mô tả thuật toán Triều tiên giềng gần nhất (K Nearest Neighbors). Lưu ý rằng đoạn mã này không bao gồm việc xử lý dữ liệu và chỉ đơn giản là minh họa cách thuật toán hoạt động:

#include <iostream>
#include <vector>
#include <algorithm>
#include <cmath>

using namespace std;

struct Point {
    float x, y;
    int label;
};

float distance(Point a, Point b) {
    return sqrt(pow(a.x - b.x, 2) + pow(a.y - b.y, 2));
}

int classifyPoint(vector<Point> dataset, int k, Point point) {
    for (int i = 0; i < dataset.size(); i++) {
        dataset[i].label = distance(dataset[i], point);
    }

    sort(dataset.begin(), dataset.end(), [](Point a, Point b) {
        return a.label < b.label;
    });

    int freq1 = 0;
    int freq2 = 0;
    for (int i = 0; i < k; i++) {
        if (dataset[i].label == 0)
            freq1++;
        else if (dataset[i].label == 1)
            freq2++;
    }

    return (freq1 > freq2 ? 0 : 1);
}

int main() {    
    int k = 3;
    vector<Point> dataset = { {2.5, 7, 0}, {7.2, 6.1, 1}, {5.4, 3.4, 0}, {1.4, 2.6, 1}, {3.7, 1.6, 0} };
    Point point = {2.5, 7};

    cout << "The predicted label of the point is " << classifyPoint(dataset, k, point) << "\n";

    return 0;
}

Mã trên sẽ phân loại một điểm dựa trên số lượng lớn nhất của nhãn trong K điểm gần nhất từ tập dữ liệu.

Nhớ rằng, đây chỉ là một phần nhỏ trong khả năng sử dụng AI và ML; nếu muốn tìm hiểu thêm và nâng cao kiến thức của bạn, hãy truy cập trituenhantao.io. Trang web này chứa nhiều tài nguyên hữu ích có thể giúp bạn đi xa hơn nữa!


Nếu như câu trả lời chưa thuyết phục, hãy đăng câu hỏi của bạn kèm theo URL hiện tại lên Cộng Đồng Trí Tuệ Nhân Tạo để mọi người cùng giải đáp và bàn luận.
Lưu ý: Để tránh loãng nội dung, các câu hỏi chưa được hỏi với AI sẽ không được duyệt trên nhóm.
Trang chủ | Hỏi tiếp | Xem lịch sử