From dae9b171ca238ec7cd35ec769d5e5966386f9d5b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=BC=A0=E8=89=B3=E7=90=B3?= <17307110367@fudan.edu.cn> Date: Sun, 21 Mar 2021 10:41:41 +0800 Subject: [PATCH 01/23] =?UTF-8?q?=E6=96=B0=E5=BB=BA=2017307110367?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- assignment-1/submission/17307110367/.keep | 0 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 assignment-1/submission/17307110367/.keep diff --git a/assignment-1/submission/17307110367/.keep b/assignment-1/submission/17307110367/.keep new file mode 100644 index 0000000..e69de29 -- Gitee From e207e63ac9374f2a1779ff06fd40190ed704bc24 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=BC=A0=E8=89=B3=E7=90=B3?= <17307110367@fudan.edu.cn> Date: Sun, 21 Mar 2021 10:42:21 +0800 Subject: [PATCH 02/23] =?UTF-8?q?=E5=88=A0=E9=99=A4=E6=96=87=E4=BB=B6=20as?= =?UTF-8?q?signment-1/submission/17307110367?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- assignment-1/submission/17307110367/.keep | 0 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 assignment-1/submission/17307110367/.keep diff --git a/assignment-1/submission/17307110367/.keep b/assignment-1/submission/17307110367/.keep deleted file mode 100644 index e69de29..0000000 -- Gitee From b4c66f7a5ebd4439b0693ae6fe16b95c1efb0528 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=BC=A0=E8=89=B3=E7=90=B3?= <17307110367@fudan.edu.cn> Date: Sun, 21 Mar 2021 11:09:05 +0800 Subject: [PATCH 03/23] =?UTF-8?q?=E6=96=B0=E5=BB=BA=2017307110367?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- assignment-1/submission/17307110367/.keep | 0 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 assignment-1/submission/17307110367/.keep diff --git a/assignment-1/submission/17307110367/.keep b/assignment-1/submission/17307110367/.keep new file mode 100644 index 0000000..e69de29 -- Gitee From 676c27b7eec192d96034b1692c5dc0519b95f49d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=BC=A0=E8=89=B3=E7=90=B3?= <17307110367@fudan.edu.cn> Date: Sun, 21 Mar 2021 11:10:22 +0800 Subject: [PATCH 04/23] =?UTF-8?q?=E6=96=B0=E5=BB=BA=20img?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- assignment-1/submission/17307110367/img/.keep | 0 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 assignment-1/submission/17307110367/img/.keep diff --git a/assignment-1/submission/17307110367/img/.keep b/assignment-1/submission/17307110367/img/.keep new file mode 100644 index 0000000..e69de29 -- Gitee From 49c60403b7c7752bb7c204cfa1ee254f98e7a548 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=BC=A0=E8=89=B3=E7=90=B3?= <17307110367@fudan.edu.cn> Date: Sun, 21 Mar 2021 11:11:18 +0800 Subject: [PATCH 05/23] =?UTF-8?q?=E5=88=A0=E9=99=A4=E6=96=87=E4=BB=B6=20as?= =?UTF-8?q?signment-1/submission/17307110367/.keep?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- assignment-1/submission/17307110367/.keep | 0 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 assignment-1/submission/17307110367/.keep diff --git a/assignment-1/submission/17307110367/.keep b/assignment-1/submission/17307110367/.keep deleted file mode 100644 index e69de29..0000000 -- Gitee From 0fe5d219f3696e4202d87890dc62ed55028506e3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=BC=A0=E8=89=B3=E7=90=B3?= <17307110367@fudan.edu.cn> Date: Sun, 21 Mar 2021 11:14:46 +0800 Subject: [PATCH 06/23] source.py --- assignment-1/submission/17307110367/source.py | 152 ++++++++++++++++++ 1 file changed, 152 insertions(+) create mode 100644 assignment-1/submission/17307110367/source.py diff --git a/assignment-1/submission/17307110367/source.py b/assignment-1/submission/17307110367/source.py new file mode 100644 index 0000000..f93d4ce --- /dev/null +++ b/assignment-1/submission/17307110367/source.py @@ -0,0 +1,152 @@ +import sys +import numpy as np +import matplotlib.pyplot as plt + +class KNN: + + def __init__(self): + self.train_data = None + self.train_label = None + self.k = None + + def fit(self, train_data, train_label): + self.train_data = train_data + self.train_label = train_label + # 将训练集打乱 + data_size = self.train_data.shape[0] + shuffled_indices = np.random.permutation(data_size) + shuffled_data = train_data[shuffled_indices] + shuffled_label = train_label[shuffled_indices] + # test_ratio为测试集所占的百分比,划分训练集和验证集 + test_ratio = 0.2 + test_set_size = int(data_size * test_ratio) + valid_data = shuffled_data[:test_set_size] + valid_label = shuffled_label[:test_set_size] + training_data = shuffled_data[test_set_size:] + training_label = shuffled_label[test_set_size:] + # 在验证集上对不同的K值进行测试 + record ={} + for k in range(1,5,2): + data_size = training_data.shape[0] + predict_result = np.array([]) + for i in range(valid_data.shape[0]): + diff = np.tile(valid_data[i], (data_size, 1)) - training_data + sqdiff = diff ** 2 + squareDist = np.sum(sqdiff, axis=1) + dist = squareDist ** 0.5 + # test_data到其它点的距离 + sorteddiffdist = np.argsort(dist) + # 对这些距离从小到大排序 + classCount = {} + for j in range(k): + Label = training_label[sorteddiffdist[j]] + classCount[Label] = classCount.get(Label, 0) + 1 + # 统计距离中前K个值中各个类别的数量 + maxCount = 0 + for key, value in classCount.items(): + if value > maxCount: + maxCount = value + result = key + predict_result = np.append(predict_result, result) + acc = np.mean(np.equal(predict_result, valid_label)) + record[k] = acc + # 取验证准确率最高的K值作为K值 + maxCount = 0 + for key, value in record.items(): + if value > maxCount: + maxCount = value + k_result = key + print("k=",k_result) + self.k = k_result + + def predict(self, test_data): + data_size = self.train_data.shape[0] + predict_result = np.array([]) + for i in range(test_data.shape[0]): + diff = np.tile(test_data[i],(data_size,1)) - self.train_data + sqdiff = diff **2 + squareDist = np.sum(sqdiff, axis =1) + dist = squareDist **0.5 + # test_data到其它点的距离 + sorteddiffdist = np.argsort(dist) + # 对这些距离从小到大排序 + classCount ={} + for j in range(self.k): + Label = self.train_label[sorteddiffdist[j]] + classCount[Label] = classCount.get(Label,0) + 1 + # 统计距离中前K个值中各个类别的数量 + maxCount = 0 + for key, value in classCount.items(): + if value > maxCount: + maxCount = value + result = key + predict_result = np.append(predict_result,result) + # 数量最多的就是预测的结果 + return predict_result + + +def generate(): + mean = (1, 2) + cov = np.array([[73, 0], [0, 22]]) + x = np.random.multivariate_normal(mean, cov, (800,)) + + mean = (16, -5) + cov = np.array([[21.2, 0], [0, 32.1]]) + y = np.random.multivariate_normal(mean, cov, (200,)) + + mean = (10, 22) + cov = np.array([[10, 5], [5, 10]]) + z = np.random.multivariate_normal(mean, cov, (1000,)) + + idx = np.arange(2000) + np.random.shuffle(idx) + data = np.concatenate([x, y, z]) + label = np.concatenate([ + np.zeros((800,), dtype=int), + np.ones((200,), dtype=int), + np.ones((1000,), dtype=int) * 2 + ]) + data = data[idx] + label = label[idx] + + train_data, test_data = data[:1600, ], data[1600:, ] + train_label, test_label = label[:1600, ], label[1600:, ] + np.save("data.npy", ( + (train_data, train_label), (test_data, test_label) + )) + + +def read(): + (train_data, train_label), (test_data, test_label) = np.load("data.npy", allow_pickle=True) + return (train_data, train_label), (test_data, test_label) + + +def display(data, label, name): + datas = [[], [], []] + for i in range(len(data)): + datas[label[i]].append(data[i]) + + for each in datas: + each = np.array(each) + plt.scatter(each[:, 0], each[:, 1]) + plt.savefig(f'./{name}') + plt.show() + + +if __name__ == "__main__": + if len(sys.argv) > 1 and sys.argv[1] == "g": + generate() + if len(sys.argv) > 1 and sys.argv[1] == "d": + (train_data, train_label), (test_data, test_label) = read() + display(train_data, train_label, 'train') + display(test_data, test_label, 'test') + else: + (train_data, train_label), (test_data, test_label) = read() + + model = KNN() + model.fit(train_data, train_label) + res = model.predict(test_data) + print("acc =", np.mean(np.equal(res, test_label))) + + + -- Gitee From f49e6195694de621d4b3a42c3ae3a09dcfa47279 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=BC=A0=E8=89=B3=E7=90=B3?= <17307110367@fudan.edu.cn> Date: Sun, 21 Mar 2021 17:22:31 +0800 Subject: [PATCH 07/23] !1 [submission] assignment-1 of 17307110367 --- .../submission/17307110367/img/test_1.png | Bin 0 -> 26475 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 assignment-1/submission/17307110367/img/test_1.png diff --git a/assignment-1/submission/17307110367/img/test_1.png b/assignment-1/submission/17307110367/img/test_1.png new file mode 100644 index 0000000000000000000000000000000000000000..eec47aac6c3a4a91fbb79b4e46c19b4dcaf56ad7 GIT binary patch literal 26475 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

ZnI0Q}{{h6-53B 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 Date: Sun, 21 Mar 2021 17:22:56 +0800 Subject: [PATCH 08/23] !1 [submission] assignment-1 of 17307110367 --- .../submission/17307110367/img/train_1.png | Bin 0 -> 40180 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 assignment-1/submission/17307110367/img/train_1.png diff --git a/assignment-1/submission/17307110367/img/train_1.png b/assignment-1/submission/17307110367/img/train_1.png new file mode 100644 index 0000000000000000000000000000000000000000..580335fd8c4753ea64df8189940b63039eb02168 GIT binary patch literal 40180 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 literal 0 HcmV?d00001 -- Gitee From 30d63e3a0149b7a07967e99ca772278a700bedc1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=BC=A0=E8=89=B3=E7=90=B3?= <17307110367@fudan.edu.cn> Date: Sun, 21 Mar 2021 22:39:22 +0800 Subject: [PATCH 09/23] !1 [submission] assignment-1 of 17307110367 --- .../submission/17307110367/img/test_2.png | Bin 0 -> 24697 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 assignment-1/submission/17307110367/img/test_2.png diff --git a/assignment-1/submission/17307110367/img/test_2.png b/assignment-1/submission/17307110367/img/test_2.png new file mode 100644 index 0000000000000000000000000000000000000000..b7273b4820997fc7ccf6f1238e0f6d5dc53776f1 GIT binary patch literal 24697 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 St3dt@2Gdm2LFB2J{q--&YgX6* literal 0 HcmV?d00001 -- Gitee From bdbb6a788cc193715012955028164a87ab97af39 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=BC=A0=E8=89=B3=E7=90=B3?= <17307110367@fudan.edu.cn> Date: Sun, 21 Mar 2021 22:50:44 +0800 Subject: [PATCH 10/23] !1 [submission] assignment-1 of 17307110367 --- .../submission/17307110367/img/test_3.png | Bin 0 -> 29893 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 assignment-1/submission/17307110367/img/test_3.png diff --git a/assignment-1/submission/17307110367/img/test_3.png b/assignment-1/submission/17307110367/img/test_3.png new file mode 100644 index 0000000000000000000000000000000000000000..1389dfe352cc414a710dab394b0a5cbd5173c5e9 GIT binary patch literal 29893 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 Date: Sun, 21 Mar 2021 23:02:52 +0800 Subject: [PATCH 11/23] !1 [submission] assignment-1 of 17307110367 --- .../submission/17307110367/img/test_4.png | Bin 0 -> 36510 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 assignment-1/submission/17307110367/img/test_4.png diff --git a/assignment-1/submission/17307110367/img/test_4.png b/assignment-1/submission/17307110367/img/test_4.png new file mode 100644 index 0000000000000000000000000000000000000000..c33f255f7f5c059f8b3fa50fd5f02ebdf81a8204 GIT binary patch literal 36510 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 literal 0 HcmV?d00001 -- Gitee From c5f9e2f09b41b82fdb77463a406ced250273fe97 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=BC=A0=E8=89=B3=E7=90=B3?= <17307110367@fudan.edu.cn> Date: Sun, 21 Mar 2021 23:12:37 +0800 Subject: [PATCH 12/23] !1 [submission] assignment-1 of 17307110367 --- .../submission/17307110367/img/test_5.png | Bin 0 -> 32123 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 assignment-1/submission/17307110367/img/test_5.png diff --git a/assignment-1/submission/17307110367/img/test_5.png b/assignment-1/submission/17307110367/img/test_5.png new file mode 100644 index 0000000000000000000000000000000000000000..f15a0935c5fc56cadf8f259b40b0b960831d256f GIT binary patch literal 32123 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 C9dT>` literal 0 HcmV?d00001 -- Gitee From 384c1f2f7a677659aabe3e03d9946e4ed421c422 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=BC=A0=E8=89=B3=E7=90=B3?= <17307110367@fudan.edu.cn> Date: Sun, 21 Mar 2021 23:26:10 +0800 Subject: [PATCH 13/23] !1 [submission] assignment-1 of 17307110367 --- .../submission/17307110367/img/test_6.png | Bin 0 -> 31115 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 assignment-1/submission/17307110367/img/test_6.png diff --git a/assignment-1/submission/17307110367/img/test_6.png b/assignment-1/submission/17307110367/img/test_6.png new file mode 100644 index 0000000000000000000000000000000000000000..528bd1180529c99a903a7affc9c08cbb6f0af35b GIT binary patch literal 31115 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%0A200-BmcsvgMA;ewA@?|UVw8YA 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 literal 0 HcmV?d00001 -- Gitee From b7f28489a9700ae04549e5b7131e38ab8bf0a02d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=BC=A0=E8=89=B3=E7=90=B3?= <17307110367@fudan.edu.cn> Date: Sun, 21 Mar 2021 23:35:47 +0800 Subject: [PATCH 14/23] =?UTF-8?q?=E5=88=A0=E9=99=A4=E6=96=87=E4=BB=B6=20as?= =?UTF-8?q?signment-1/submission/17307110367/source.py?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- assignment-1/submission/17307110367/source.py | 152 ------------------ 1 file changed, 152 deletions(-) delete mode 100644 assignment-1/submission/17307110367/source.py diff --git a/assignment-1/submission/17307110367/source.py b/assignment-1/submission/17307110367/source.py deleted file mode 100644 index f93d4ce..0000000 --- a/assignment-1/submission/17307110367/source.py +++ /dev/null @@ -1,152 +0,0 @@ -import sys -import numpy as np -import matplotlib.pyplot as plt - -class KNN: - - def __init__(self): - self.train_data = None - self.train_label = None - self.k = None - - def fit(self, train_data, train_label): - self.train_data = train_data - self.train_label = train_label - # 将训练集打乱 - data_size = self.train_data.shape[0] - shuffled_indices = np.random.permutation(data_size) - shuffled_data = train_data[shuffled_indices] - shuffled_label = train_label[shuffled_indices] - # test_ratio为测试集所占的百分比,划分训练集和验证集 - test_ratio = 0.2 - test_set_size = int(data_size * test_ratio) - valid_data = shuffled_data[:test_set_size] - valid_label = shuffled_label[:test_set_size] - training_data = shuffled_data[test_set_size:] - training_label = shuffled_label[test_set_size:] - # 在验证集上对不同的K值进行测试 - record ={} - for k in range(1,5,2): - data_size = training_data.shape[0] - predict_result = np.array([]) - for i in range(valid_data.shape[0]): - diff = np.tile(valid_data[i], (data_size, 1)) - training_data - sqdiff = diff ** 2 - squareDist = np.sum(sqdiff, axis=1) - dist = squareDist ** 0.5 - # test_data到其它点的距离 - sorteddiffdist = np.argsort(dist) - # 对这些距离从小到大排序 - classCount = {} - for j in range(k): - Label = training_label[sorteddiffdist[j]] - classCount[Label] = classCount.get(Label, 0) + 1 - # 统计距离中前K个值中各个类别的数量 - maxCount = 0 - for key, value in classCount.items(): - if value > maxCount: - maxCount = value - result = key - predict_result = np.append(predict_result, result) - acc = np.mean(np.equal(predict_result, valid_label)) - record[k] = acc - # 取验证准确率最高的K值作为K值 - maxCount = 0 - for key, value in record.items(): - if value > maxCount: - maxCount = value - k_result = key - print("k=",k_result) - self.k = k_result - - def predict(self, test_data): - data_size = self.train_data.shape[0] - predict_result = np.array([]) - for i in range(test_data.shape[0]): - diff = np.tile(test_data[i],(data_size,1)) - self.train_data - sqdiff = diff **2 - squareDist = np.sum(sqdiff, axis =1) - dist = squareDist **0.5 - # test_data到其它点的距离 - sorteddiffdist = np.argsort(dist) - # 对这些距离从小到大排序 - classCount ={} - for j in range(self.k): - Label = self.train_label[sorteddiffdist[j]] - classCount[Label] = classCount.get(Label,0) + 1 - # 统计距离中前K个值中各个类别的数量 - maxCount = 0 - for key, value in classCount.items(): - if value > maxCount: - maxCount = value - result = key - predict_result = np.append(predict_result,result) - # 数量最多的就是预测的结果 - return predict_result - - -def generate(): - mean = (1, 2) - cov = np.array([[73, 0], [0, 22]]) - x = np.random.multivariate_normal(mean, cov, (800,)) - - mean = (16, -5) - cov = np.array([[21.2, 0], [0, 32.1]]) - y = np.random.multivariate_normal(mean, cov, (200,)) - - mean = (10, 22) - cov = np.array([[10, 5], [5, 10]]) - z = np.random.multivariate_normal(mean, cov, (1000,)) - - idx = np.arange(2000) - np.random.shuffle(idx) - data = np.concatenate([x, y, z]) - label = np.concatenate([ - np.zeros((800,), dtype=int), - np.ones((200,), dtype=int), - np.ones((1000,), dtype=int) * 2 - ]) - data = data[idx] - label = label[idx] - - train_data, test_data = data[:1600, ], data[1600:, ] - train_label, test_label = label[:1600, ], label[1600:, ] - np.save("data.npy", ( - (train_data, train_label), (test_data, test_label) - )) - - -def read(): - (train_data, train_label), (test_data, test_label) = np.load("data.npy", allow_pickle=True) - return (train_data, train_label), (test_data, test_label) - - -def display(data, label, name): - datas = [[], [], []] - for i in range(len(data)): - datas[label[i]].append(data[i]) - - for each in datas: - each = np.array(each) - plt.scatter(each[:, 0], each[:, 1]) - plt.savefig(f'./{name}') - plt.show() - - -if __name__ == "__main__": - if len(sys.argv) > 1 and sys.argv[1] == "g": - generate() - if len(sys.argv) > 1 and sys.argv[1] == "d": - (train_data, train_label), (test_data, test_label) = read() - display(train_data, train_label, 'train') - display(test_data, test_label, 'test') - else: - (train_data, train_label), (test_data, test_label) = read() - - model = KNN() - model.fit(train_data, train_label) - res = model.predict(test_data) - print("acc =", np.mean(np.equal(res, test_label))) - - - -- Gitee From 8eb0777497545fbceae7106feb0b34f824f09ae5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=BC=A0=E8=89=B3=E7=90=B3?= <17307110367@fudan.edu.cn> Date: Sun, 21 Mar 2021 23:35:58 +0800 Subject: [PATCH 15/23] !1 [submission] assignment-1 of 17307110367 --- assignment-1/submission/17307110367/source.py | 172 ++++++++++++++++++ 1 file changed, 172 insertions(+) create mode 100644 assignment-1/submission/17307110367/source.py diff --git a/assignment-1/submission/17307110367/source.py b/assignment-1/submission/17307110367/source.py new file mode 100644 index 0000000..bc70f0c --- /dev/null +++ b/assignment-1/submission/17307110367/source.py @@ -0,0 +1,172 @@ +import sys +import numpy as np +import matplotlib.pyplot as plt + +class KNN: + + def __init__(self): + self.train_data = None + self.train_label = None + self.k = None + + def fit(self, train_data, train_label): + self.train_data = train_data + self.train_label = train_label + # 将训练集打乱 + data_size = self.train_data.shape[0] + shuffled_indices = np.random.permutation(data_size) + shuffled_data = train_data[shuffled_indices] + shuffled_label = train_label[shuffled_indices] + # test_ratio为测试集所占的百分比,划分训练集和验证集 + test_ratio = 0.2 + test_set_size = int(data_size * test_ratio) + valid_data = shuffled_data[:test_set_size] + valid_label = shuffled_label[:test_set_size] + training_data = shuffled_data[test_set_size:] + training_label = shuffled_label[test_set_size:] + # 在验证集上对不同的K值进行测试 + record ={} + if training_data.shape[0] < 20: + k_number = training_data.shape[0] + else: + k_number = 20 + for k in range(1,k_number,2): + data_size = training_data.shape[0] + predict_result = np.array([]) + for i in range(valid_data.shape[0]): + diff = np.tile(valid_data[i], (data_size, 1)) - training_data + sqdiff = diff ** 2 + squareDist = np.sum(sqdiff, axis=1) + dist = squareDist ** 0.5 + # test_data到其它点的距离 + sorteddiffdist = np.argsort(dist) + # 对这些距离从小到大排序 + classCount = {} + for j in range(k): + Label = training_label[sorteddiffdist[j]] + classCount[Label] = classCount.get(Label, 0) + 1 + # 统计距离中前K个值中各个类别的数量 + maxCount = 0 + for key, value in classCount.items(): + if value > maxCount: + maxCount = value + result = key + predict_result = np.append(predict_result, result) + acc = np.mean(np.equal(predict_result, valid_label)) + record[k] = acc + # 取验证准确率最高的K值作为K值 + maxCount = 0 + for key, value in record.items(): + if value > maxCount: + maxCount = value + k_result = key + print("k=",k_result) + self.k = k_result + + def predict(self, test_data): + data_size = self.train_data.shape[0] + predict_result = np.array([]) + for i in range(test_data.shape[0]): + diff = np.tile(test_data[i],(data_size,1)) - self.train_data + sqdiff = diff **2 + squareDist = np.sum(sqdiff, axis =1) + dist = squareDist **0.5 + # test_data到其它点的距离 + sorteddiffdist = np.argsort(dist) + # 对这些距离从小到大排序 + classCount ={} + for j in range(self.k): + Label = self.train_label[sorteddiffdist[j]] + classCount[Label] = classCount.get(Label,0) + 1 + # 统计距离中前K个值中各个类别的数量 + maxCount = 0 + for key, value in classCount.items(): + if value > maxCount: + maxCount = value + result = key + predict_result = np.append(predict_result,result) + # 数量最多的就是预测的结果 + return predict_result + + +def generate(): + mean = (1, 2) + cov = np.array([[73, 0], [0, 22]]) + x = np.random.multivariate_normal(mean, cov, (800,)) + #x = np.random.multivariate_normal(mean, cov, (1600,)) + + mean = (16, -5) + #mean = (30, -20) + #mean = (15, 0) + cov = np.array([[21.2, 0], [0, 32.1]]) + #cov = np.array([[73, 0], [0, 22]]) + y = np.random.multivariate_normal(mean, cov, (200,)) + #y = np.random.multivariate_normal(mean, cov, (400,)) + + mean = (10, 22) + #mean = (10,10) + cov = np.array([[10, 5], [5, 10]]) + #cov = np.array([[73, 0], [0, 22]]) + z = np.random.multivariate_normal(mean, cov, (1000,)) + #z = np.random.multivariate_normal(mean, cov, (2000,)) + + idx = np.arange(2000) + #idx = np.arange(2800) + np.random.shuffle(idx) + data = np.concatenate([x, y, z]) + label = np.concatenate([ + np.zeros((800,), dtype=int), + np.ones((200,), dtype=int), + np.ones((1000,), dtype=int) * 2 + ]) + # label = np.concatenate([ + # np.zeros((1600,), dtype=int), + # np.ones((200,), dtype=int), + # np.ones((1000,), dtype=int) * 2 + # ]) + # data = data[idx] + # label = label[idx] + + train_data, test_data = data[:1600, ], data[1600:, ] + train_label, test_label = label[:1600, ], label[1600:, ] + # train_data, test_data = data[:2240, ], data[2240:, ] + # train_label, test_label = label[:2240, ], label[2240:, ] + np.save("data.npy", ( + (train_data, train_label), (test_data, test_label) + )) + + +def read(): + (train_data, train_label), (test_data, test_label) = np.load("data.npy", allow_pickle=True) + return (train_data, train_label), (test_data, test_label) + + +def display(data, label, name): + datas = [[], [], []] + for i in range(len(data)): + datas[label[i]].append(data[i]) + + for each in datas: + each = np.array(each) + plt.scatter(each[:, 0], each[:, 1]) + plt.savefig(f'./{name}') + plt.show() + + +if __name__ == "__main__": + if len(sys.argv) > 1 and sys.argv[1] == "g": + generate() + if len(sys.argv) > 1 and sys.argv[1] == "d": + (train_data, train_label), (test_data, test_label) = read() + display(train_data, train_label, 'train') + display(test_data, test_label, 'test') + else: + (train_data, train_label), (test_data, test_label) = read() + + model = KNN() + model.fit(train_data, train_label) + res = model.predict(test_data) + print("acc =", np.mean(np.equal(res, test_label))) + + + -- Gitee From 0f76b4c94e874d52b15a16e920e3cf22439634b8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=BC=A0=E8=89=B3=E7=90=B3?= <17307110367@fudan.edu.cn> Date: Sun, 21 Mar 2021 23:37:22 +0800 Subject: [PATCH 16/23] !1 [submission] assignment-1 of 17307110367 --- .../submission/17307110367/README.md.md | 131 ++++++++++++++++++ 1 file changed, 131 insertions(+) create mode 100644 assignment-1/submission/17307110367/README.md.md diff --git a/assignment-1/submission/17307110367/README.md.md b/assignment-1/submission/17307110367/README.md.md new file mode 100644 index 0000000..76d220c --- /dev/null +++ b/assignment-1/submission/17307110367/README.md.md @@ -0,0 +1,131 @@ +# 课程报告 + 我的KNN模型**只用到了numpy包**,所以我的代码应该可以通过限定依赖包的自动测试。 + ## 一、数据集的生成和划分 + 首先我以如下参数生成了3个符合二维高斯分布的集合的数据集。 + + 第一类数据800个,标注为0: + ```math + \sum = [\begin{matrix}73 & 0\\0 & 22\end{matrix}] + + \mu = [\begin{matrix}1& 2\end{matrix}] + ``` + + 第二类数据200个,标注为1: + ```math + \sum = [\begin{matrix}21.2 & 0\\0 & 32.1\end{matrix}] + + \mu = [\begin{matrix}16& -5\end{matrix}] + ``` + + 第三类数据1000个,标注为2: + ```math + \sum = [\begin{matrix}10 & 5\\5 & 10\end{matrix}] + + \mu = [\begin{matrix}10& 22\end{matrix}] + ``` + 将这些图片和对应的标注混合并打乱次序,就能够得到我们数据集。从其中取出80%(1600对)作为我们的训练集。 + 这是我生成的训练集 + +![train_1](https://gitee.com/zhang-yanlin17/prml-21-spring/blob/master/assignment-1/submission/17307110367/img/train_1.png) + +取出其中另外的20%(400对)作为我们的测试集。 +这是我生成的测试集 +![test_1](https://gitee.com/zhang-yanlin17/prml-21-spring/blob/master/assignment-1/submission/17307110367/img/test_1.png) + + ## 二、KNN模型的建立 + 我的KNN模型主要分为两部分。第一部分的fit函数将训练集分为训练集和验证集,根据KNN模型在验证集上的最优结果自动地选择最优的K值。第二部分的predict函数用已选择出的K值代入KNN模型中,预测测试集的标签。 + ### 2.1 fit函数的编写 + fit函数主要包含以下几个步骤: + (1)将已有的训练集的次序打乱,分出其中的20%作为验证集,80%作为测试集。 + + (2)遍历待选的K值,在暂时确定K值的情况下在验证集上测试模型的结果。若训练集数量小于20,则待选K值的范围是range(1,训练集数量,2);若训练集数量大于20,则待选K值的范围是range(1,20,2)。 + + (3)找到验证集预测准确率最高的模型所对应的K值。将该值作为后续在predict函数中运用的K值。 + + ### 2.2 predict函数的编写 + predict函数主要包含以下几个步骤: + (1)遍历测试集中的每一个点。当取出测试集中的某一点时,计算该点与训练集中的每个点的距离。 + + (2)对计算好的距离进行从小到大排序,取出前K个点 + + (3)统计前K个值中各个类别的数量 + + (4)数量最多的类别便是预测结果。 + + + ## 三、实验结果与分析 + 在命令行运行 python source.py g即可生成数据集并查看准确率结果。由于每次随机生成的数据集略有差异,每次的K值和准确率也略有差异。重复实验10次,结果如下表: + + +实验次数 |K值 |准确率 +---|---|--- +1| 11| 0.96 +2 | 9|0.9675 +3| 15| 0.955 +4 | 11|0.9475 +5| 5| 0.94 +6 | 5|0.94 +7| 11| 0.96 +8 | 7|0.945 +9| 7| 0.95 +10 | 19|0.955 +取这10次实验准确率的均值,得到模型的最终准确率为0.952。 +最终的模型准确率较高。准确率不为1的原因是测试集中蓝色与橙色的点有着一定的交集,对于处于交集中的数据我们也很难分清楚数据点到底属于哪一个类别。这部分的失误对于KNN来说似乎是无法避免的。 + + +## 三、修改数据集进行实验探究 +### 3.1 修改高斯分布的距离 +我们的预期是:在其它条件不变的情况下,高斯分布的距离越大,数据分的越开,KNN越容易预测准确。高斯分布的距离越小,数据离得越近,KNN的准确率越低。 +#### (1)设置参数使得三个类别分的更开。 + + 修改第二类数据的均值,使得它与另外两类数据分的更开: + ```math + \mu_2 = [\begin{matrix}30 & -20\end{matrix}] + ``` + + 此时测试集的数据分布如下图: + ![test_2](https://gitee.com/zhang-yanlin17/prml-21-spring/blob/master/assignment-1/submission/17307110367/img/test_2.png) + 多次实验得到模型的准确率为0.99。符合我们的预期。 + +#### (2)设置参数使得三个类别离得更近。 + + 修改每一类数据的均值,使得它们离得更近: + ```math + \mu_1 = [\begin{matrix}1 & 2\end{matrix}] + + \mu_2 = [\begin{matrix}15 & 0\end{matrix}] + + \mu_3 = [\begin{matrix}10 & 10\end{matrix}] + ``` + + 此时测试集的数据分布如下图: + + ![test_3]( https://gitee.com/zhang-yanlin17/prml-21-spring/blob/master/assignment-1/submission/17307110367/img/test_3.png) + 此时模型的准确率均值只有0.84。符合我们的预期。 + + ### 3.2 修改高斯分布的方差 + 我们的预期是:在其它条件不变的情况下,高斯分布的方差越大,数据越容易混淆,因此KNN的结果越差。高斯分布的方差越小,数据越集中,KNN的结果越好。 +#### 设置参数使得第二和第三类数据的协方差更大。 + 修改第二,三类数据的方差如下: + + ```math + \sum = [\begin{matrix}73 & 0\\0 & 22\end{matrix}] + ``` + 此时测试集的数据分布如下图: + ![test_4](https://gitee.com/zhang-yanlin17/prml-21-spring/blob/master/assignment-1/submission/17307110367/img/test_4.png) + + 此时模型的准确率均值只有0.74,符合我们的预期。显然KNN的结果在这种情况下并不理想。 + + ### 3.3 修改数据的数量 + #### (1)使各类数据翻倍。 + 对第一,第二,第三类的训练和测试数据翻倍。 + 此时测试集的数据分布如下图: + ![test_5](https://gitee.com/zhang-yanlin17/prml-21-spring/blob/master/assignment-1/submission/17307110367/img/test_5.png) + + 对模型运行多次求均值,得到模型的准确率约为0.956。准确率相比于原先提升了一点点。这点提升微乎其微,背后的原因可能是数据翻倍时同样也使得数据间的交叠翻倍,对于这部分的交叠数据,模型很难判别正确。因此准确率没有什么改变。 + + #### (2)使第一类数据翻倍 + 只对第一类的训练和测试数据翻倍。 + 此时测试集的数据分布如下图: + ![test_6](https://gitee.com/zhang-yanlin17/prml-21-spring/blob/master/assignment-1/submission/17307110367/img/test_6.png) + 对模型运行多次求均值,得到模型的准确率约为0.96。可见准确率提升了一些。这是由于第一类的数据翻倍,导致在数据交叠区域数据点更倾向于被判别为第一类数据,因此准确率必定会有一定的提升 \ No newline at end of file -- Gitee From 0e9a60056fd2917f9df7afaca3926ba527167e96 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=BC=A0=E8=89=B3=E7=90=B3?= <17307110367@fudan.edu.cn> Date: Sun, 21 Mar 2021 23:37:33 +0800 Subject: [PATCH 17/23] =?UTF-8?q?=E9=87=8D=E5=91=BD=E5=90=8D=20assignment-?= =?UTF-8?q?1/submission/17307110367/README.md.md=20=E4=B8=BA=20assignment-?= =?UTF-8?q?1/submission/17307110367/README.md?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- assignment-1/submission/17307110367/{README.md.md => README.md} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename assignment-1/submission/17307110367/{README.md.md => README.md} (100%) diff --git a/assignment-1/submission/17307110367/README.md.md b/assignment-1/submission/17307110367/README.md similarity index 100% rename from assignment-1/submission/17307110367/README.md.md rename to assignment-1/submission/17307110367/README.md -- Gitee From d44287b802f83c6f058095cc24dcfb1aa54e52a0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=BC=A0=E8=89=B3=E7=90=B3?= <17307110367@fudan.edu.cn> Date: Sun, 21 Mar 2021 23:57:41 +0800 Subject: [PATCH 18/23] update assignment-1/submission/17307110367/README.md. --- assignment-1/submission/17307110367/README.md | 50 +++++++++---------- 1 file changed, 23 insertions(+), 27 deletions(-) diff --git a/assignment-1/submission/17307110367/README.md b/assignment-1/submission/17307110367/README.md index 76d220c..e19f21d 100644 --- a/assignment-1/submission/17307110367/README.md +++ b/assignment-1/submission/17307110367/README.md @@ -4,25 +4,24 @@ 首先我以如下参数生成了3个符合二维高斯分布的集合的数据集。 第一类数据800个,标注为0: - ```math - \sum = [\begin{matrix}73 & 0\\0 & 22\end{matrix}] + +$\sum = [\begin{matrix}73 & 0\\0 & 22\end{matrix}] $ - \mu = [\begin{matrix}1& 2\end{matrix}] - ``` - - 第二类数据200个,标注为1: - ```math - \sum = [\begin{matrix}21.2 & 0\\0 & 32.1\end{matrix}] +$\mu = [\begin{matrix}1& 2\end{matrix}]$ + + 第二类数据200个,标注为1: + +$\sum = [\begin{matrix}21.2 & 0\\0 & 32.1\end{matrix}] $ - \mu = [\begin{matrix}16& -5\end{matrix}] - ``` +$\mu = [\begin{matrix}16& -5\end{matrix}]$ + 第三类数据1000个,标注为2: - ```math - \sum = [\begin{matrix}10 & 5\\5 & 10\end{matrix}] + +$\sum = [\begin{matrix}10 & 5\\5 & 10\end{matrix}]$ - \mu = [\begin{matrix}10& 22\end{matrix}] - ``` +$\mu = [\begin{matrix}10& 22\end{matrix}]$ + 将这些图片和对应的标注混合并打乱次序,就能够得到我们数据集。从其中取出80%(1600对)作为我们的训练集。 这是我生成的训练集 @@ -79,9 +78,7 @@ #### (1)设置参数使得三个类别分的更开。 修改第二类数据的均值,使得它与另外两类数据分的更开: - ```math - \mu_2 = [\begin{matrix}30 & -20\end{matrix}] - ``` +$\mu_2 = [\begin{matrix}30 & -20\end{matrix}]$ 此时测试集的数据分布如下图: ![test_2](https://gitee.com/zhang-yanlin17/prml-21-spring/blob/master/assignment-1/submission/17307110367/img/test_2.png) @@ -89,14 +86,14 @@ #### (2)设置参数使得三个类别离得更近。 - 修改每一类数据的均值,使得它们离得更近: - ```math - \mu_1 = [\begin{matrix}1 & 2\end{matrix}] + 修改每一类数据的均值,使得它们离得更近: + +$\mu_1 = [\begin{matrix}1 & 2\end{matrix}] $ - \mu_2 = [\begin{matrix}15 & 0\end{matrix}] +$\mu_2 = [\begin{matrix}15 & 0\end{matrix}] $ - \mu_3 = [\begin{matrix}10 & 10\end{matrix}] - ``` +$\mu_3 = [\begin{matrix}10 & 10\end{matrix}] $ + 此时测试集的数据分布如下图: @@ -107,10 +104,9 @@ 我们的预期是:在其它条件不变的情况下,高斯分布的方差越大,数据越容易混淆,因此KNN的结果越差。高斯分布的方差越小,数据越集中,KNN的结果越好。 #### 设置参数使得第二和第三类数据的协方差更大。 修改第二,三类数据的方差如下: - - ```math - \sum = [\begin{matrix}73 & 0\\0 & 22\end{matrix}] - ``` + +$\sum = [\begin{matrix}73 & 0\\0 & 22\end{matrix}]$ + 此时测试集的数据分布如下图: ![test_4](https://gitee.com/zhang-yanlin17/prml-21-spring/blob/master/assignment-1/submission/17307110367/img/test_4.png) -- Gitee From c3f3b717762844aaea9eeeb8481d064878a3cb15 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=BC=A0=E8=89=B3=E7=90=B3?= <17307110367@fudan.edu.cn> Date: Sun, 21 Mar 2021 23:58:44 +0800 Subject: [PATCH 19/23] update assignment-1/submission/17307110367/README.md. --- assignment-1/submission/17307110367/README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/assignment-1/submission/17307110367/README.md b/assignment-1/submission/17307110367/README.md index e19f21d..64d08b6 100644 --- a/assignment-1/submission/17307110367/README.md +++ b/assignment-1/submission/17307110367/README.md @@ -5,13 +5,13 @@ 第一类数据800个,标注为0: -$\sum = [\begin{matrix}73 & 0\\0 & 22\end{matrix}] $ +$\sum = [\begin{matrix}73 & 0\\\\0 & 22\end{matrix}] $ $\mu = [\begin{matrix}1& 2\end{matrix}]$ 第二类数据200个,标注为1: -$\sum = [\begin{matrix}21.2 & 0\\0 & 32.1\end{matrix}] $ +$\sum = [\begin{matrix}21.2 & 0\\\\0 & 32.1\end{matrix}] $ $\mu = [\begin{matrix}16& -5\end{matrix}]$ -- Gitee From 86ccfdc980d5bf6ec31882a0333254414e76c4d5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=BC=A0=E8=89=B3=E7=90=B3?= <17307110367@fudan.edu.cn> Date: Sun, 21 Mar 2021 23:59:20 +0800 Subject: [PATCH 20/23] update assignment-1/submission/17307110367/README.md. --- assignment-1/submission/17307110367/README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/assignment-1/submission/17307110367/README.md b/assignment-1/submission/17307110367/README.md index 64d08b6..3977002 100644 --- a/assignment-1/submission/17307110367/README.md +++ b/assignment-1/submission/17307110367/README.md @@ -18,7 +18,7 @@ $\mu = [\begin{matrix}16& -5\end{matrix}]$ 第三类数据1000个,标注为2: -$\sum = [\begin{matrix}10 & 5\\5 & 10\end{matrix}]$ +$\sum = [\begin{matrix}10 & 5\\\\5 & 10\end{matrix}]$ $\mu = [\begin{matrix}10& 22\end{matrix}]$ @@ -105,7 +105,7 @@ $\mu_3 = [\begin{matrix}10 & 10\end{matrix}] $ #### 设置参数使得第二和第三类数据的协方差更大。 修改第二,三类数据的方差如下: -$\sum = [\begin{matrix}73 & 0\\0 & 22\end{matrix}]$ +$\sum = [\begin{matrix}73 & 0\\\\0 & 22\end{matrix}]$ 此时测试集的数据分布如下图: ![test_4](https://gitee.com/zhang-yanlin17/prml-21-spring/blob/master/assignment-1/submission/17307110367/img/test_4.png) -- Gitee From 44e3f20547987822c3ec12521b7674a9f344cc66 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=BC=A0=E8=89=B3=E7=90=B3?= <17307110367@fudan.edu.cn> Date: Mon, 22 Mar 2021 00:04:34 +0800 Subject: [PATCH 21/23] update assignment-1/submission/17307110367/README.md. --- assignment-1/submission/17307110367/README.md | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/assignment-1/submission/17307110367/README.md b/assignment-1/submission/17307110367/README.md index 3977002..74f4673 100644 --- a/assignment-1/submission/17307110367/README.md +++ b/assignment-1/submission/17307110367/README.md @@ -25,7 +25,7 @@ $\mu = [\begin{matrix}10& 22\end{matrix}]$ 将这些图片和对应的标注混合并打乱次序,就能够得到我们数据集。从其中取出80%(1600对)作为我们的训练集。 这是我生成的训练集 -![train_1](https://gitee.com/zhang-yanlin17/prml-21-spring/blob/master/assignment-1/submission/17307110367/img/train_1.png) +![train_1](./img/train_1.png) 取出其中另外的20%(400对)作为我们的测试集。 这是我生成的测试集 @@ -67,7 +67,8 @@ $\mu = [\begin{matrix}10& 22\end{matrix}]$ 7| 11| 0.96 8 | 7|0.945 9| 7| 0.95 -10 | 19|0.955 +10 | 19|0.955 + 取这10次实验准确率的均值,得到模型的最终准确率为0.952。 最终的模型准确率较高。准确率不为1的原因是测试集中蓝色与橙色的点有着一定的交集,对于处于交集中的数据我们也很难分清楚数据点到底属于哪一个类别。这部分的失误对于KNN来说似乎是无法避免的。 -- Gitee From 4f53e676a46360e8784e96a021316b6e33a4e7c2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=BC=A0=E8=89=B3=E7=90=B3?= <17307110367@fudan.edu.cn> Date: Mon, 22 Mar 2021 00:13:52 +0800 Subject: [PATCH 22/23] update assignment-1/submission/17307110367/README.md. --- assignment-1/submission/17307110367/README.md | 94 +++++++++++++------ 1 file changed, 64 insertions(+), 30 deletions(-) diff --git a/assignment-1/submission/17307110367/README.md b/assignment-1/submission/17307110367/README.md index 74f4673..8f6c591 100644 --- a/assignment-1/submission/17307110367/README.md +++ b/assignment-1/submission/17307110367/README.md @@ -3,24 +3,46 @@ ## 一、数据集的生成和划分 首先我以如下参数生成了3个符合二维高斯分布的集合的数据集。 - 第一类数据800个,标注为0: + 第一类数据800个,标注为0: +$$ +\begin{array}{l} +\Sigma=\left[\begin{array}{cc} +73 & 0 \\\\ +0 & 22 +\end{array}\right] \\\\ +\mu=\left[\begin{array}{ll} +1 & 2 +\end{array}\right] +\end{array} +$$ -$\sum = [\begin{matrix}73 & 0\\\\0 & 22\end{matrix}] $ - -$\mu = [\begin{matrix}1& 2\end{matrix}]$ 第二类数据200个,标注为1: - -$\sum = [\begin{matrix}21.2 & 0\\\\0 & 32.1\end{matrix}] $ - -$\mu = [\begin{matrix}16& -5\end{matrix}]$ - +$$ +\begin{array}{l} +\Sigma=\left[\begin{array}{cc} +21.2 & 0 \\\\ +0 & 32.1 +\end{array}\right] \\\\ +\mu=\left[\begin{array}{ll} +16 & -5 +\end{array}\right] +\end{array} +$$ - 第三类数据1000个,标注为2: - -$\sum = [\begin{matrix}10 & 5\\\\5 & 10\end{matrix}]$ - -$\mu = [\begin{matrix}10& 22\end{matrix}]$ + 第三类数据1000个,标注为2: + +$$ +\begin{array}{l} +\Sigma=\left[\begin{array}{cc} +10 & 5 \\\\ +5 & 10 +\end{array}\right] \\\\ +\mu=\left[\begin{array}{ll} +10 & 22 +\end{array}\right] +\end{array} +$$ 将这些图片和对应的标注混合并打乱次序,就能够得到我们数据集。从其中取出80%(1600对)作为我们的训练集。 这是我生成的训练集 @@ -29,7 +51,7 @@ $\mu = [\begin{matrix}10& 22\end{matrix}]$ 取出其中另外的20%(400对)作为我们的测试集。 这是我生成的测试集 -![test_1](https://gitee.com/zhang-yanlin17/prml-21-spring/blob/master/assignment-1/submission/17307110367/img/test_1.png) +![test_1](./img/test_1.png) ## 二、KNN模型的建立 我的KNN模型主要分为两部分。第一部分的fit函数将训练集分为训练集和验证集,根据KNN模型在验证集上的最优结果自动地选择最优的K值。第二部分的predict函数用已选择出的K值代入KNN模型中,预测测试集的标签。 @@ -79,37 +101,49 @@ $\mu = [\begin{matrix}10& 22\end{matrix}]$ #### (1)设置参数使得三个类别分的更开。 修改第二类数据的均值,使得它与另外两类数据分的更开: -$\mu_2 = [\begin{matrix}30 & -20\end{matrix}]$ +$$ +\mu_2 = [\begin{matrix}30 & -20\end{matrix}] +$$ 此时测试集的数据分布如下图: - ![test_2](https://gitee.com/zhang-yanlin17/prml-21-spring/blob/master/assignment-1/submission/17307110367/img/test_2.png) + ![test_2](./img/test_2.png) 多次实验得到模型的准确率为0.99。符合我们的预期。 #### (2)设置参数使得三个类别离得更近。 修改每一类数据的均值,使得它们离得更近: -$\mu_1 = [\begin{matrix}1 & 2\end{matrix}] $ - -$\mu_2 = [\begin{matrix}15 & 0\end{matrix}] $ - -$\mu_3 = [\begin{matrix}10 & 10\end{matrix}] $ - +$$ +\mu_1 = [\begin{matrix}1 & 2\end{matrix}] +$$ + +$$ +\mu_2 = [\begin{matrix}15 & 0\end{matrix}] +$$ +$$ +\mu_3 = [\begin{matrix}10 & 10\end{matrix}] +$$ 此时测试集的数据分布如下图: - ![test_3]( https://gitee.com/zhang-yanlin17/prml-21-spring/blob/master/assignment-1/submission/17307110367/img/test_3.png) + ![test_3](./img/test_3.png) 此时模型的准确率均值只有0.84。符合我们的预期。 ### 3.2 修改高斯分布的方差 我们的预期是:在其它条件不变的情况下,高斯分布的方差越大,数据越容易混淆,因此KNN的结果越差。高斯分布的方差越小,数据越集中,KNN的结果越好。 #### 设置参数使得第二和第三类数据的协方差更大。 - 修改第二,三类数据的方差如下: - -$\sum = [\begin{matrix}73 & 0\\\\0 & 22\end{matrix}]$ + 修改第二,三类数据的方差如下: +$$ +\begin{array}{l} +\Sigma=\left[\begin{array}{cc} +73 & 0 \\\\ +0 & 22 +\end{array}\right] +\end{array} +$$ 此时测试集的数据分布如下图: - ![test_4](https://gitee.com/zhang-yanlin17/prml-21-spring/blob/master/assignment-1/submission/17307110367/img/test_4.png) + ![test_4](./img/test_4.png) 此时模型的准确率均值只有0.74,符合我们的预期。显然KNN的结果在这种情况下并不理想。 @@ -117,12 +151,12 @@ $\sum = [\begin{matrix}73 & 0\\\\0 & 22\end{matrix}]$ #### (1)使各类数据翻倍。 对第一,第二,第三类的训练和测试数据翻倍。 此时测试集的数据分布如下图: - ![test_5](https://gitee.com/zhang-yanlin17/prml-21-spring/blob/master/assignment-1/submission/17307110367/img/test_5.png) + ![test_5](./img/test_5.png) 对模型运行多次求均值,得到模型的准确率约为0.956。准确率相比于原先提升了一点点。这点提升微乎其微,背后的原因可能是数据翻倍时同样也使得数据间的交叠翻倍,对于这部分的交叠数据,模型很难判别正确。因此准确率没有什么改变。 #### (2)使第一类数据翻倍 只对第一类的训练和测试数据翻倍。 此时测试集的数据分布如下图: - ![test_6](https://gitee.com/zhang-yanlin17/prml-21-spring/blob/master/assignment-1/submission/17307110367/img/test_6.png) + ![test_6](./img/test_6.png) 对模型运行多次求均值,得到模型的准确率约为0.96。可见准确率提升了一些。这是由于第一类的数据翻倍,导致在数据交叠区域数据点更倾向于被判别为第一类数据,因此准确率必定会有一定的提升 \ No newline at end of file -- Gitee From 8291779aa33462b344bb2067cf9894984dd67bd2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=BC=A0=E8=89=B3=E7=90=B3?= <17307110367@fudan.edu.cn> Date: Mon, 22 Mar 2021 00:16:30 +0800 Subject: [PATCH 23/23] update assignment-1/submission/17307110367/README.md. --- assignment-1/submission/17307110367/README.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/assignment-1/submission/17307110367/README.md b/assignment-1/submission/17307110367/README.md index 8f6c591..f34b168 100644 --- a/assignment-1/submission/17307110367/README.md +++ b/assignment-1/submission/17307110367/README.md @@ -142,7 +142,8 @@ $$ \end{array} $$ - 此时测试集的数据分布如下图: + 此时测试集的数据分布如下图: + ![test_4](./img/test_4.png) 此时模型的准确率均值只有0.74,符合我们的预期。显然KNN的结果在这种情况下并不理想。 -- Gitee