

現在、手書き文字の前処理のやり方を学んでいる学生です。どうしても原因が分からないエラーが出たので、プロフェッショナルの皆様の力をお借りしたいと思い、質問いたします。

画像の明瞭化、グレースケール化、縮小化、明暗反転、その後の、Imageオブジェクトの特徴ベクトルへの変換までできたのですが、それ以降の「特徴ベクトルをpredict()メソッドに渡す」という部分ができません。

「This LogisticRegression instance is not fitted yet」というエラーが出てしまいます。

コードは以下です。

[code]

    pip install pillow
    
    import matplotlib.pyplot as plt
    
    from PIL import Image
    
    im = Image.open('mydigit.jpg')
    fig, ax = plt.subplots()
    ax.imshow(im)
    
    from PIL import ImageEnhance
    
    im_enhanced = ImageEnhance.Brightness(im).enhance(2.0)
    fig, ax = plt.subplots()
    ax.imshow(im_enhanced)
    
    im_gray = im_enhanced.convert(mode='L')
    fig, ax = plt.subplots()
    ax.imshow(im_gray, cmap='gray')
    
    im_8x8 = im_gray.resize((8, 8))
    fig, ax = plt.subplots()
    ax.imshow(im_8x8, cmap='gray')
    
    from PIL import ImageOps
    
    im_inverted = ImageOps.invert(im_8x8)
    fig, ax = plt.subplots()
    ax.imshow(im_inverted, cmap='gray')
    
    import numpy
    
    X_im2d = numpy.asarray(im_inverted)
    X_im2d
    
    X_im1d = X_im2d.reshape(-1)
    X_im1d
    
    X_multiplied = X_im1d * (16 / 255)
    X_multiplied
    
    from sklearn.linear_model import LogisticRegression
    clf = LogisticRegression(random_state=0, solver='liblinear', multi_class='auto')
    
    clf.predict(X_multiplied)[0]
    
[/code]

以下エラー文

[code]

    NotFittedError                            Traceback (most recent call last)
    <ipython-input-97-0e0508a3ae41> in <module>
    ----> 1 clf.predict(X_multiplied)[0]
    
    ~\Test\lib\site-packages\sklearn\linear_model\base.py in predict(self, X)
        287             Predicted class label per sample.
        288         """
    --> 289         scores = self.decision_function(X)
        290         if len(scores.shape) == 1:
        291             indices = (scores > 0).astype(np.int)
    
    ~\Test\lib\site-packages\sklearn\linear_model\base.py in decision_function(self, X)
        261         if not hasattr(self, 'coef_') or self.coef_ is None:
        262             raise NotFittedError("This %(name)s instance is not fitted "
    --> 263                                  "yet" % {'name': type(self).__name__})
        264 
        265         X = check_array(X, accept_sparse='csr')
    
    NotFittedError: This LogisticRegression instance is not fitted yet
    
[/code]


CC BY-SA 4.0
2020-01-15T06:49:59.507
62256
2020-01-15T10:59:05.290
2020-01-15T10:59:05.290
36669
question
python
手書き文字の前処理のやり方


学習していないのに、予測できないですよってことです。

scikit-
learnであれば、どのアルゴリズムを使う場合でも、基本的に`fit()`で学習して、`predict()`で予測します。もちろん学習済みのモデルがあれば、それをロードしてもいいですが。

そもそも、予測は「手書き文字の前処理」ではないですね。


CC BY-SA 4.0
2020-01-15T08:02:12.137
62259
2020-01-15T08:38:24.033
2020-01-15T08:38:24.033
21092
21092
62256
answer