Python

「実践力を身につけるPythonの教科書」の「Scikit learn」でエラーが出たので対処した話

こんにちは,しまさん(@nitkcdadon)です.

「実践力を身につけるPythonの教科書」を使って勉強をしていたのですがChapter5-4にある機械学習の部分で少しつまずきました(p233).

「Scikit learnではじめる機械学習」の部分で以下のエラーにあいました.

DeprecationWarning: the imp module is deprecated in favour of importlib; see the module's documentation for alternative uses import imp

使用したコードはこれです.

from sklearn import datasets

今回はこのエラー対処方法について紹介します.

環境

macOS Mojave(10.14)

pyenv Python3.6.7

scikit-image 0.14.1
scikit-learn 0.20.0
scipy 1.1.0

impをimportlibへ書き換える

まずはエラーの全文を見てみましょう.

/Users/USERNAME/.pyenv/versions/3.6.7/lib/python3.6/site-packages/sklearn/externals/joblib/externals/cloudpickle/cloudpickle.py:47: DeprecationWarning: the imp module is deprecated in favour of importlib; see the module's documentation for alternative uses

import imp

となっています.

ふむ,cloudpickle.pyの中にあるimport impを書き換えてやればいいだけのようですね.

vim /Users/USERNAME/.pyenv/versions/3.6.7/lib/python3.6/site-packages/sklearn/externals/joblib/externals/cloudpickle/cloudpickle.py
# import imp

import importlib

書き直したら…

エラー出ないぞ!!!!!!!!やりました!!!!

次のエラーや…(cross_validation)

進めていくとsklearnのcross_validationを使う場所があります(p236).

ですがsklearn0.20ではもうありません.

該当部分を「model_selection」に書き換えてください.

そうするとちゃんと結果が出ます.

分類器の情報= SVC(C=1.0, cache_size=200, class_weight=None, coef0=0.0,
  decision_function_shape='ovr', degree=3, gamma=0.001, kernel='rbf',
  max_iter=-1, probability=False, random_state=None, shrinking=True,
  tol=0.001, verbose=False)
正解率= 0.9911111111111112
レポート=
               precision    recall  f1-score   support

           0       1.00      1.00      1.00        43
           1       0.98      1.00      0.99        45
           2       1.00      0.98      0.99        42
           3       1.00      1.00      1.00        34
           4       1.00      1.00      1.00        59
           5       1.00      0.98      0.99        44
           6       1.00      1.00      1.00        44
           7       0.98      1.00      0.99        58
           8       0.98      1.00      0.99        40
           9       0.97      0.95      0.96        41

   micro avg       0.99      0.99      0.99       450
   macro avg       0.99      0.99      0.99       450
weighted avg       0.99      0.99      0.99       450

さいごに

今回はScikit learnを使用する際に出たエラーを対処しました.

「実践力を身につけるPythonの教科書」はチャットのWebアプリを作ったり,コマンド実装したり作りながら学べるので楽しいですね.

この勢いでさくっと終わらせます.

参考

[入門]Python初心者が圧倒的成長するために使うサービス,本Python初心者向けの本,Webサービスについて網羅的に紹介をしています.Pythonの勉強で私が実際に使用した本です.入門書をさらに細分化し,学ぶならどのレベルがいいのかわかりやすくしています....
ABOUT ME
しまさん
てくてくぷれいす運営者のしまさんです. 高専→大学編入してから行動的な学生ブロガー? / 自身の変化を求めてブログを6月から開始 / グレープフルーツと本が好き / Distributed SNSやSecurity,プログラミングやVR等のIT系や自身の編入体験談や高専のこと,大学生活を書いてます(たまに小ネタ) / Progateで勉強中