Professional Documents
Culture Documents
KNN v2
KNN v2
16
Ví dụ: Phân loại hoa Iris
Bảng mô tả thông tin của tập dữ liệu hoa Ailen.
• Bốn cột là một đặc tính (features).
• Cột cuối cùng là nhãn (label) chỉ tên loại hoa (một trong
ba loại: Iris-setosa, Iris-versicolour, và Iris-virginica)
Sepal length Sepal width Petal length Petal width Class
độ dài lá đài độ rộng lá đài độ dài cánh hoa độ rộng cánh hoa setosa||versicolour|| virginica
17
Ví dụ: Phân loại hoa Iris
Hình sau biểu diễn 10 hàng đầu, mỗi hàng có 5 cột
thông tin về hoa Ailen .
18
Ví dụ: Phân loại hoa Iris
• Đọc dữ liệu
import numpy as np
from sklearn import datasets
iris = datasets.load_iris()
iris_data = iris.data
iris_labels = iris.target
print(iris_data[0], iris_data[79], iris_data[100])
print(iris_labels[0], iris_labels[79], iris_labels[100])
Ví dụ: Phân loại hoa Iris
• Tạo tập dữ liệu kiểm tra (testing) từ tập trên. Sử dụng phép hoán vị
ngẫu nhiên để tách ra tập tập kiểm tra (dùng np.random)
np.random.seed(42)
indices = np.random.permutation(len(iris_data))
n_training_samples = 12
learnset_data = iris_data[indices[:-n_training_samples]]
learnset_labels = iris_labels[indices[:-n_training_samples]]
testset_data = iris_data[indices[-n_training_samples:]]
testset_labels = iris_labels[indices[-n_training_samples:]]
print(learnset_data[:4], learnset_labels[:4])
print(testset_data[:4], testset_labels[:4])
Ví dụ: Phân loại hoa Iris
• Biểu diễn dữ liệu của tập kiểm tra (testing)
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
colours = ("r", "b")
X = []
for iclass in range(3):
X.append([[], [], []])
for i in range(len(learnset_data)):
if learnset_labels[i] == iclass:
X[iclass][0].append(learnset_data[i][0])
X[iclass][1].append(learnset_data[i][1])
X[iclass][2].append(sum(learnset_data[i][2:]))
colours = ("r", "g", "y")
fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')
for iclass in range(3):
ax.scatter(X[iclass][0], X[iclass][1], X[iclass][2], c=colours[iclass])
plt.show()
Ví dụ: Phân loại hoa Iris
• Tính khoảng cách 2 mẫu
for i in range(5):
neighbors = get_neighbors(learnset_data, learnset_labels,
testset_data[i], 3, distance=distance)
print(i, testset_data[i], testset_labels[i], neighbors)
Ví dụ: Phân loại hoa Iris
• Hàm kiểm tra xem lớp nào có nhiều mẫu hơn
for i in range(n_training_samples):
neighbors = get_neighbors(learnset_data,
learnset_labels,
testset_data[i],
3,
distance=distance)
print("index: ", i,
", result of vote: ", vote(neighbors),
", label: ", testset_labels[i],
", data: ", testset_data[i])
Phân loại hoa Iris sử dụng sklearn
• Trước tiên, chúng ta cần khai báo vài thư viện
Iris flower dataset có sẵn trong thư viện scikit-learn.
import numpy as np
import matplotlib.pyplot as plt
from sklearn import neighbors, datasets
• Tiếp theo, chúng ta load dữ liệu và hiện thị vài dữ liệu
mẫu. Các class được gán nhãn là 0, 1, và 2
iris = datasets.load_iris()
iris_X = iris.data
iris_y = iris.target
print ("Number of classes: %d:" %len(np.unique(iris_y)))
print ("Number of data points: %d" %len(iris_y))
X0 = iris_X[iris_y == 0,:]
print ('\nSamples from class 0:\n', X0[:5,:])
X1 = iris_X[iris_y == 1,:]
print ('\nSamples from class 1:\n', X1[:5,:])
X2 = iris_X[iris_y == 2,:]
print ('\nSamples from class 2:\n', X2[:5,:])
• Tách training và test sets
– Giả sử chúng ta muốn dùng 50 điểm dữ liệu cho test set, 100 điểm còn
lại cho training set. Scikit-learn có một hàm số cho phép chúng ta ngẫu
nhiên lựa chọn các điểm này, như sau:
clf = neighbors.KNeighborsClassifier(n_neighbors = 1, p = 2)
clf.fit(X_train, y_train)
y_pred = clf.predict(X_test)
np.random.seed(42)
indices = np.random.permutation(len(dataset))
n_training_samples = int(len(dataset)*0.3)
train_data = X[indices[:-n_training_samples]]
train_labels = Y[indices[:-n_training_samples]]
testset_data = X[indices[-n_training_samples:]]
testset_labels = Y[indices[-n_training_samples:]]
Hồi quy (Regression)
• Phân tích hồi quy (regression analysis) là
kỹ thuật thống kê dùng để ước lượng
phương trình phù hợp nhất với các tập
hợp kết quả quan sát của biến phụ thuộc
và biến độc lập.
Regression examples
Polynomial Curve Fitting
0th Order Polynomial
n=10
1st Order Polynomial
3rd Order Polynomial
9th Order Polynomial
kNN Regression
kNN Regression
• Xét ví dụ: dự báo chỉ số giá nhà (House Price Index – HPI) dựa
vào tuổi (Age) và thu nhập (Loan)
kNN Regression
• Với K = 1 thì láng giềng gần nhất là Age=33 và
Loan=$150,000 với HPI=264
D = Sqrt[(48-33)^2 + (142000-150000)^2]
= 8000.01 >> HPI = 264
Với K=3 xét 3 láng giềng gần nhất ta có:
HPI = (264+139+139)/3 = 180.7