楓プログラミングスタジオ たっきーBlog

JEUGIAカルチャーセンター桑名からスタートした「はじめてのプログラミング教室」は、『楓プログラミングスタジオ』に生まれ変わりました。小学生と中学生の子どもがメインですが大人初心者も大歓迎。教室でのワークの様子やプログラミングに関する記事を掲載します。弥富教室の体験と講座のお申込みは、https://kaede-pgstudio.net/contact/ まで。桑名教室は、JEUGIAカルチャーセンター桑名(Tel:0594-27-7211)まで。

プロのエンジニアが持つべき考え方

  • 今朝Qiitaに投稿されていた『エンジニアで稼ぐために大切な20のコト』を読んで、感動しました。
  • 他の業種にも共通することは多いと思いますが、ITエンジニアは特に頷くこと多いと思います。
  • 文章は少し尖がっていますが、自分と大切な人を守るためには(先ず己に素直に生きるために)、この考え方は必要だと思います。
  • プロのエンジニアの方、特にサラリーマンの方必見です。
  • これから実践して生きます!!

qiita.com

Python からテキストファイルの操作 ~分かりづらいread, readline, readlinesの違いを整理~

パイソンで分かりづらいread, readline, readlinesの違いを整理しよー

こんばんわ、たっきーです。

  • 前回の教室で、sho君がチャレンジしたPython からテキストファイル操作の発展系を学びましょう。
  • 分かりづらいread, readline, readlinesの違いを整理します。

  • テキストファイルを操作する場合、読み出しに関わるメソッドは3つあります。

メソッド 説明
read() ファイルを全て読み込みstr型に格納、その文字列データに対して処理を行う
readline() 1行毎に読み込みstr型に格納、その処理を繰り返す
readlines() ファイルを全て読み込みlist型に格納、1行毎に処理を行う
  • 説明を読んでも分かりませんね。動作や使い方が異なりますので、実際に書いて試しましょう!!
  • 各メソッドのサンプルを使ったプログラムを作成しました。同じディレクトリに text.txt のファイルを作成し、テキストを数行準備してください。
# coding: utf-8
# readの場合 (ファイルのEOFまで全て読み出す)
file1 = open("text.txt", mode="r")
str1 = file1.read()
file1.close()
print ("+"*50)
print ("readメソッドで読み込んだ場合の型 ⇒ ", end="")
print (type(str1))          #readで読み出したstr1には改行コードが含まれる
print (str1)
print ("")

# readline (1行ずつ文字列として読み出す)
file1 = open("text.txt", mode="r")
str1 = file1.readline()
print ("+"*50)
print ("readlineメソッドで読み込んだ場合の型 ⇒ ", end="")
print (type(str1))
while str1:                 #EOFまで読み出す
    print (str1, end="")    #readlineで読み出したstr1には改行コードが含まれる, 各printにも改行コードが付加されるためここではカットする
    str1 = file1.readline()
file1.close()
print ("")

# readlines (ファイルのEOFまで全て読み出し、配列に格納)
file1 = open("text.txt", mode="r")
str1 = file1.readlines()
file1.close()
print ("+"*50)
print ("readlinesメソッドで読み込んだ場合の型 ⇒ ", end="")
print (type(str1))          #1行ずつリストの要素に格納される
print ("普通に表示させた場合: ")
print (str1)
print ("\n(*)ループを使ってリスト内の文字列表示させた場合: ")
for i in range(len(str1)):
    print (str1[i], end="") #リストの要素には改行コードも含まれるため、各printの改行コードはカットする

ー 以下実行結果です。

f:id:takaaki-niikawa:20180207223934p:plain

‐ read, readline, readlinesの違い分かりましたか??

  • テキストを扱うとリストや改行コード、文字コード等の仕組みを学ぶ良い機会になります。
  • また、高校生の頃C言語でテキストファイルから読み書きできた時の感動を思い出しますー。

パイソンでファイルを自由自在にあやつろうー!

  • こんばんわ、たっきーです。桑名のプログラミング教室では、はじめてのプログラミング教室として、初めにスクラッチを使ったブロックプログラミングに取り組んでもらっています。
  • 次のステップはパイソンです。マウスは使いません!! コマンドを打ち込んで、コードを書きまくります。

パイソンってどうやってプログラム作るの?

  • パイソンは、エディタを使ってコーディングします。エディタはPython本家の統合開発環境であるIDLEが分かりやすいです。コーディングに慣れてくるとAtomSublime Textなどのエディタを使用することで、インデントやタグの入力を補ってくれるのでおススメです。

  • IDELの画面(白いやつ) f:id:takaaki-niikawa:20180204225808p:plain

  • Atomの画面(黒いやつ) f:id:takaaki-niikawa:20180204225658p:plain

パイソンからファイルを読み書きする

  • 昨日の教室では、sho君がパイソンからファイルを読み書きするプログラムに挑戦してくれました。
  • ファイルの読み書きは、下記の流れになります。

    • ファイルをオープン ⇒ プログラムがファイルread,write する ⇒ ファイルをクローズ
  • 以下は、ファイルにwriteするプログラムです。

    • open, write, close とありますので、前述の流れがイメージ付くかなと思います。
    • ここでは、ファイルをオープン後何らかのエラーでプログラムが中断した場合でもクローズ処理が行われるようにtry..except..finally で、クローズ処理をするように書いてあります。
file1 = open("test2.txt", mode="w")

try:
    file1.write("私は失敗したことがない\n")
    file1.write("ただ、1万通りの、\n")
    file1.write("うまく行かない方法を見つけただけだ。\n")
    print("ファイルに書き込みました。")
except:
    print("エラーが発生しました。")
finally:
    print("ファイルを閉じます...")
    file1.close()

パスワードファイルをあやつる!

  • sho君が取り組んだ、考えよう11 「秘密のパスワードファイルを作るアプリを作ろう」の課題です。
□考えよう11 秘密のパスワードファイルを作るアプリを作ろう
パスワードを作成する処理(ファイルに書き出す)、パスワードが正しいかをチェックする処理(ファイルから読み出した数字と入力した数字が等しいかを判定する)を作成します。
それぞれの処理をメニューから選ぶようにします。
  • 実行結果 f:id:takaaki-niikawa:20180204230910p:plain

  • sho君は、見事Noヒントでプログラムできましたー! 予習の正解もあって理解が早かったみたいです。すんばらしい~!

  • こうしてプログラムを製作していくと、パソコンやソフトウェアの世界がどのような仕組みでできているのか少し見えてくる気がしますね。
  • コンピュータの中には、無限の世界が広がっています。きみが望めば無限の世界とつながることができる!
  • さぁ、わくわくときみの無限の可能性を開けましょう!!

満員御礼! 桑名でプログラミングを学ぶ場を

JEUGIAカルチャーセンター桑名でプログラミング教室をやっております、たっきーです。 昨日もプログラミング教室に参加いただき、ありがとうございます!!

  • 体験含め生徒10人を超えましたー!
  • いつもパソコン持ってにこにこと参加くださる生徒みなさま、ご理解とサポート頂ける保護者様、JEUGIAカルチャーセンターのスタッフ方々に感謝です。

2/3 に行った教室の様子をレポートします。

  • 1月に体験に来ていただいたren君、rikoちゃんが今回から生徒に加わりました。また会えて、とっても嬉しいです。
  • 今回は大人のkoba様、nishi様、小6のyo君が体験に来てくれました。どうもありがとうございます。
  • はじめてのプログラミングはいかがでしたか? むずかしかったでしょうか??
    • 子どもが取り組んでいるため、大人の方から「最初はかんたんかと思ったけれど、意外と難しかった」と感想を頂きました。
    • そうなんです。プログラミングは単純にパソコンの操作を覚えるのとは違います。まるでパズルを組み立てるような、頭のなかで完成図をイメージしてプログラムを作りましょう。プログラミング脳がきたえられます!!
  • 昨日は生徒と体験が多かったため、いつもより余裕がなかったかもしれません…。教室を増やす、時間をずらすなど目が行き届くように計画中です。ぜひ率直なご意見をお聞かせください。どうぞよろしくお願いします。
    • いなべに開いて欲しい。弥冨でできないか。土曜日以外はないの? それでもかまいません。ぜひ教えて下さい。

はじめてのスクラッチ

  • ren君は1月体験の続きで課題2の「バレリーナ」からプログラム製作開始しました。

f:id:takaaki-niikawa:20180204113329p:plain

  • rikoちゃんは1月体験の続きで、考えようの「ねこをバナナに向かって歩かせよう」から作り始めました。

f:id:takaaki-niikawa:20180204113336p:plain

  • 二人とも考えようの「ねこを斜めに向かって走らせよう」、「ねこをマウスに向かって走らせよう」まで見事完成です!!

  • スタートしてから何をゴールにするか(例:バナナまで行く)を頭に入れて、どうやったらできるかな?を一生懸命に考えて下さい。ブロック遊びと同じです。答えはきみの手の中にあります。後は組み立てるだけ。

  • 昨日は小6のyo君が体験に来てくれました。すごい!! はじめてじゃないでしょ!?もう習ってたんでしょ。というスピードにびっくりです。

    • また、すでにプログラムはどうあるべきかを知っている様です。例えば、ねこがバナナに向かって歩く。ねこが斜めに向かって走る。そんなゴールのあるプログラムを作るときに、ちゃんと終了判定をしてるんです。普通はバナナや端まで来たら終わりなんですが、ちゃんとゴールまで来たら終わるように組むんです。プログラムの気持ちになって、コードを書いてますね。素晴らしい。

f:id:takaaki-niikawa:20180204221757p:plain

10才からはじめるゲームプログラミング図鑑

  • yu君、syun君、shiちゃんには、10才からはじめるゲームプログラミング図鑑の「スター・ハンター」を、syu君には「氷の上のレース」を製作してもらいました。

  • 良いプログラムを見て真似てください。良いプログラムには、自分が思いつかなかったコードがたくさん書かれています。良いプログラムをヒントにして、プログラムの書き方を自分のものにしましょう!!

f:id:takaaki-niikawa:20180204222957j:plain

f:id:takaaki-niikawa:20180204223026j:plain

f:id:takaaki-niikawa:20180204223042j:plain

  • 以下は、syu君製作の「氷の上のレース」のスクラッチ画面です。

f:id:takaaki-niikawa:20180204223210p:plain

f:id:takaaki-niikawa:20180204223228p:plain

  • 昨日の教室で参考に使用したゲームプログラミング図鑑は、8つのゲーム製作方法が収録されている書籍です。
  • どんなゲームが作れるのかな?この本を読むとこんなことができるんだ!とてもわくわくする一冊です。教室にありますので、手に取ってご覧ください。

大垣市ソフトピアジャパン ドリーム・コアで、『機械学習実践勉強会』に参加しましたー!

機械学習実践勉強会』に参加しましたー!

おはようございます。たっきーです。 昨日(1/27)は、大垣市ソフトピアジャパン ドリーム・コアで開催された『第4回 機械学習実践勉強会 画像認識技術ハンズオン』に参加しましたー! f:id:takaaki-niikawa:20180128093029j:plain

ドリーム・コアにお邪魔したのは初めてで、とても綺麗で充実した施設が三重県から見てうらやましい! また、岐阜県IT技術者、システム開発者の方にお会いできました。良い出会いをありがとうございます。 そして、なによりもやりたいと思っていたがまだ取り組めていなかったPythonを使った機械学習を学ぶことができ、とーっても楽しかったです!! 今回の学びの機会を設けて頂いた職員の方、そして講師をして下さった合同会社 4D Pocket 代表の石郷様、アシスタントの柏木様に感謝です。

www.softopia.or.jp

機械学習実践勉強会の振り返り

  • 簡単ですが、昨日の学びについて、振り返ります。

0. 事前準備

  • 前日に、Pythonの開発環境を準備しました。下記サイトより、Anacondaをインストールしました。AnacondaはPythonとよく使われるライブラリがセットになった開発環境です。
  • Python初心者の場合、パッケージ、ライブラリの入手やインストールは、OS(例:Mac,Windows),Versionによって異なるのでハードルが高くなりますが、Anacondaを使用することで手軽に利用できます。

www.anaconda.com

1. Python画像処理ライブラリ「OpenCV」を使ってみる

  • OpenCVは、機械学習を行う時の教師データとなる画像を整備する際に必要となります。
  • Anaconda promptを使用して、簡単にインストールができます。以下インストールログです。
(C:\Users\takaa\Anaconda3) C:\Users\takaa>conda install opencv
Fetching package metadata .............
Solving package specifications: .

Package plan for installation in environment C:\Users\takaa\Anaconda3:

The following NEW packages will be INSTALLED:

    opencv:   3.3.1-py36h20b85fd_1

The following packages will be UPDATED:

    anaconda: 5.0.1-py36h8316230_2  --> custom-py36h363777c_0
    conda:    4.3.30-py36h7e176b0_0 --> 4.4.8-py36_0
    libtiff:  4.0.8-vc14h04e2a1e_10 --> 4.0.9-h0f13578_0
    pycosat:  0.6.2-py36hf17546d_1  --> 0.6.3-py36h413d8a4_0

Proceed ([y]/n)? y

anaconda-custo 100% |###############################| Time: 0:00:00   9.04 MB/s
libtiff-4.0.9- 100% |###############################| Time: 0:00:01 506.76 kB/s
pycosat-0.6.3- 100% |###############################| Time: 0:00:00 582.74 kB/s
opencv-3.3.1-p 100% |###############################| Time: 0:04:14 397.98 kB/s
conda-4.4.8-py 100% |###############################| Time: 0:00:03 263.38 kB/s

(C:\Users\takaa\Anaconda3) C:\Users\takaa>
(C:\Users\takaa\Anaconda3) C:\Users\takaa>conda list
# packages in environment at C:\Users\takaa\Anaconda3:
#
# Name                    Version                   Build  Channel
_ipyw_jlab_nb_ext_conf    0.1.0            py36he6757f0_0
alabaster                 0.7.10           py36hcd07829_0
anaconda                  custom           py36h363777c_0
anaconda-client           1.6.5            py36hd36550c_0
anaconda-navigator        1.6.9            py36hc720852_0
anaconda-project          0.8.0            py36h8b3bf89_0
asn1crypto                0.22.0           py36h8e79faa_1
astroid                   1.5.3            py36h9d85297_0
astropy                   2.0.2            py36h06391c4_4
babel                     2.5.0            py36h35444c1_0
backports                 1.0              py36h81696a8_1
backports.shutil_get_terminal_size 1.0.0            py36h79ab834_2
beautifulsoup4            4.6.0            py36hd4cc5e8_1
bitarray                  0.8.1            py36h6af124b_0
bkcharts                  0.2              py36h7e685f7_0
blaze                     0.11.3           py36h8a29ca5_0
bleach                    2.0.0            py36h0a7e3d6_0
bokeh                     0.12.10          py36h0be3b39_0
boto                      2.48.0           py36h1a776d2_1
bottleneck                1.2.1            py36hd119dfa_0
bzip2                     1.0.6            vc14hdec8e7a_1  [vc14]
ca-certificates           2017.08.26           h94faf87_0
cachecontrol              0.12.3           py36hfe50d7b_0
certifi                   2017.7.27.1      py36h043bc9e_0
cffi                      1.10.0           py36hae3d1b5_1
chardet                   3.0.4            py36h420ce6e_1
click                     6.7              py36hec8c647_0
cloudpickle               0.4.0            py36h639d8dc_0
clyent                    1.2.2            py36hb10d595_1
colorama                  0.3.9            py36h029ae33_0
comtypes                  1.1.2            py36heb9b3d1_0
conda                     4.4.8                    py36_0
conda-build               3.0.27           py36h309a530_0
conda-env                 2.6.0                h36134e3_1
conda-verify              2.0.0            py36h065de53_0
console_shortcut          0.1.1                h6bb2dd7_3
contextlib2               0.5.5            py36he5d52c0_0
cryptography              2.0.3            py36h123decb_1
curl                      7.55.1           vc14hdaba4a4_3  [vc14]
cycler                    0.10.0           py36h009560c_0
cython                    0.26.1           py36h18049ac_0
cytoolz                   0.8.2            py36h547e66e_0
dask                      0.15.3           py36h396fcb9_0
dask-core                 0.15.3           py36hd651449_0
datashape                 0.5.4            py36h5770b85_0
decorator                 4.1.2            py36he63a57b_0
distlib                   0.2.5            py36h51371be_0
distributed               1.19.1           py36h8504682_0
docutils                  0.14             py36h6012d8f_0
entrypoints               0.2.3            py36hfd66bb0_2
et_xmlfile                1.0.1            py36h3d2d736_0
fastcache                 1.0.2            py36hffdae1b_0
filelock                  2.0.12           py36hd7ddd41_0
flask                     0.12.2           py36h98b5e8f_0
flask-cors                3.0.3            py36h8a3855d_0
freetype                  2.8              vc14h17c9bdf_0  [vc14]
get_terminal_size         1.0.0                h38e98db_0
gevent                    1.2.2            py36h342a76c_0
glob2                     0.5              py36h11cc1bd_1
greenlet                  0.4.12           py36ha00ad21_0
h5py                      2.7.0            py36hfbe0a52_1
hdf5                      1.10.1           vc14hb361328_0  [vc14]
heapdict                  1.0.0            py36h21fa5f4_0
html5lib                  0.999999999      py36ha09b1f3_0
icc_rt                    2017.0.4             h97af966_0
icu                       58.2             vc14hc45fdbb_0  [vc14]
idna                      2.6              py36h148d497_1
imageio                   2.2.0            py36had6c2d2_0
imagesize                 0.7.1            py36he29f638_0
intel-openmp              2018.0.0             hcd89f80_7
ipykernel                 4.6.1            py36hbb77b34_0
ipython                   6.1.0            py36h236ecc8_1
ipython_genutils          0.2.0            py36h3c5d0ee_0
ipywidgets                7.0.0            py36h2e74ada_0
isort                     4.2.15           py36h6198cc5_0
itsdangerous              0.24             py36hb6c5a24_1
jdcal                     1.3              py36h64a5255_0
jedi                      0.10.2           py36hed927a0_0
jinja2                    2.9.6            py36h10aa3a0_1
jpeg                      9b               vc14h4d7706e_1  [vc14]
jsonschema                2.6.0            py36h7636477_0
jupyter                   1.0.0            py36h422fd7e_2
jupyter_client            5.1.0            py36h9902a9a_0
jupyter_console           5.2.0            py36h6d89b47_1
jupyter_core              4.3.0            py36h511e818_0
jupyterlab                0.27.0           py36h34cc53b_2
jupyterlab_launcher       0.4.0            py36h22c3ccf_0
lazy-object-proxy         1.3.1            py36hd1c21d2_0
libiconv                  1.15             vc14h29686d3_5  [vc14]
libpng                    1.6.32           vc14h5163883_3  [vc14]
libssh2                   1.8.0            vc14hcf584a9_2  [vc14]
libtiff                   4.0.9                h0f13578_0
libxml2                   2.9.4            vc14h8fd0f11_5  [vc14]
libxslt                   1.1.29           vc14hf85b8d4_5  [vc14]
llvmlite                  0.20.0                   py36_0
locket                    0.2.0            py36hfed976d_1
lockfile                  0.12.2           py36h0468280_0
lxml                      4.1.0            py36h0dcd83c_0
lzo                       2.10             vc14h0a64fa6_1  [vc14]
markupsafe                1.0              py36h0e26971_1
matplotlib                2.1.0            py36h11b4b9c_0
mccabe                    0.6.1            py36hb41005a_1
menuinst                  1.4.10           py36h42196fb_0
mistune                   0.7.4            py36h4874169_0
mkl                       2018.0.0             h36b65af_4
mkl-service               1.1.2            py36h57e144c_4
mpmath                    0.19             py36he326802_2
msgpack-python            0.4.8            py36h58b1e9d_0
multipledispatch          0.4.9            py36he44c36e_0
navigator-updater         0.1.0            py36h8a7b86b_0
nbconvert                 5.3.1            py36h8dc0fde_0
nbformat                  4.4.0            py36h3a5bc1b_0
networkx                  2.0              py36hff991e3_0
nltk                      3.2.4            py36hd0e0a39_0
nose                      1.3.7            py36h1c3779e_2
notebook                  5.0.0            py36hd9fbf6f_2
numba                     0.35.0             np113py36_10
numexpr                   2.6.2            py36h7ca04dc_1
numpy                     1.13.3           py36ha320f96_0
numpydoc                  0.7.0            py36ha25429e_0
odo                       0.5.1            py36h7560279_0
olefile                   0.44             py36h0a7bdd2_0
opencv                    3.3.1            py36h20b85fd_1
openpyxl                  2.4.8            py36hf3b77f6_1
openssl                   1.0.2l           vc14hcac20b0_2  [vc14]
packaging                 16.8             py36ha0986f6_1
pandas                    0.20.3           py36hce827b7_2
pandoc                    1.19.2.1             hb2460c7_1
pandocfilters             1.4.2            py36h3ef6317_1
partd                     0.3.8            py36hc8e763b_0
path.py                   10.3.1           py36h3dd8b46_0
pathlib2                  2.3.0            py36h7bfb78b_0
patsy                     0.4.1            py36h42cefec_0
pep8                      1.7.0            py36h0f3d67a_0
pickleshare               0.7.4            py36h9de030f_0
pillow                    4.2.1            py36hdb25ab2_0
pip                       9.0.1            py36hadba87b_3
pkginfo                   1.4.1            py36hb0f9cfa_1
ply                       3.10             py36h1211beb_0
progress                  1.3              py36hbeca8d3_0
prompt_toolkit            1.0.15           py36h60b8f86_0
psutil                    5.4.0            py36h4e662fb_0
py                        1.4.34           py36ha4aca3a_1
pycodestyle               2.3.1            py36h7cc55cd_0
pycosat                   0.6.3            py36h413d8a4_0
pycparser                 2.18             py36hd053e01_1
pycrypto                  2.6.1            py36he68e6e2_1
pycurl                    7.43.0           py36h086bf4c_3
pyflakes                  1.6.0            py36h0b975d6_0
pygments                  2.2.0            py36hb010967_0
pylint                    1.7.4            py36ha4e6ded_0
pyodbc                    4.0.17           py36h0006bc2_0
pyopenssl                 17.2.0           py36h15ca2fc_0
pyparsing                 2.2.0            py36h785a196_1
pyqt                      5.6.0            py36hb5ed885_5
pysocks                   1.6.7            py36h698d350_1
pytables                  3.4.2            py36h71138e3_2
pytest                    3.2.1            py36h753b05e_1
python                    3.6.3                h9e2ca53_1
python-dateutil           2.6.1            py36h509ddcb_1
pytz                      2017.2           py36h05d413f_1
pywavelets                0.5.2            py36hc649158_0
pywin32                   221              py36h9c10281_0
pyyaml                    3.12             py36h1d1928f_1
pyzmq                     16.0.2           py36h38c27d9_2
qt                        5.6.2           vc14h6f8c307_12  [vc14]
qtawesome                 0.4.4            py36h5aa48f6_0
qtconsole                 4.3.1            py36h99a29a9_0
qtpy                      1.3.1            py36hb8717c5_0
requests                  2.18.4           py36h4371aae_1
rope                      0.10.5           py36hcaf5641_0
ruamel_yaml               0.11.14          py36h9b16331_2
scikit-image              0.13.0           py36h6dffa3f_1
scikit-learn              0.19.1           py36h53aea1b_0
scipy                     0.19.1           py36h7565378_3
seaborn                   0.8.0            py36h62cb67c_0
setuptools                36.5.0           py36h65f9e6e_0
simplegeneric             0.8.1            py36heab741f_0
singledispatch            3.4.0.3          py36h17d0c80_0
sip                       4.18.1           py36h9c25514_2
six                       1.11.0           py36h4db2310_1
snowballstemmer           1.2.1            py36h763602f_0
sortedcollections         0.5.3            py36hbefa0ab_0
sortedcontainers          1.5.7            py36ha90ac20_0
sphinx                    1.6.3            py36h9bb690b_0
sphinxcontrib             1.0              py36hbbac3d2_1
sphinxcontrib-websupport  1.0.1            py36hb5e5916_1
spyder                    3.2.4            py36h8845eaa_0
sqlalchemy                1.1.13           py36h5948d12_0
sqlite                    3.20.1           vc14h7ce8c62_1  [vc14]
statsmodels               0.8.0            py36h6189b4c_0
sympy                     1.1.1            py36h96708e0_0
tblib                     1.3.2            py36h30f5020_0
testpath                  0.3.1            py36h2698cfe_0
tk                        8.6.7            vc14hb68737d_1  [vc14]
toolz                     0.8.2            py36he152a52_0
tornado                   4.5.2            py36h57f6048_0
traitlets                 4.3.2            py36h096827d_0
typing                    3.6.2            py36hb035bda_0
unicodecsv                0.14.1           py36h6450c06_0
urllib3                   1.22             py36h276f60a_0
vc                        14                   h2379b0c_2
vs2015_runtime            14.0.25123           hd4c4e62_2
wcwidth                   0.1.7            py36h3d5aa90_0
webencodings              0.5.1            py36h67c50ae_1
werkzeug                  0.12.2           py36h866a736_0
wheel                     0.29.0           py36h6ce6cde_1
widgetsnbextension        3.0.2            py36h364476f_1
win_inet_pton             1.0.1            py36he67d7fd_1
win_unicode_console       0.5              py36hcdbd4b5_0
wincertstore              0.2              py36h7fe50ca_0
wrapt                     1.10.11          py36he5f5981_0
xlrd                      1.1.0            py36h1cb58dc_1
xlsxwriter                1.0.2            py36hf723b7d_0
xlwings                   0.11.4           py36hd3cf94d_0
xlwt                      1.3.0            py36h1a4751e_0
yaml                      0.1.7            vc14hb31d195_1  [vc14]
zict                      0.1.3            py36h2d8e73e_0
zlib                      1.2.11           vc14h1cdd9ab_1  [vc14]
  • 昨日のハンズオンでは、画像加工(グレースケール、ノイズ除去、輪郭抽出)のテクニックを教えて頂きました。
  • 画像のデータサイズを減らすためにグレースケールにします。簡単に加工できちゃうんですね。
  • ノイズ除去は、あえてごま塩にノイズを施したうえで、移動平均フィルタ, メディアンフィルタで除去を試します。初めて聞く言葉でした…。勉強になります。
  • 輪郭抽出は、一旦グレースケールにした後で、判定しやすくするため色を2値化します。そのあとで輪郭抽出をするという流れです。
    • 下記は、りんごの輪郭を抽出した結果の画像です。

f:id:takaaki-niikawa:20180128093426p:plain

  • OpenCVの学習データを使用して、顔認識を行いました。Facebookやいろんなところで画像認識使われていますが、こんな風にやるんですね! 先ずは顔を認識するための学習データに価値があるということかと。
    • 下記は、google画像検索から拝借したテスト画像を使って顔を認識させた結果です。左から2人目までは認識できましたが、3人目は顔が斜めを向いていて認識できませんでした。この学習データの精度がまだ低いという意味になります。

f:id:takaaki-niikawa:20180128093843p:plain

2. 機械学習ライブラリ「TensorFlow」と「Keras」で画像分類をしてみる

  • 「TensorFlow」は最近IT関連の雑誌などでもよく見かけるキーワードですが、Googleが開発したオープンソース機械学習ライブラリになります。
  • 「Keras」は、オプション指定が高度なTensorFlowを触るためにあるライブラリのようです。初めて聞きました。

  • 「TensorFlow」と「Keras」のどちらもOpenCVと同じで、Anaconda promptからインストールできます。

(C:\Users\takaa\Anaconda3) C:\Users\takaa\Desktop\機械学習>conda install tensorflow
Solving environment: done

## Package Plan ##

  environment location: C:\Users\takaa\Anaconda3

  added / updated specs:
    - tensorflow


The following packages will be downloaded:

    package                    |            build
    ---------------------------|-----------------
    certifi-2018.1.18          |           py36_0         144 KB
    markdown-2.6.9             |           py36_0         100 KB
    tensorflow-1.2.1           |           py36_0        21.0 MB
    protobuf-3.4.1             |   py36h07fa351_0         478 KB
    vs2015_runtime-14.0.25420  |                0         2.0 MB
    html5lib-0.9999999         |           py36_0         178 KB
    bleach-1.5.0               |           py36_0          22 KB
    libprotobuf-3.4.1          |       h3dba5dd_0         1.9 MB
    openssl-1.0.2n             |       h74b6da3_0         5.4 MB
    backports.weakref-1.0rc1   |           py36_0           8 KB
    ------------------------------------------------------------
                                           Total:        31.2 MB

The following NEW packages will be INSTALLED:

    backports.weakref: 1.0rc1-py36_0
    libprotobuf:       3.4.1-h3dba5dd_0
    markdown:          2.6.9-py36_0
    protobuf:          3.4.1-py36h07fa351_0
    tensorflow:        1.2.1-py36_0

The following packages will be UPDATED:

    certifi:           2017.7.27.1-py36h043bc9e_0 --> 2018.1.18-py36_0
    openssl:           1.0.2l-vc14hcac20b0_2      --> 1.0.2n-h74b6da3_0
    vs2015_runtime:    14.0.25123-hd4c4e62_2      --> 14.0.25420-0

The following packages will be DOWNGRADED:

    bleach:            2.0.0-py36h0a7e3d6_0       --> 1.5.0-py36_0
    html5lib:          0.999999999-py36ha09b1f3_0 --> 0.9999999-py36_0

Proceed ([y]/n)? y


Downloading and Extracting Packages
certifi 2018.1.18: ############################################################################################ | 100%
markdown 2.6.9: ############################################################################################### | 100%
tensorflow 1.2.1: ############################################################################################# | 100%
protobuf 3.4.1: ############################################################################################### | 100%
vs2015_runtime 14.0.25420: #################################################################################### | 100%
html5lib 0.9999999: ########################################################################################### | 100%
bleach 1.5.0: ################################################################################################# | 100%
libprotobuf 3.4.1: ############################################################################################ | 100%
openssl 1.0.2n: ############################################################################################### | 100%
backports.weakref 1.0rc1: ##################################################################################### | 100%
Preparing transaction: done
Verifying transaction: done
Executing transaction: done

(C:\Users\takaa\Anaconda3) C:\Users\takaa\Desktop\機械学習>conda install keras
Solving environment: done

## Package Plan ##

  environment location: C:\Users\takaa\Anaconda3

  added / updated specs:
    - keras


The following packages will be downloaded:

    package                    |            build
    ---------------------------|-----------------
    keras-2.1.3                |           py36_0         476 KB

The following NEW packages will be INSTALLED:

    keras: 2.1.3-py36_0

Proceed ([y]/n)? y


Downloading and Extracting Packages
keras 2.1.3: ################################################################################################## | 100%
Preparing transaction: done
Verifying transaction: done
Executing transaction: done

(C:\Users\takaa\Anaconda3) C:\Users\takaa\Desktop\機械学習>conda list
# packages in environment at C:\Users\takaa\Anaconda3:
#
# Name                    Version                   Build  Channel
_ipyw_jlab_nb_ext_conf    0.1.0            py36he6757f0_0
alabaster                 0.7.10           py36hcd07829_0
anaconda                  custom           py36h363777c_0
anaconda-client           1.6.5            py36hd36550c_0
anaconda-navigator        1.6.9            py36hc720852_0
anaconda-project          0.8.0            py36h8b3bf89_0
asn1crypto                0.22.0           py36h8e79faa_1
astroid                   1.5.3            py36h9d85297_0
astropy                   2.0.2            py36h06391c4_4
babel                     2.5.0            py36h35444c1_0
backports                 1.0              py36h81696a8_1
backports.shutil_get_terminal_size 1.0.0            py36h79ab834_2
backports.weakref         1.0rc1                   py36_0
beautifulsoup4            4.6.0            py36hd4cc5e8_1
bitarray                  0.8.1            py36h6af124b_0
bkcharts                  0.2              py36h7e685f7_0
blaze                     0.11.3           py36h8a29ca5_0
bleach                    1.5.0                    py36_0
bokeh                     0.12.10          py36h0be3b39_0
boto                      2.48.0           py36h1a776d2_1
bottleneck                1.2.1            py36hd119dfa_0
bzip2                     1.0.6            vc14hdec8e7a_1  [vc14]
ca-certificates           2017.08.26           h94faf87_0
cachecontrol              0.12.3           py36hfe50d7b_0
certifi                   2018.1.18                py36_0
cffi                      1.10.0           py36hae3d1b5_1
chardet                   3.0.4            py36h420ce6e_1
click                     6.7              py36hec8c647_0
cloudpickle               0.4.0            py36h639d8dc_0
clyent                    1.2.2            py36hb10d595_1
colorama                  0.3.9            py36h029ae33_0
comtypes                  1.1.2            py36heb9b3d1_0
conda                     4.4.8                    py36_0
conda-build               3.0.27           py36h309a530_0
conda-env                 2.6.0                h36134e3_1
conda-verify              2.0.0            py36h065de53_0
console_shortcut          0.1.1                h6bb2dd7_3
contextlib2               0.5.5            py36he5d52c0_0
cryptography              2.0.3            py36h123decb_1
curl                      7.55.1           vc14hdaba4a4_3  [vc14]
cycler                    0.10.0           py36h009560c_0
cython                    0.26.1           py36h18049ac_0
cytoolz                   0.8.2            py36h547e66e_0
dask                      0.15.3           py36h396fcb9_0
dask-core                 0.15.3           py36hd651449_0
datashape                 0.5.4            py36h5770b85_0
decorator                 4.1.2            py36he63a57b_0
distlib                   0.2.5            py36h51371be_0
distributed               1.19.1           py36h8504682_0
docutils                  0.14             py36h6012d8f_0
entrypoints               0.2.3            py36hfd66bb0_2
et_xmlfile                1.0.1            py36h3d2d736_0
fastcache                 1.0.2            py36hffdae1b_0
filelock                  2.0.12           py36hd7ddd41_0
flask                     0.12.2           py36h98b5e8f_0
flask-cors                3.0.3            py36h8a3855d_0
freetype                  2.8              vc14h17c9bdf_0  [vc14]
get_terminal_size         1.0.0                h38e98db_0
gevent                    1.2.2            py36h342a76c_0
glob2                     0.5              py36h11cc1bd_1
greenlet                  0.4.12           py36ha00ad21_0
h5py                      2.7.0            py36hfbe0a52_1
hdf5                      1.10.1           vc14hb361328_0  [vc14]
heapdict                  1.0.0            py36h21fa5f4_0
html5lib                  0.9999999                py36_0
icc_rt                    2017.0.4             h97af966_0
icu                       58.2             vc14hc45fdbb_0  [vc14]
idna                      2.6              py36h148d497_1
imageio                   2.2.0            py36had6c2d2_0
imagesize                 0.7.1            py36he29f638_0
intel-openmp              2018.0.0             hcd89f80_7
ipykernel                 4.6.1            py36hbb77b34_0
ipython                   6.1.0            py36h236ecc8_1
ipython_genutils          0.2.0            py36h3c5d0ee_0
ipywidgets                7.0.0            py36h2e74ada_0
isort                     4.2.15           py36h6198cc5_0
itsdangerous              0.24             py36hb6c5a24_1
jdcal                     1.3              py36h64a5255_0
jedi                      0.10.2           py36hed927a0_0
jinja2                    2.9.6            py36h10aa3a0_1
jpeg                      9b               vc14h4d7706e_1  [vc14]
jsonschema                2.6.0            py36h7636477_0
jupyter                   1.0.0            py36h422fd7e_2
jupyter_client            5.1.0            py36h9902a9a_0
jupyter_console           5.2.0            py36h6d89b47_1
jupyter_core              4.3.0            py36h511e818_0
jupyterlab                0.27.0           py36h34cc53b_2
jupyterlab_launcher       0.4.0            py36h22c3ccf_0
keras                     2.1.3                    py36_0
lazy-object-proxy         1.3.1            py36hd1c21d2_0
libiconv                  1.15             vc14h29686d3_5  [vc14]
libpng                    1.6.32           vc14h5163883_3  [vc14]
libprotobuf               3.4.1                h3dba5dd_0
libssh2                   1.8.0            vc14hcf584a9_2  [vc14]
libtiff                   4.0.9                h0f13578_0
libxml2                   2.9.4            vc14h8fd0f11_5  [vc14]
libxslt                   1.1.29           vc14hf85b8d4_5  [vc14]
llvmlite                  0.20.0                   py36_0
locket                    0.2.0            py36hfed976d_1
lockfile                  0.12.2           py36h0468280_0
lxml                      4.1.0            py36h0dcd83c_0
lzo                       2.10             vc14h0a64fa6_1  [vc14]
markdown                  2.6.9                    py36_0
markupsafe                1.0              py36h0e26971_1
matplotlib                2.1.0            py36h11b4b9c_0
mccabe                    0.6.1            py36hb41005a_1
menuinst                  1.4.10           py36h42196fb_0
mistune                   0.7.4            py36h4874169_0
mkl                       2018.0.0             h36b65af_4
mkl-service               1.1.2            py36h57e144c_4
mpmath                    0.19             py36he326802_2
msgpack-python            0.4.8            py36h58b1e9d_0
multipledispatch          0.4.9            py36he44c36e_0
navigator-updater         0.1.0            py36h8a7b86b_0
nbconvert                 5.3.1            py36h8dc0fde_0
nbformat                  4.4.0            py36h3a5bc1b_0
networkx                  2.0              py36hff991e3_0
nltk                      3.2.4            py36hd0e0a39_0
nose                      1.3.7            py36h1c3779e_2
notebook                  5.0.0            py36hd9fbf6f_2
numba                     0.35.0             np113py36_10
numexpr                   2.6.2            py36h7ca04dc_1
numpy                     1.13.3           py36ha320f96_0
numpydoc                  0.7.0            py36ha25429e_0
odo                       0.5.1            py36h7560279_0
olefile                   0.44             py36h0a7bdd2_0
opencv                    3.3.1            py36h20b85fd_1
openpyxl                  2.4.8            py36hf3b77f6_1
openssl                   1.0.2n               h74b6da3_0
packaging                 16.8             py36ha0986f6_1
pandas                    0.20.3           py36hce827b7_2
pandoc                    1.19.2.1             hb2460c7_1
pandocfilters             1.4.2            py36h3ef6317_1
partd                     0.3.8            py36hc8e763b_0
path.py                   10.3.1           py36h3dd8b46_0
pathlib2                  2.3.0            py36h7bfb78b_0
patsy                     0.4.1            py36h42cefec_0
pep8                      1.7.0            py36h0f3d67a_0
pickleshare               0.7.4            py36h9de030f_0
pillow                    4.2.1            py36hdb25ab2_0
pip                       9.0.1            py36hadba87b_3
pkginfo                   1.4.1            py36hb0f9cfa_1
ply                       3.10             py36h1211beb_0
progress                  1.3              py36hbeca8d3_0
prompt_toolkit            1.0.15           py36h60b8f86_0
protobuf                  3.4.1            py36h07fa351_0
psutil                    5.4.0            py36h4e662fb_0
py                        1.4.34           py36ha4aca3a_1
pycodestyle               2.3.1            py36h7cc55cd_0
pycosat                   0.6.3            py36h413d8a4_0
pycparser                 2.18             py36hd053e01_1
pycrypto                  2.6.1            py36he68e6e2_1
pycurl                    7.43.0           py36h086bf4c_3
pyflakes                  1.6.0            py36h0b975d6_0
pygments                  2.2.0            py36hb010967_0
pylint                    1.7.4            py36ha4e6ded_0
pyodbc                    4.0.17           py36h0006bc2_0
pyopenssl                 17.2.0           py36h15ca2fc_0
pyparsing                 2.2.0            py36h785a196_1
pyqt                      5.6.0            py36hb5ed885_5
pysocks                   1.6.7            py36h698d350_1
pytables                  3.4.2            py36h71138e3_2
pytest                    3.2.1            py36h753b05e_1
python                    3.6.3                h9e2ca53_1
python-dateutil           2.6.1            py36h509ddcb_1
pytz                      2017.2           py36h05d413f_1
pywavelets                0.5.2            py36hc649158_0
pywin32                   221              py36h9c10281_0
pyyaml                    3.12             py36h1d1928f_1
pyzmq                     16.0.2           py36h38c27d9_2
qt                        5.6.2           vc14h6f8c307_12  [vc14]
qtawesome                 0.4.4            py36h5aa48f6_0
qtconsole                 4.3.1            py36h99a29a9_0
qtpy                      1.3.1            py36hb8717c5_0
requests                  2.18.4           py36h4371aae_1
rope                      0.10.5           py36hcaf5641_0
ruamel_yaml               0.11.14          py36h9b16331_2
scikit-image              0.13.0           py36h6dffa3f_1
scikit-learn              0.19.1           py36h53aea1b_0
scipy                     0.19.1           py36h7565378_3
seaborn                   0.8.0            py36h62cb67c_0
setuptools                36.5.0           py36h65f9e6e_0
simplegeneric             0.8.1            py36heab741f_0
singledispatch            3.4.0.3          py36h17d0c80_0
sip                       4.18.1           py36h9c25514_2
six                       1.11.0           py36h4db2310_1
snowballstemmer           1.2.1            py36h763602f_0
sortedcollections         0.5.3            py36hbefa0ab_0
sortedcontainers          1.5.7            py36ha90ac20_0
sphinx                    1.6.3            py36h9bb690b_0
sphinxcontrib             1.0              py36hbbac3d2_1
sphinxcontrib-websupport  1.0.1            py36hb5e5916_1
spyder                    3.2.4            py36h8845eaa_0
sqlalchemy                1.1.13           py36h5948d12_0
sqlite                    3.20.1           vc14h7ce8c62_1  [vc14]
statsmodels               0.8.0            py36h6189b4c_0
sympy                     1.1.1            py36h96708e0_0
tblib                     1.3.2            py36h30f5020_0
tensorflow                1.2.1                    py36_0
testpath                  0.3.1            py36h2698cfe_0
tk                        8.6.7            vc14hb68737d_1  [vc14]
toolz                     0.8.2            py36he152a52_0
tornado                   4.5.2            py36h57f6048_0
traitlets                 4.3.2            py36h096827d_0
typing                    3.6.2            py36hb035bda_0
unicodecsv                0.14.1           py36h6450c06_0
urllib3                   1.22             py36h276f60a_0
vc                        14                   h2379b0c_2
vs2015_runtime            14.0.25420                    0
wcwidth                   0.1.7            py36h3d5aa90_0
webencodings              0.5.1            py36h67c50ae_1
werkzeug                  0.12.2           py36h866a736_0
wheel                     0.29.0           py36h6ce6cde_1
widgetsnbextension        3.0.2            py36h364476f_1
win_inet_pton             1.0.1            py36he67d7fd_1
win_unicode_console       0.5              py36hcdbd4b5_0
wincertstore              0.2              py36h7fe50ca_0
wrapt                     1.10.11          py36he5f5981_0
xlrd                      1.1.0            py36h1cb58dc_1
xlsxwriter                1.0.2            py36hf723b7d_0
xlwings                   0.11.4           py36hd3cf94d_0
xlwt                      1.3.0            py36h1a4751e_0
yaml                      0.1.7            vc14hb31d195_1  [vc14]
zict                      0.1.3            py36h2d8e73e_0
zlib                      1.2.11           vc14h1cdd9ab_1  [vc14]

(C:\Users\takaa\Anaconda3) C:\Users\takaa\Desktop\機械学習>
  • あらかじめ準備した訓練用のりんご、オレンジの画像を読み込ませ学習します。一つの訓練データを何回も繰り返し読み学習します。その回数をエポック(epoch)数と言います。読み込む回数が多いと過学習になるようで、逆に認識率が下がります。他にもニューロン数や各データとの関連性も重要な要素とのことです。詳しくは、これから勉強しようと思います。

f:id:takaaki-niikawa:20180128103948p:plain

f:id:takaaki-niikawa:20180128104007p:plain

  • ちなみに、今の訓練データからは、青りんごは残念ながらオレンジと判定されました…。

f:id:takaaki-niikawa:20180128104110p:plain

3.人工知能APIIBM Watson」で画像解析をしてみる

  • 後日、復習の上レポートしたいと思います!!!

Dell製 ノートPC(Windows 10) におけるタッチパッドの動作変更について

昨年末に購入したDell製 ノートPC のセットアップについての記録です。

  • 昨年末に、Dellのストアにて、ノートPC Inspiron 5570を購入しました。OSは、Microsoft Windows 10 Home (64bit)です。
  • みなさんはノートパソコンでキー入力時にタッチパッドに手が当たり、誤操作しちゃったことありませんか? 特にマウスが接続されているにも関わらず、タッチパッドも有効になっているのは意味がありませんよね。

  • 以下に、Dell製 ノートPC(Windows 10)でタッチパッドの設定を変更する方法を記載します。

タッチパッドの設定変更

  • スタートメニューを押します
  • 設定ボタンを押します f:id:takaaki-niikawa:20180127222910p:plain

Windowsの設定画面が開きます f:id:takaaki-niikawa:20180127222946p:plain

‐ 「マウスの接続時にタッチパッドをオフにしない」のチェックを外します

Windows 10 におけるファンクションキーの動作変更について

昨年末に購入したDell製 ノートPC のセットアップについての記録です。

  • 昨年末に、Dellのストアにて、ノートPC Inspiron 5570を購入しました。OSは、Microsoft Windows 10 Home (64bit)です。
  • みなさんは、ノートパソコンのキーボード最上段にある[F1]~[F12]のファンクションキーを使用していますか?
    • 以前、東芝製 ノートPCでWindows 7 を使用していました。Windows 7では、[F1]~[F12]のファンクションキーを単独で押した場合に、[F1]はヘルプ、[F2]はファイル名の変更、[F5]は最新の情報に更新といった機能を使用できます。また、[Fn]キーと[F1]~[F12]を同時押しの場合は特殊機能が使えます。例えば、[Fn]+[F5]は表示装置の切替え、[Fn]+[F8]は無線LANのオン/オフになります。
    • 東芝製 ノートPC の特殊機能キーは、下記資料を参照ください。

dynabook.com | サポート情報 | [FN]キーを使った特殊機能キーの操作について<Windows(R)7>

  • 今回購入したDell製 ノートPCのWindows 10は、[F1]~[F12]を単独で押した場合に特殊機能キーとなり、[Fn]キーと[F1]~[F12]を同時押しの場合ファンクションキーの動作になりました。(つまり、Windows 7までと逆の動作になります)
  • 以下に、[Fn]キーと[F1]~[F12]を従来の動作に変更する方法を記載します。

[Fn]キーと[Esc]キーと同時押しするだけです

  • 特に[Fn]キーと[Esc]キーと同時押ししても画面には何も表示されません。
  • しかし、これだけで、[Fn]キーと[F1]~[F12]を押した場合の動作が従来の動作に変わります。