gpt4 book ai didi

python - Scikit Learn SGDClassifier 预测问题

转载 作者:行者123 更新时间:2023-11-30 09:12:06 25 4
gpt4 key购买 nike

我可能无法在这里找到我需要的帮助,但我希望互联网上的聪明编码者可以帮助我。我正在尝试使用 Python 的 Sci-Kit learn SGDClassifier 对物理事件进行分类。这些物理事件创建了轨道图像(黑白),我正在尝试使用分类器对它们进行分类。这些图像大约为 500 * 400 像素(不太确定),但出于机器学习的目的,它给了我一个 200640 维向量。我有 20000 个火车事件序列化在 200 个事件的数据包中。然后我还有额外的 2000 个火车事件。以下是我如何进行提取和训练。

>>> from sklearn.linear_model import SGDClassifier
>>> import dill
>>> import glob
>>> import numpy as np

>>> clf = SGDClassifier(loss='hinge')

>>>for file in glob.glob('./SerializedData/Batch1/*.pkl'):
... with open(file, 'rb') as stream:
... minibatch = dill.load(stream)
... clf.partial_fit(minibatch.data, minibatch.target, classes=np.classes([1, 2]))
(Some output stuff about the classifier)
>>>

这是我的代码的火车部分,或者至少是它的粗略缩写。我的分类器初始化确实有点复杂。只是为了了解更多信息,minibatch.data 给出了形状和特征的 numpy 数组,因此这是一个“二维 numpy 数组”,形状为 200,特征为 200640。要清除那里是描述每个图像的像素值的数组,然后将其中的 200 个包含在一个大数组中。 minibatch.target 给出每个事件的所有类值的 numpy 数组

但是,在对 20000 个事件进行训练之后,我尝试测试分类器,但它似乎根本没有经过训练:

>>> file = open('./SerializedData/Batch2/train1.pkl', 'rb')
>>> test = dill.load(file)
>>> clf.predict(test.data)
array([ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2])
>>> clf.score(test.data)
.484999999999999999999

正如您所看到的,分类器正在为所有测试事件预测类别 2。目前我能想到的唯一问题是我没有足够的测试事件,但我发现这很难相信。有人对这个困境有任何建议/解决方案/答案吗?

最佳答案

除非您的图像非常简单,否则如果您的输入是图像,则仅使用 scikit learn 不会获得良好的结果。您需要以某种方式转换图像以获得实际有用的特征,像素值会产生糟糕的特征。您可以尝试使用 scikit-image 中的一些工具创建更好的特征,或者您可以使用一些预先训练的卷积神经网络来为您提取特征。如果您感觉更具冒险精神,您可以尝试训练 CNN 来专门针对您的问题进行分类。

关于python - Scikit Learn SGDClassifier 预测问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32725990/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com