我尝试为python 中“统计学习简介”中提供的smarket 数据集实现逻辑回归、线性判别分析和 KNN 。
逻辑回归和 LDA 在实施方面非常简单。这是测试数据集上的混淆矩阵。
它们都非常相似,精度几乎相同。但我尝试通过绘制损失与 K 图来找到 KNN 的 K:
并选择了一个 125 左右的 K 来得到这个混淆矩阵(相同的测试数据集)
尽管 KNN 给出了大约 0.61 的更高准确度,但混淆矩阵与逻辑和 LDA 矩阵有很大不同,它们的真阴性和真阳性要高得多。我真的不明白为什么会这样。任何帮助,将不胜感激。
这是我计算 KNN 分类器损失的方法(使用 Sklearn)。由于 Y 值是定性的,因此无法使用 MSE。
k_set = np.linspace(1,200, dtype=int)
knn_dict = {}
for k in k_set:
model = KNeighborsClassifier(k)
model.fit(train_X, train_Y)
y_pred = model.predict(test_X)
loss = 1 - metrics.accuracy_score(test_Y, y_pred)
knn_dict[k] = loss
model = KNeighborsClassifier(K)
model.fit(train_X, train_Y)
knn_y_pred = model.predict(test_X)
knn_cnf_matrix = metrics.confusion_matrix(test_Y, knn_y_pred)
对数据科学来说非常新。我希望我已经提供了足够的背景/上下文。如果需要更多信息,请告诉我。