質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

89.20%

sklearnのエラーの意味がわからない。

受付中

回答 0

投稿

  • 評価
  • クリップ 1
  • VIEW 2,752

前提・実現したいこと

手書き数字の5をサイキットラーンで画像認識させたいのですが、エラーが出てできないです。エラーのいみんもよくわからないので、教えていただきたいです。

発生している問題・エラーメッセージ

[ 0.  0.  0.  0.  0.  0.  0.  0.  1.  9.  7.  7.  7.  7.  2.  0.  1.  8.

  1.  1.  0.  0.  0.  0.  1.  6.  0.  0.  0.  0.  0.  0.  1.  9.  5.  6.
  2.  1.  0.  0.  0.  4.  3.  3.  4.  8.  1.  0.  0.  0.  0.  0.  2.  9.
  3.  0.  0.  3.  8.  8.  8.  2.  0.  0.]
    予測モデルを保存しました= digit-clf.pkl
    Traceback (most recent call last):
    File "predict_digit.py", line 59, in <module>
    main()
    File "predict_digit.py", line 56, in main
    predict_digits(data)
    File "predict_digit.py", line 28, in predict_digits
    n = clf.predict([data])
    File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/sklearn/svm/base.py", line 573, in predict
    y = super(BaseSVC, self).predict(X)
    File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/sklearn/svm/base.py", line 310, in predict
    X = self._validate_for_predict(X)
    File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/sklearn/svm/base.py", line 457, in _validate_for_predict
    check_is_fitted(self, 'support_')
    File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/sklearn/utils/validation.py", line 690, in check_is_fitted
    raise _NotFittedError(msg % {'name': type(estimator).name})
    sklearn.exceptions.NotFittedError: This SVC instance is not fitted yet. Call 'fit' with appropriate arguments before using this method.
エラーメッセージ

該当のソースコード

```ここに言語を入力
ここにご自身が実行したソースコードを書いてください
import os, sys, math
from sklearn import datasets, svm
from sklearn.externals import joblib

 モデルデータファイル名

DIGITS_PKL = "digit-clf.pkl"

予測モデルを作成する

def train_digits():

手書き数字データを読み込む

digits = datasets.load_digits()

 訓練する

data_train = digits.data
label_train = digits.target
clf = svm.SVC(gamma=0.001)

 予測モデルを保存

joblib.dump(clf, DIGITS_PKL)
print("予測モデルを保存しました=", DIGITS_PKL)
return clf

データから数字を予測する

def predict_digits(data):

モデルファイルを読み込む

if not os.path.exists(DIGITS_PKL):
clf = train_digits() # モデルがなければ生成
clf = joblib.load(DIGITS_PKL)

 予測

n = clf.predict([data])
print("判定結果=", n)

 手書き数字画像を8×8グレイスケールのデータ配列に変換

def image_to_data(imagefile):
import numpy as np
from PIL import Image
image = Image.open(imagefile).convert('L')
image = image.resize((8,8), Image.ANTIALIAS)
img = np.asarray(image, dtype=float)
img = np.floor(16 -16 * (img / 256))

 変換後の画像を表示

 import matplotilb.pyplot as plt

 plt.imshow(img)

 plt.gray()

 plt.show()

img = img.flatten()
print(img)
return img

def main():

 コマンドライン引数を得る

if len(sys.argv) <= 1:
print("USAGE:")
print("python3 predict_digit.py imagefile")
return
imagefile = sys.argv[1]
data = image_to_data(imagefile)
predict_digits(data)

if name == 'main':
main()

img = np.asarray(image, dtype=float)
img = np.floor(16 -16 * (img / 256))

 変換後の画像を表示

 import matplotilb.pyplot as plt

 plt.imshow(img)

 plt.gray()

 plt.show()

img = img.flatten()
print(img)
return img

def main():

 コマンドライン引数を得る

if len(sys.argv) <= 1:
print("USAGE:")
print("python3 predict_digit.py imagefile")
return
imagefile = sys.argv[1]
data = image_to_data(imagefile)
predict_digits(data)

if name == 'main':
main()

試したこと

課題に対してアプローチしたことを記載してください

補足情報(言語/FW/ツール等のバージョンなど)

より詳細な情報

  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 過去に投稿した質問と同じ内容の質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

質問への追記・修正の依頼

  • LouiS0616

    2017/07/10 15:28

    コードはバッククオート三つ```で括ってください。よくわからないようなら、マークダウン記法について調べてください。

    キャンセル

  • LouiS0616

    2017/07/10 15:29

    というか、エラーに解決策書いてあるじゃないですか。

    キャンセル

  • _Victorique__

    2017/07/10 16:00

    エラーをよく見ましょう。エラーの意味が分からなければ調べましょう。それでも解決できない場合はこちらに質問してください。

    キャンセル

  • 退会済みユーザー

    2017/07/12 21:25

    複数のユーザーから「やってほしいことだけを記載した丸投げの質問」という意見がありました
    「質問を編集する」ボタンから編集を行い、調査したこと・試したことを記入していただくと、回答が得られやすくなります。

まだ回答がついていません

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 89.20%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

同じタグがついた質問を見る