SPSS 命令: SPSS KNN
在浏览器中做最近邻元素分析(KNN)
最近邻元素分析根据训练样本中 k 个最相似的个案,对每个个案进行分类或数值预测。
免费 · 无需注册 · 文件留在本机 · 更新于 2026年10月18日
能告诉你什么
Crosstabs 在你的设备上运行 SPSS KNN,提供调整归一化、欧氏或城市街区距离、V 折交叉验证选择 k、可选的前向特征选择,以及随机保留样本上的误差率。
- 使用所选特征时,目标的分类准确度(错误百分比)或预测精度(平方和误差与相对误差)。
- 哪个 k 最合适:设定范围内每个 k 的交叉验证误差。
- 哪些特征重要:来自前向特征选择和预测变量重要性图。
- 模型在哪些类别之间容易混淆:见训练与保留样本的分类表。
适用场景
适合使用
- 根据少数几个画像变量将新受访者分配到已有细分中,且不假定线性边界。
- 在拟合 Logistic 或判别模型之前,作为一个快速且假设较少的基准模型。
- 以相似个案的平均值或中位数预测一个连续值(消费、得分)。
改用其他方法
- 需要解释每个预测变量如何影响结果:KNN 不提供系数;请使用 Logistic 回归或决策树。
- 存在大量无关特征:距离会被噪声淹没;请开启特征选择或先做降维。
- 必须考虑调查权重:KNN 不使用个案权重,面板会给出提示。
- 训练样本很小,尤其是某些类别只有少数个案时。
在 Crosstabs 中如何操作
- 01
打开数据
在工作区打开文件并切换到“统计”模式。
- 02
选择最近邻元素分析
在“机器学习”组中选择“最近邻元素分析”(KNN)。
- 03
设置目标和特征
在“变量”中选择“目标测量级别”(分类(分类预测)或标度(数值预测))、“目标”,以及“分类特征”和“标度特征”;保持勾选“标准化标度特征(调整归一化)”。
- 04
设置近邻
在“近邻”中保持勾选“自动选择 k”并设置“最小 k”“最大 k”,或取消勾选并设置“近邻数(k)”;选择欧氏距离或城市街区距离,可选勾选“计算距离时按重要性加权特征”。
- 05
特征选择与分区
可选勾选“执行前向特征选择”并设置“停止规则”。在“分区”中设置“训练样本(%)”“交叉验证折数”和“随机种子”,然后点击“运行”。
计算示例
以下结果由 Crosstabs 引擎在构建本页时根据模拟数据实际计算得出,并非手工填写。
数据
150 名模拟客户,特征为年收入(千元)、收入中用于消费的比例(%)和套餐档位(basic、plus、pro),目标为三类客户细分(储蓄型、均衡型、消费型)。按带种子的随机分区,约 70% 个案为训练样本,30% 为保留样本。
| 设置 | 值 |
|---|---|
| 最近邻数(k) | 5 |
| 距离 | 欧氏距离 |
| 模型中的特征 | income, spend_share, plan |
| 训练 — 错误百分比 | 28.2% |
| 保留 — 错误百分比 | 27.7% |
训练个案由其最近的其他训练个案预测(留一法);保留个案由训练个案预测。
| k | 错误百分比 |
|---|---|
| 3 | 31.0% |
| 4 | 36.9% |
| 5 | 29.0% |
| 6 | 33.0% |
| 7 | 31.9% |
| 8 | 32.9% |
| 9 | 32.9% |
误差为 5 个交叉验证折的平均值;并列时取较小的 k。
| 观测值 | 均衡型 | 储蓄型 | 消费型 | 正确百分比 |
|---|---|---|---|---|
| 均衡型 | 7 | 1 | 4 | 58.3% |
| 储蓄型 | 1 | 10 | 0 | 90.9% |
| 消费型 | 7 | 0 | 17 | 70.8% |
| 总百分比 | 31.9% | 23.4% | 44.7% | 72.3% |
结果解读
在 k = 3 至 9 之间做 5 折交叉验证,选中 k = 5。使用该 k 值,47 名保留客户中有 27.7% 被错误分类(正确率 72.3%),训练样本的留一法误差为 28.2%。保留个案没有参与 k 的选择,因此保留样本误差才是模型在新客户上表现的可靠估计。
输出表格说明
- 个案处理摘要
- 训练和保留样本中的个案数、有效个案数,以及因目标或特征缺失而被排除的个案数。
- 模型摘要
- 所用 k 值、距离、模型中的特征,以及训练样本(留一法)和保留样本的误差:分类目标为错误百分比,标度目标为平方和误差。
- 分类
- 观测类别 × 预测类别的计数及正确百分比,分别针对训练和保留分区(分类目标)。
- k 选择误差记录
- 每个候选 k 的交叉验证误差(各折平均);并列时取较小的 k。开启特征选择时为训练样本的留一法误差。
- 特征选择误差记录
- 特征进入的顺序及每一步后的误差,随后给出预测变量重要性图。
前提假设与注意事项
- 相似的个案具有相似的目标:所选特征上的距离必须对该问题有意义。
- 启用调整归一化时,标度特征按训练个案缩放到 −1…1,避免某个特征因单位而占主导;分类特征采用 one-of-c 编码。
- 目标或任一特征缺失的个案被排除;不使用个案权重。
- 训练误差按留一法计算;保留样本误差才是对新个案表现的可靠估计。
结果如何验证
KNN 与一个 Python 参考实现对照:该实现在独立编码的矩阵上用 scikit-learn 的暴力 NearestNeighbors 查找近邻,并重新实现 SPSS 的投票、平局处理、Laplace 概率、k 选择和特征选择规则。在固定 k、城市街区距离下交叉验证选 k、两种停止规则、按重要性加权以及标度目标的均值或中位数预测等情形下,近邻集合与预测类别完全一致,概率与误差至少在小数点后 8 位一致。 验证证据(英文)
常见问题
k 是如何选择的?
勾选“自动选择 k”时,从“最小 k”到“最大 k”的每个值都在训练个案上做 V 折交叉验证评分,误差最小者胜出,并列时取较小的 k。随机种子保证折划分可重现。
欧氏距离还是城市街区距离?
欧氏距离是默认选项,适合大多数数据。城市街区距离对绝对差求和,因此某个特征上的大差距所占分量比欧氏距离下小;可两者都试,比较保留样本误差。
为什么训练误差和保留样本误差接近?
训练个案按留一法预测——每个个案由其最近的其他训练个案预测——因此训练误差不会因个案把自己当作近邻而虚假地完美。
KNN 能预测数值型目标吗?
可以。将“目标测量级别”设为“标度(数值预测)”,预测值为 k 个近邻的平均值或中位数,面板报告平方和误差和相对误差。
我的数据会被上传吗?
不会。距离计算、交叉验证和特征选择都在浏览器的 Web Worker 中运行。
相关过程
- 朴素贝叶斯NAIVEBAYES
- 多层感知器MLP
- 判别分析DISCRIMINANT
- 二元 Logistic 回归LOGISTIC REGRESSION
- 决策树(CHAID、CRT)TREE
- K-均值聚类QUICK CLUSTER
- 免费的 SPSS 替代工具:支持范围
用你自己的数据运行最近邻元素分析(KNN)
打开 .sav、CSV 或 Excel 文件。所有计算都在浏览器中完成,文件不会离开你的设备。
SPSS 是 IBM Corp. 的商标。Crosstabs 与 IBM 无关联,也未获得 IBM 认可。