Scikit-learn: K-nearest neighbors

knn concept
knn concept

Trong bài viết này, ta sẽ tìm hiểu thuật toán K-láng giềng gần (K-nearest neighbors (KNN)). KNN thuộc nhóm phương pháp phân lớp dựa trên thể hiện (instance-based classification). Tôi sẽ trình bày ý tưởng đơn giản về thuật toán này. Sau đó, ta sẽ sử dụng thư viện scikit-learn phục vụ cho việc cài đặt mô hình dự đoán KNN.

Notebooks: knn.

Exploratory Data Analysis: Các hệ thống Plotting

xyplot plotting 2x2
Trong bài viết này, ta sẽ khảo sát tổng quan ba hệ thống plotting trong R. Mỗi hệ thống có điểm mạnh và điểm yếu riêng. Chúng ta sẽ tìm hiểu sơ về ý tưởng tổng quát của các hệ thống này. Ở các bài viết sau, ta sẽ đi vào chi tiết hơn.

Notebooks: explore_plot_sys.

Exploratory Data Analysis: K Means Clustering

 

K Means Clustering
K Means Clustering

Trong bài viết này, ta sẽ khảo sát về k-means clustering, một cách đơn giản khác để quan sát tập dữ liệu đa chiều (multi-dimensional data). Tương tự như hierarchical clustering, kĩ thuật này hữu ích khi bước đầu phân tích dữ liệu (quan sát mối quan hệ giữa các điểm dữ liệu, thuộc tính).

Notebooks: explore_kmeans_clustering.

Exploratory Data Analysis: Hierarchical Clustering

 

Hierarchical Clustering
Hierarchical Clustering

Hôm nay, chúng ta sẽ tìm hiểu về hierarchical clustering. Đây là kĩ thuật hữu ích trong giai đoạn đầu phân tích dữ liệu, nó giúp chúng ta hiểu rõ hơn về tập dữ liệu đang khảo sát (nhận dạng mẫu, mối quan hệ giữa các thuộc tính). Hierarchical clustering có nghĩa là tạo ra cây phân cấp các nhóm dữ liệu.

Notebooks: explore_hierarchical_clustering.

Exploratory Data Analysis: Các biểu đồ cơ bản

boxplot
boxplot

Trong bài viết này, ta sẽ thảo luận về exploratory graphs (các biểu đồ cơ bản). Đây là một công cụ quan trọng và đóng một vai trò đặc biệt trong qúa trình phân tích dữ liệu.

Notebooks: explore_basic_chart.

Lấy và làm sạch dữ liệu với R: Gom nhóm và kĩ thuật Chaining với dplyr

Ở bài viết trước, chúng ta đã học về năm thao tác chính trong dplyr: select(), filter(), arrange(), mutate(), và summarize(). Hàm summarize() rất mạnh mẽ trong việc áp dụng dữ liệu đã gom nhóm. Chúng ta tiếp tục làm việc với tập dữ liệu 225,000 packages của R. Ở đây, ta dùng file log July 8, 2014 (http://cran-logs.rstudio.com/).

Notebooks: r_group_by.

Lập trình với R: Ngày và Thời gian

Date and time
Date and time

R có một phương thức đặc biệt để biểu diễn ngày và thời gian. Đây là kiểu dữ liệu hữu dụng khi bạn làm việc với dữ liệu mà đòi hỏi giá trị thay đổi theo thời gian (time-series data) hay những dữ liệu chứa các thông tin như ngày sinh chẳng hạn.

Ngày được biểu diễn bởi lớp ‘Date’ và Thời gian được biểu diễn bởi lớp ‘POSIXct’ và ‘POSIXlt’. Bên trong nó, Ngày được lưu dưới dạng số ngày kể từ 1970-01-01 và Thời gian được lưu dưới dạng số giây kể từ 1970-01-01 (POSIXct) hoặc danh sách giây, phút, giờ (POSIXlt).

Notebooks: r_datetime.

Lập trình với R: vapply và tapply

tapply
tapply

Ở bài viết trước, chúng ta đã học về hai hàm thành viên quan trọng trong R đó là lapply() và sapply(). Cả hai đều nhận đầu vào là list, apply một hàm tương ứng với các phần tử trong list, sau đó kết hợp và trả về kết quả cuối cùng. lapply() luôn trả về một list, trong khi sapply() cố gắng tinh giản kết quả trả về.

Trong bài viết này, ta sẽ học về cách sử dụng vapply() và tapply(), mỗi hàm đóng một vai trò nhất định vào chiến lược Split-Apply-Combine. Chúng ta sẽ sử dụng cùng tập dữ liệu ở bài viết ‘lapply và sapply’.

Tập dữ liệu Flags lấy từ UCI Machine Learning Repository chứa thông tin chi tiết về quốc kỳ của các quốc gia. Để biết thêm thông tin các bạn có thể truy cập tại trang web sau: http://archive.ics.uci.edu/ml/datasets/Flags.

Notebooks: vapply_and_tapply.

Lập trình với R: lapply and sapply

lapply and sapply
lapply and sapply

Trong bài viết này, ta sẽ học cách sử dụng hàm lapply() và sapply(), hai trong số những hàm quan trọng trong R. Chúng được gọi là loop function trong nhóm hàm *apply(). Những hàm mạnh mẽ này, cùng với các hàm gần kề chúng (vapply() và tapply()) cung cấp các công cụ chính xác và tiện lợi trong chiến lược phân tích dữ liệu Split-Apply-Combine (tách-áp dụng-kết hợp). Những hàm *apply này sẽ TÁCH (SPLIT) dữ liệu ban đầu ra thành những thành phần nhỏ hơn, ÁP DỤNG (APPLY) một tác vụ nào đó lên các thành phần này, và KẾT HỢP (COMBINE) các kết quả này lại. Để tìm hiểu chi tiết hơn về chiến lược này ta có thể tham khảo trong bài báo của Hadley Wickham’s Journal of Statistical Software có tiêu đề là “The Split-Apply-Combine Strategy for Data Analysis”.

Trong suốt bài viết này, ta sẽ sử dụng tập dữ liệu Flags (quốc kỳ) từ UCI Machine Learning Repository. Tập dữ liệu này chứa thông tin chi tiết về quốc kỳ của các quốc gia. Để biết thêm thông tin hãy truy cập vào link này: http://archive.ics.uci.edu/ml/datasets/Flags.

Notebooks: lapply_and_sapply.

Lập trình với R: Functions

Function
Function

Functions là một trong những thành phần cơ bản của ngôn ngữ R. Chúng là những mẫu code nhỏ có thể sử dụng lại nhiều lần và được xem như các đối tượng khác trong R. Ở các bài viết trước, chắc hẳn chúng ta cũng đã sử dụng qua nhiều hàm dựng sẵn (built-in function). Một function bao gồm tên hàm và đi kèm theo là các đối số (parameters).

Notebooks: how_to_func.

Lập trình với R: Biểu đồ cơ bản

histogram
histogram

Một trong những điểm mạnh nhất của R, khi so với các ngôn ngữ lập trình khác, đó là ta có thể dễ dàng tạo ra các biểu đồ chất lượng cao một cách dễ dàng. Trong bài viết này, chúng ta sẽ học về các biểu đồ cơ bản trong R. Chúng ta còn có các thư viện đồ thị nâng cao khác nhưng sẽ không được đề cập đến ở đây đó là lattice, ggplot2, và ggvis. Ta có thể tham khảo bài viết theo hướng tiếp cận khác với ggplot2. Xem thêm ở link sau: http://varianceexplained.org/r/teach_ggplot2_to_beginners/

Notebooks: basic_charts.

Lập trình với R: Matrices và Data Frames

Matrices and Data Frames
Matrices and Data Frames

Trong bài viết này, chúng ta sẽ khảo sát về matrices và data frames. Cả hai đều biểu diễn cấu trúc dữ liệu dạng bảng (rectangular), nghĩa là chúng được sử dụng để lưu trữ dữ liệu gồm các dòng và cột. Sự khác biệt duy nhất giữa matrices và data frames đó là matrices chỉ có thể chứa duy nhất một kiểu dữ liệu, trong khi data frames có thể chứa nhiều kiểu dữ liệu khác nhau.

Notebooks: matrix_and_dataframe.

Lập trình với R: Truy xuất vector

Vector
Vector

Trong bài viết này, ta sẽ học cách truy xuất các thành phần trong vector dựa trên những điều kiện chúng ta chỉ đinh. Ví dụ, chúng ta chỉ quan tâm đến 20 phần tử đầu tiên trong vector, hay truy xuất các phần tử không mang giá trị NA, hay chỉ truy xuất các phần tử dương. Kết thúc bài viết này, chúng ta sẽ biết cách xử lý từng tình huống trên.

Notebooks: accessing_vectors.

Lập trình với R: Dữ liệu bị thiếu

Missing data
Missing data

Dữ liệu bị thiếu (missing values) đóng một vai trò quan trọng trong thống kê và phân tích dữ liệu. Thông thường, missing values không nên bị bỏ qua mà cần được nghiên cứu cẩn thận để xem xét xem điều gì khiến cho các missing values này bị thiếu. Trong R, NA được sử dụng để thể hiện các giá trị không tồn tại (not available) hay bị thiếu (missing) theo nghĩa thống kê. Trong bài viết này, ta sẽ tìm hiểu kỹ hơn về các giá trị này.

Notebooks: handling_missing_data.

Lập trình với R: Vectors

Vector
Vector

Hôm nay, chúng ta sẽ tìm hiểu về vector, một trong những kiểu dữ liệu đơn giản và thông dụng nhất trong R. Vectors có hai định dạng: atomic vectors (vector đơn cấu trúc) và list (vector đa cấu trúc). Atomic vector chỉ chứa duy nhất một kiểu dữ liệu. Trong khi đó, list có thể chứa nhiều kiểu dữ liệu khác nhau. Chúng ta sẽ tìm hiểu về atomic vector trước rồi sau đó đến list.

Notebooks: vector_in_r.

Lấy và làm sạch dữ liệu với R: Thao tác dữ liệu với dplyr

ETL
ETL

Ở bài viết này, chúng ta sẽ thao tác trên dữ liệu với dplyr. dplyr là một package mạnh mẽ của R được viết bởi Hadley Wickham và Romain Francois cho phép chúng ta làm việc với dữ liệu dạng bảng (tabular). Một trong những khía cạnh độc đáo của dplyr đó là với cùng một tập các tools, chúng ta có thể thao tác với nhiều nguồn dữ liệu khác, bao gồm data frames, data tables, databases và multidimensional arrays. Trong bài viết này, chúng ta chỉ tập trung thao tác trên data frames. Tuy nhiên, bạn vẫn có thể áp dụng cho các dạng format khác.

Notebooks: working_with_dplyr.

Lấy và làm sạch dữ liệu với R: Ngày và Thời gian với lubridate

Watch
Watch

Trong bài viết này, ta sẽ khảo sát lubridate R package được phát triển bởi Garrett Grolemund và Hadley Wickham.  Theo tác giả đề cập, “lubridate có cú pháp đồng nhất và dễ nhớ giúp cho thao tác trên dữ liệu Ngày và Thời gian thêm thú vị thay vì bực dọc”. Nếu bạn đã từng làm việc với Ngày và Thời gian thì phát biểu trên sẽ khiến bạn chú ý.

Notebooks: datetime_with_lubridate.

Lấy và làm sạch dữ liệu với R: Dọn dẹp dữ liệu với tidyr

Data Cleaning
Data Cleaning

Trong bài viết này, ta sẽ học cách dọn dẹp dữ liệu với tidyr package. Các phần trong bài viết này đòi hỏi sử dụng dplyr. Nếu bạn không có kiến thức căn bản về dplyr, bạn nên đọc trước loạt bài dplyr trước khi bắt đầu bài viết này.

Notebooks: working_with_tidyr_dplyr.