Python 在scikit learn中实现K邻域分类器,每个对象具有3个特征
我想用scikit学习模块()实现Kneighbors分类器 我从我的图像中检索到了坚实、伸长和腐殖质的特征。 如何准备这些数据进行培训和验证? 我必须为我从图像中检索到的每个对象创建一个包含3个特征[Hm、e、s]的列表(从1个图像中有更多对象) 我读了这个例子() X和y是两个特征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
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, ..., ]