You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用无监督机器学习算法基于现有特征生成评分/排名新列

适用的无监督算法及实现方案

以下所有方案均不需要使用z-score、归一化、标准化类传统统计预处理,可直接输入原始10维特征计算评分:

1. 孤立森林(Isolation Forest)

适用场景:需要评分衡量样本的异常/罕见程度时首选。该算法基于特征空间分割逻辑计算得分,对特征尺度不敏感,输出结果可直接作为评分使用,得分越高代表样本越符合多数样本的分布。
实现步骤:

  • 直接输入原始特征矩阵训练模型,核心参数n_estimators(树的数量)、max_samples(每棵树采样的样本数)用默认值即可拿到可用结果
  • 调用score_samples()方法直接得到每个样本的评分
from sklearn.ensemble import IsolationForest
import pandas as pd

# df为你的原始10特征数据集
clf = IsolationForest(n_estimators=100, random_state=42)
clf.fit(df)
# 输出评分:值越大样本越正常,越小越异常
df['score'] = clf.score_samples(df)
# 生成排名:得分越高排名越靠前
df['rank'] = df['score'].rank(ascending=False)

2. PCA重构误差评分

适用场景:需要评分衡量样本对整体特征分布的代表性时使用。该算法基于协方差矩阵分解计算,不需要提前做特征缩放,重构误差越大说明样本越偏离主成分表征的主流分布。
实现步骤:

  • 输入原始特征矩阵训练PCA模型,保留的主成分数量建议设为8-9(覆盖大部分特征方差)
  • 对原始特征做降维后再重构,计算原始特征和重构特征的均方误差作为评分
from sklearn.decomposition import PCA
import numpy as np

pca = PCA(n_components=8, random_state=42)
pca.fit(df)
# 降维后重构特征
X_reconstructed = pca.inverse_transform(pca.transform(df))
# 计算重构误差作为评分
df['score'] = np.mean((df - X_reconstructed)**2, axis=1)
# 生成排名:误差越小(代表性越强)排名越靠前
df['rank'] = df['score'].rank(ascending=True)

3. K近邻平均距离评分

适用场景:需要评分衡量样本周围的局部密度时使用。如果需要平衡各特征贡献又不想用归一化,可以先对每个特征单独做秩转换(不属于你提到的三类标准化方法),消除尺度差异后再计算距离。
实现步骤:

  • 可选预处理:对每个特征单独做秩转换,得到每个特征下样本的排名
  • 对每个样本计算它到最近K个邻居的平均距离作为评分,距离越大说明样本越孤立
from sklearn.neighbors import NearestNeighbors

# 可选:做秩转换平衡各特征权重,不需要可直接用原始df
df_ranked = df.rank()
# K值建议设为总样本数的1%-5%
knn = NearestNeighbors(n_neighbors=5)
knn.fit(df_ranked)
distances, _ = knn.kneighbors(df_ranked)
# 取平均距离作为评分
df['score'] = np.mean(distances, axis=1)
# 生成排名:距离越小(密度越高)排名越靠前
df['rank'] = df['score'].rank(ascending=True)

以上方案输出的评分可以直接使用,也可以根据业务需求调整评分的升降序逻辑适配排名规则。

内容的提问来源于stack exchange,提问作者Yereke

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 22:06:03