我正在使用scikit-learn KNeighborsClassifier对具有4个输出类的数据集进行分类。以下是我正在使用的代码:
ApplicationWindow {
id:main_win
visible: true
width: 640
height: 480
title: qsTr("Player")
property int idx: 0
property bool isActive: true
Text {
id:text1
anchors.top: parent.top
width: 240
height: 35
text: myModel.folder.toString()
font.family: "Helvetica"
font.pointSize: 20
color: "blue"
focus: true
}
GridView {
id: grid_main
// annchors
anchors{
bottom: parent.bottom
right: parent.right
left: parent.left
top: text1.bottom
}
cellWidth: 100; cellHeight: 100
focus: true
currentIndex: 0
...
}
模型正常运行。但是,我想为每个样本点提供用户定义的权重。代码当前使用距离的倒数来使用knn = neighbors.KNeighborsClassifier(n_neighbors=7, weights='distance', algorithm='auto', leaf_size=30, p=1, metric='minkowski')
参数进行缩放。
我想继续保持逆距离缩放,但对于每个样本点,我也有一个概率权重。我想在距离计算中将其作为权重应用。例如,如果metric='distance'
是测试点,而x
是计算距离的两个最近邻居,那么我希望将距离计算为(sum | xy |)* w < sub> y 和(sum | xz |)* w z 。
我试图定义一个传递给y,z
参数的函数,但是我还希望除了用户定义的权重之外还保持逆距离缩放,我不知道反距离缩放函数。我无法从文档中找到答案。
有什么建议吗?
答案 0 :(得分:0)
KNN没有样本权重,这与其他估算器不同,例如决策树。 就个人而言,我认为这是令人失望的。让KNN支持样本权重并不难,因为预测的标签是其邻居的多数票。 愚蠢的四处走动是根据样本重量自己生成样本。例如,如果样品的重量为2,则使其出现两次。
答案 1 :(得分:0)
sklearn.neighbors.KNeighborsClassifier.score()
有一个sample_weight
参数。那是您要找的东西吗?