Hỗ trợ giai đoạn tiền xử lý dữ liệu (data preprocessing)
Mô tả sự phân bố dữ liệu/đối tượng (data distribution)
Nhận dạng mẫu (pattern recognition)
Phân tích dữ liệu không gian (spatial data analysis)
Xử lý ảnh (image processing)
Phân mảnh thị trường (market segmentation)
Gom cụm tài liệu ((WWW) document clustering)
Thuật Toán K-Means
K-Means là thuật toán rất quan trọng và được sử dụng phổ biến trong kỹ thuật phân cụm. Tư tưởng chính của thuật toán K-Means là tìm cách phân nhóm các đối tượng (objects) đã cho vào K cụm (K là số các cụm được xác đinh trước, K nguyên dương) sao cho tổng bình phương khoảng cách giữa các đối tượng đến tâm nhóm (centroid ) là nhỏ nhất.
1. Chọn ngẫu nhiên K tâm (centroid) cho K cụm (cluster). Mỗi cụm được đại diện bằng các tâm của cụm.
2. Tính khoảng cách giữa các đối tượng (objects) đến K tâm (thường dùng khoảng cách Euclidean)
3. Nhóm các đối tượng vào nhóm gần nhất
4. Xác định lại tâm mới cho các nhóm
5. Thực hiện lại bước 2 cho đến khi không có sự thay đổi nhóm nào của các đối tượng
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 |
import pandas as pd from scipy.io import arff import argparse def status(message): print(message) def read_file(path): status("Reading file ...") try: data = arff.loadarff(path) df = pd.DataFrame(data[0]) return df except: print("File not found!") def write_file(path, file, data): status("Writing " + file + " file ...") try: data.to_csv(path, index=False, header=None) except: print("Cannot write a file!") def main(args): data = read_file(args.input) write_file(args.output, "Cluster", data) if __name__ == "__main__": parser = argparse.ArgumentParser(description='Cluster') parser.add_argument('input', help='input file path') parser.add_argument('output', help='output file path') parser.add_argument('k', help='k number ') args = parser.parse_args() main(args) |
Leave a Reply