Python 在scikit learn中实现K邻域分类器,每个对象具有3个特征

Python 在scikit learn中实现K邻域分类器,每个对象具有3个特征,python,machine-learning,scikit-learn,nearest-neighbor,classification,Python,Machine Learning,Scikit Learn,Nearest Neighbor,Classification,我想用scikit学习模块()实现Kneighbors分类器 我从我的图像中检索到了坚实、伸长和腐殖质的特征。 如何准备这些数据进行培训和验证? 我必须为我从图像中检索到的每个对象创建一个包含3个特征[Hm、e、s]的列表(从1个图像中有更多对象) 我读了这个例子() X和y是两个特征 samples = [[0., 0., 0.], [0., .5, 0.], [1., 1., .5]] from sklearn.neighbors import NearestNeighbors neigh

我想用scikit学习模块()实现Kneighbors分类器

我从我的图像中检索到了坚实、伸长和腐殖质的特征。 如何准备这些数据进行培训和验证? 我必须为我从图像中检索到的每个对象创建一个包含3个特征[Hm、e、s]的列表(从1个图像中有更多对象)

我读了这个例子()

X和y是两个特征

samples = [[0., 0., 0.], [0., .5, 0.], [1., 1., .5]]
from sklearn.neighbors import NearestNeighbors
neigh = NearestNeighbors(n_neighbors=1)
neigh.fit(samples) 

print(neigh.kneighbors([1., 1., 1.])) 
为什么在第一个示例中使用X和y,现在使用sample?

您的第一段代码在
1d
数据上定义了一个分类器。
X
表示特征向量

[0] is the feature vector of the first data example
[1] is the feature vector of the second data example
....
[[0],[1],[2],[3]] is a list of all data examples, 
  each example has only 1 feature.
y
表示标签

下图显示了这一想法:

  • 绿色节点是标签为0的数据
  • 红色节点是标签为1的数据
  • 灰色节点是具有未知标签的数据
这要求分类器为每个标签提供成员概率估计

由于两个灰色节点都位于靠近绿色的位置,因此下面的输出是有意义的

    [0] # green label
    [[ 0.66666667  0.33333333]]  # green label has greater probability
第二段代码实际上有关于
scikit learn
的良好说明: 在下面的示例中,我们从表示数据集的数组构造NeighborsClassifier类,并询问与[1,1,1]最近的点是谁


最后一个问题:如何选择标签?为什么它是[0,0,1,1],而不是[0,1,2,3]或[0,0,0,1]?我遇到了错误:“使用序列设置数组元素”,因为fit函数需要:X:{array-like,稀疏矩阵,BallTree,cKDTree}。我有一张名单!如果我在特征向量中插入所有7个humoments:“查询数据维度必须与BallTree数据维度匹配”,我还尝试在numpy数组中对其进行转换,同样的错误:“使用序列设置数组元素”。标签是[0,0,1,1]而不是[0,1,2,3],因为在该示例中,我们只有2个类,而不是4个类。如果最左边的三个节点实际上是同一个类,那么它可能是[0,0,0,1]。你能为你的第二个问题在不同的帖子中发布你的代码吗?但我有292个对象,我如何选择类的数量?我在一个新问题中发布了我的代码,你们的分类目标是什么?这些图像描述了不同的主题/图案/颜色/对象吗?如果是,则为每种类型提供不同的标签。无论是0,1,2还是“红色”、“白色”、“黑色”,标签的值都无关紧要。重要的是他们有多少价值观。我还回答了你的另一篇帖子。 print(neigh.predict([[1.1]]))
    print(neigh.predict_proba([[0.9]]))
    [0] # green label
    [[ 0.66666667  0.33333333]]  # green label has greater probability
>>> samples = [[0., 0., 0.], [0., .5, 0.], [1., 1., .5]] >>> from sklearn.neighbors import NearestNeighbors >>> neigh = NearestNeighbors(n_neighbors=1) >>> neigh.fit(samples) NearestNeighbors(algorithm='auto', leaf_size=30, ...) >>> print(neigh.kneighbors([1., 1., 1.])) (array([[ 0.5]]), array([[2]]...))
X = [ [h1, e1, s1], 
      [h2, e2, s2],
      ...
    ]
y = [label1, label2, ..., ]