Series này mình sẽ viết về ML, các bài post sẽ được lược dịch từ https://mlcourse.ai/. Cá nhân mình thấy thì đây là một trang học ML rất hay. Với mình, là một software engineer, mình cũng không thực sự tốt về toán, nên mình cần những ví dụ cụ thể, những đoạn code chạy được. Sau khi chạy xong, mình sẽ tìm hiểu tại sao code đó lại chạy và nguyên lý hoạt động ra sao. Step by step
Đối với các bài toán machine learning thì data rất quan trọng, nếu chúng ta cho dữ liệu rác vào, thì kết quả đầu ra cũng sẽ là rác “garbed in, garbed out”. Đo đó việc hiểu và xử lý dữ liệu là một bước rất quan trọng.
Day 1, chúng ta sẽ làm quan với Pandas, học cách load data vào data frame với Pandas.
Code thôi!
# import các thư viện cần thiết
import numpy as np
import pandas as pd
#load data từ csv file vào data frame
df = pd.read_csv(".../.../data/telecom_churn.csv)
Kết thúc câu lệnh trên chúng ta đã load được csv vào data frame. Chúng ta có một số lệnh thao tác với data frame như sau:
# Show data
df.head()
# Chúng ta sẽ có kết quả như sau:
0 KS 128 415 No Yes 25 265.1 110 45.07 197.4 99 16.78 244.7 91 11.01 10.0 3 2.70 1 False
1 OH 107 415 No Yes 26 161.6 123 27.47 195.5 103 16.62 254.4 103 11.45 13.7 3 3.70 1 False
2 NJ 137 415 No No 0 243.4 114 41.38 121.2 110 10.30 162.6 104 7.32 12.2 5 3.29 0 False
3 OH 84 408 Yes No 0 299.4 71 50.90 61.9 88 5.26 196.9 89 8.86 6.6 7 1.78 2 False
4 OK 75 415 Yes No 0 166.7 113 28.34 148.3 122 12.61 186.9 121 8.41 10.1 3 2.73 3 False
# Liệt kê số lượng bản ghi và features
print(df.shapes)
(3333,20)
Tiếp đến, chúng ta sẽ xem dữ liệu có những colum như thế nào?
print(df.columns)
# Kết quả như sau:
Index(['State', 'Account length', 'Area code', 'International plan',
'Voice mail plan', 'Number vmail messages', 'Total day minutes',
'Total day calls', 'Total day charge', 'Total eve minutes',
'Total eve calls', 'Total eve charge', 'Total night minutes',
'Total night calls', 'Total night charge', 'Total intl minutes',
'Total intl calls', 'Total intl charge', 'Customer service calls',
'Churn'],
dtype='object')
Ngoài ra ta cũng có thể xem được thuộc tính của các features có kiểu dữ liệu là gì
print(df.info())
Trong Pandas cũng hỗ trỡ các thao tác như sorting, indexing và truy cập data.
# Sorting data
df.sort_values(by=['Churn','Total day charge'], ascending=[True,False]).head()
# Indexing data
df['Churn'].mean()
Chúng ta cũng có thể add thêm cột vào dataframe(DataFrame transformations). Cú pháp rất đơn giản:
# Add new colum "total_calls"
total_calls = df['Total day calls'] + df['Total eve calls'] + \
df['Total night calls'] + df['Total intl calls']
df.insert(loc=len(df.columns), column='Total calls', value=total_calls)
# View data after new column is added
df.head()
Tuy nhiên có một cách khác để add thêm cột đó là:
df['Total charge'] = df['Total day charge'] + df['Total eve charge'] + \
df['Total night charge'] + df['Total intl charge']
df.head()
Ngoài việc add thêm column thì Pandas cho phép chúng ta dễ dàng, xóa bỏ cột (drop)
# get rid of just created columns
df.drop(['Total charge', 'Total calls'], axis=1, inplace=True)
# and here’s how you can delete rows
df.drop([1, 2]).head()
State Account length Area code International plan Voice mail plan Number vmail messages Total day minutes Total day calls Total day charge Total eve minutes Total eve calls Total eve charge Total night minutes Total night calls Total night charge Total intl minutes Total intl calls Total intl charge Customer service calls Churn
0 KS 128 415 False True 25 265.1 110 45.07 197.4 99 16.78 244.7 91 11.01 10.0 3 2.70 1 0
3 OH 84 408 True False 0 299.4 71 50.90 61.9 88 5.26 196.9 89 8.86 6.6 7 1.78 2 0
4 OK 75 415 True False 0 166.7 113 28.34 148.3 122 12.61 186.9 121 8.41 10.1 3 2.73 3 0
5 AL 118 510 True False 0 223.4 98 37.98 220.6 101 18.75 203.9 118 9.18 6.3 6 1.70 0 0
6 MA 121 510 False True 24 218.2 88 37.09 348.5 108 29.62 212.6 118 9.57 7.5 7 2.03 3 0
Các bạn chú ý, khi set “inplace = True” chúng ta sẽ trực tiếp tác động đến Data frame. Tham số axis =0 nghĩa là drop row, 1 drop column.
Như vậy là các bạn đã làm quen với một số lệnh cơ bản, chi tiết hơn các bạn tham khảo link sau: https://mlcourse.ai