logo

IT工房
Neural network learning with Python.
and Web Design

Git Hub Blog

最近の投稿

2020/05/26  
Python入門 オブジェクト指向について、クラスの作り方(動画あり)
2020/05/22  
Python入門 lambda関数の使い方、map関数の使い方(動画あり)
2020/05/21  
Python入門 位置引数、キーワード引数、デフォルト引数、便利な引数の使い方(動画あり)
2020/05/20  
Python入門 グローバル変数とローカル変数(動画あり)
2020/05/19  
Python入門 モジュールのインポートとrandomモジュール(動画あり)
2020/05/18  
Python入門 関数の定義方法(動画あり)
2020/05/15  
Python入門 内包表記(動画あり)
2020/05/14  
Python入門 zip関数(動画あり)
2020/05/13  
Python入門 for in文の活用(動画あり)
2020/05/12  
Python入門 for in文の基本(動画あり)

IT工房について

IT工房では、AI入門者に向けた技術ブログです。

Python入門から機械学習、ディープラーニング に関する技術的な内容をできるだけわかりやすく記事を書いています。
また、動画を有効に活用することで更に理解を深められるようにしています。

また、IT工房独自のアプリ開発やその支援にも携わる計画です。

今後の日本におけるAI発展に少しでも関われれば幸いです。

AI関連学習ノート

AI入門に関わる記事で特にIT工房でのお勧めの記事をピックアップしています。

IT系学習用動画の配信(動画あり)

IT系学習用動画の配信(動画あり)

IT工房では、IT系学習用の動画を配信します。 まずは、Python入門の動画を順次アップしていきますので、Python入門の参考にしてください。 それぞれの動画は、IT工房のVideoページから選ぶと解説も行っています。 Pythonには2系と3系がありますが、互換性がありませんので、ここでは新しいバージョンの3系を学習します。 なお、PythonコードはGoogle Colaboratoryを活用します。 Googleが提供する無料のJupyter Notebookを拡張したものです。 ビデオでは、入門者向けにゆっくり喋ってますので、1.5倍から2倍くらいのスピードで聞いても良いと思います。

scikit-learnで教師あり学習

scikit-learnで教師あり学習

IT工房では機械学習の解説を行っています。 教師あり学習とは、説明変数から目的変数を予測するモデルを作成するために、正解の目的変数から学習する方法です。 そのため、必ず説明変数と同時に正解となるような目的変数を用意する必要があります。 ちなみに、教師なし学習は正解例となる目的変数がない学習のことです。 *パラメータの表はscikit-learnのドキュメントをGoogle翻訳しただけのものです。分かりにくい日本語のところは原文を読むなどしてください。 回帰問題 回帰問題は説明変数と目的変数で学習をして、ある説明変数から目的変数を予測するものです。 具体的には、部屋の間取りと築年数、駅までの距離などの説明変数から家賃という目的変数を予測するものです。 scikit-learnにある回帰問題用の、Bostonの家賃を予測するサンプルデータを使ってそれぞれの学習器の特徴と使い方のポイント(ハイパーパラメータ)をまとめています。 重回帰分析 機械学習というよりも統計学で使用され続けている手法です。 回帰問題ではまずこれを試すと良いでしょう。 ちなみに、説明変数がひとつの場合は単回帰分析、説明変数が複数の場合は重回帰分析です。 なお、scikit-learnで単回帰分析する際は注意しなければならない点があります。 「単回帰分析でSCIKIT-LEARNに説明変数を準備する際の注意点」を参考に  >>続きを読む

Pandasの使い方まとめ(機械学習の事前準備でよく使う機能)

Pandasの使い方まとめ(機械学習の事前準備でよく使う機能)

機械学習を行う前の事前処理として、よく使うPandasの機能をまとめています。 1.とりあえず読み込んでおきたいライブラリ, 2.ファイルの読み込みと保存, 3.CSVファイルの読み込み, 4.CSVファイルの保存, 5.データの確認, 6.変数別の基本統計量の確認, 7.先頭からの表示, 8.後ろからの表示, 9.列に複数の同じ値がある場合、それぞれの値の数を調べる, 10.欠損値処理, 11.欠損値の削除, 12.欠損値を平均値で埋める, 13.欠損値を0にしてそれ以外の文字列を1にする, 14.欠損値に他の列の値を利用, 15.教師データの分離と削除, 16.教師データ分離, 17.教師データ削除(説明変数作成), 18.ダミー変数作成, 19.ダミー変数作成, 20.2値のカテゴリ変数を数値に変換, 21複数のカテゴリ変数をそのまま数値化する これ、結構使える, 22.複数のカテゴリ変数をそのまま数値化する factorize関数を使わない方法, 23.標準化, 24.学習用データとテストデータの分離, 25.ホールドアウト法, 26.列の値の取得, 27.ユニークな値の取得, 28.ある列の値を条件判定しておいて、Trueの行の別の列の値の平均をとる, 29.PandasからNumpyに変換とその逆, 30.Pandas形式のデータをNumpy形式にする方法, 31.Numpy形式のデータをPandas形式にする方法, 32.要素の頻度(出現回数), 33.ビニング処理(ビン分割),

Python入門で気をつけるポイント(1)知っておきたい決まりごと

Python入門で気をつけるポイント(1)知っておきたい決まりごと

Python文法の入門編段階で気をつけておくポイントです。 Pythonの語源はニシキヘビではなく、イギリスの代表的なコメディグループのMonty Pythonのコメディ番組「空飛ぶモンティ・パイソン」です。 とはいえ、ニシキヘビはロゴなどに使用されています。O’REILLYの本もニシキヘビです。 文法の勉強の前に、まずはPythonのコードスタイルガイドライン「PEP8」を読むことから始めましょう。 例えば、変数名や関数名はキャメルケースを使うのではなく、全部小文字のスネークケースを使うとなっています。ヘビつながりというわけではないでしょうが、他の言語からPythonを始めるときは注意しておく必要がありそうです。 また、数字の1や0と区別が付かない場合があるので、単一の文字 ‘l’ (小文字のエル)、’O’ (大文字のオー)、’I'(大文字のアイ) を変数に使わないようにしよう、などの記載があります。 さらに、書き方をアフォリズムとしてまとめたPEP20があります。PEP20は「 The Zen of Python 」とされていたもので、Pythonの設計思想が綴られています。 Python導入後ならコマンドで表示することができます。 PEP20を表示するコマンド 抜け落ちていそうな決まりごと 文字列とブロ  >>続きを読む

混同行列と性能評価指標

混同行列と性能評価指標

学習済みモデルが、どの程度良いか判定するする指標を性能評価指標といいます。 そこで登場するのが混同行列です。 混同行列について 余談ですが、普通に「こんどうぎょうれつ」と入力すると「近藤行列」と変換されてしまい、「混同行列」= 「近藤行列」とイメージが刷り込まれているのですが、近藤さんの行列はかなり重要ですからしっかりとマスターしましょう。 さて、混同行列とは、モデルの予測結果を、真陽性(True Positive)、真陰性(True Negative)、偽陽性(False Positive)、偽陰性(False Negative)のグループに分けて分類することです。 そして次のような表にすることができます。 予測されたクラス P N 実際のクラス P 真陽性TP 偽陰性FN N 偽陽性FP 真陰性TN 混同行列の意味 なんだかよくわからない表ですが、これは真陽性(True Positive)、真陰性(True Negative)、偽陽性(False Positive)、偽陰性(False Negative)の4つの観点で予測結果をまとめた表です。 要は予測結果と実際の結果を比較してどれくらい正解していたかを見るものです。 性能評価指標 分類モデルが他のものと比べて優れているかどうかを比較する基準になる数値が性能評価指標です。 性能評価指標には次のものがあります。 正解率:全てのデ  >>続きを読む

統計の基礎〜偏差、平均偏差、標準偏差、分散、標準化、偏差値について

統計の基礎〜偏差、平均偏差、標準偏差、分散、標準化、偏差値について

データのバラツキで出てくる言葉で、「偏差」、「平均偏差」「標準偏差」、「分散」とは何を行っているのか復習です。 データのバラツキを見るときにまず基準になるのは、平均です。 平均との関係を視点にして見ていくとわかりやすいと思います。 偏差 偏差はある値と各値の平均との差のことです。 偏差の値はマイナスになることもあります。 偏差 = 自分の点数 ー クラス平均の点数 実例 Aクラス、Bクラスとも4人の点数があります。話を簡単にするために極端な例にしています。 それぞれの点数は以下の表の通りです。 Aクラスの得点 得点 20 90 10 80 Bクラスの得点 得点 40 50 60 50 AクラスもBクラスも平均は50になります。 平均 = 50 けれども、そのバラツキは全く違います。それはグラフで確認すると明解です。 偏差を求める 偏差の合計は必ず 0 になります。 Aクラスの偏差 偏差 -30 40 -40 30 Bクラスの偏差 偏差 -10 0 10 0 せっかく偏差を覚えたからこれを利用して分析に役立てたいところですが、偏差の合計は必ず 0 になってしまうことから、数式的に活用することはこれ以上できません。せいぜいバラツキの度合いを知ることでしょうか。 平均偏差 けれども少し工夫すると偏差から平均偏差を求めることができます。 平均偏差とは、散らばりを表す指標のひとつで、それぞれ  >>続きを読む

Web関連学習ノート

IT工房はもともとWeb作成入門者を支援するところからスタートしました。
Web入門の原理原則的な記事を紹介しています。

z-indexこうすれば思い通り動く〜ネットや入門書では誤解を生む説明が多いので注意!

z-indexこうすれば思い通り動く〜ネットや入門書では誤解を生む説明が多いので注意!

HTMLとCSSのレイアウトで親要素の裏側に子要素を移動したい。つまり親子間での重ね順を変える場合どうしてますか? positionプロパティとz-indexプロパティを使って移動させるはずです。 でも、なかなか思い通りに動いてくれないはずです。 もしかしたら、親要素に 「z-index:0」 として子要素を 「z-index:-1」 にしていませんか? これは間違いです。 正しい設定は親要素を 「z-index:auto」にすることです。 残念ながら多くのネット情報や本では 「z-index」の説明が間違っています。 「z-indexを何も指定していない場合はz-index:0」 と言うのは間違いです。 正しくは「z-indexを何も指定していない場合はz-index:auto」です。 なぜ間違った説明が大量に出回っているのか? 誤解を生む原因はCSSの仕様書から来ていると思われます。 以下は「z-index」の値の説明からautoの部分の説明です。 auto : 現在のスタックコンテキストにおける生成ボックスのスタックレベルは0になる。 仕様書にあるスタックレベルは0になると言う記述です。 この記述が派生して誤解を生んでいると思われます。 けれどもCSS仕様書の記述はautoを使うことで対象要素の所属するスタックコンテキストを外れて、レベル0になるということです。つまり子要素を  >>続きを読む

CSSグリッドの基本〜display:gridの使い方

CSSグリッドの基本〜display:gridの使い方

Grid layoutについて これまでのfloatレイアウトで複雑なレイアウトを作成する場合には、divタグを多用するなどトリッキーな作業が必要でした。CSS3ではFlexレイアウトが開発され、フレキシブルなレイアウトが柔軟に作成できるようになりました。けれども、Flexboxによる方法も所詮は1次元の流れを調整するものです。 そして、今回紹介するGridレイアウトは2次元の配置が行えることがポイントで、より柔軟なレイアウトが可能になりました。それはあたかも紙面のレイアウトのようなものもシンプルなタグで実現できます。 仕様書:CSS Grid Layout Module Level 1 下の図は典型的なflex-layout 次の図はgrid-layout 使用可能なブラウザ 開発ブラウザはFirefoxがお薦めです。グリッドラインの表示と番号の表示が嬉しいです。 グリッドレイアウトコーディングの基本 サンプルコードはGitHubページへ 完成見本 グリッドレイアウトを行うにはまず次の名前を覚えましょう。 グリッドコンテナ:個々のグリッドを囲むコンテナ グリッドアイテム:コンテナ内の各子要素 グリッドトラック:2つのグリッドラインの間の領域のことです。明示的グリッド (explicit grid )と暗黙的グリッド (implicit grid) でもトラックは作成されます。 グ  >>続きを読む

floatの仕組みとoverflowでfloat解除できる理由

floatの仕組みとoverflowでfloat解除できる理由

フロートの基本動画 フロートについて HTML&CSSのコーディングで初心者泣かせなのがフロートを使ったレイアウトです。その理由は正しいfloatプロパティの原理原則を勉強してない事と、clearプロパティの正しい使い方を理解してないからです。 また、clearプロパティよりももっと簡単に使えるoverflowで解決する方法については、その仕組みがどこにもちゃんと解説されてないため、おまじない的な使い方という印象が拭いきれずに躊躇するためではないでしょうか。 今回はなぜoverflowを使うとフロート解除ができるのかその理由を解説しますが、まずfloatとclearの原理を簡単に復習しておきます。 floatの仕組み floatプロパティは値を「left」にすると左に配置され、「right」にすると右に配置されると単純に理解していると使いこなせません。正しい動きを理解しておきましょう。 floatの仕組みはCSSの仕様書の視覚整形モデル9.5 浮動のところに書いてあります。 また、フロートの仕組みを正しく理解するには包含ブロックの考え方を知っておく必要があります。まずは、包含ブロックについて調べておきましょう。 包含ブロックについての説明はこちら 視覚整形モデルで記述されているfloatプロパティは次のような仕様です。 浮動体の配置:’float’プ  >>続きを読む

FlexBoxの使い方(1)〜display:flexについて

FlexBoxの使い方(1)〜display:flexについて

通常フローしたブロック要素を横並びにするにはこれまでfloatプロパティを使用していましたが、その挙動は難しくて入門者を困らせる関門でした。CSS3で定義されたFlexBoxの仕組みを使うと簡単に横並びのレイアウトが出来上がります。また、今までできなかったこともうまく解決できるようになりました。まずは簡単に横並びのレイアウトを作成してみましょう。 FlexBox解説動画 通常フローのレイアウトを横並びのレイアウトに変更する例 上のような通常フローを下のような横並びのレイアウトに変えるにはflexレイアウトを使うと簡単です。 今回のサンプルとコード 通常フローレイアウトのサンプル 横並びレイアウトのサンプル HTMLコード 通常フローレイアウトのCSSコード 横並びレイアウトのCSSコード 作成手順 flexコンテナにdisplay:flexを記述するだけで横並びレイアウトが出来上がります。それだけでOK!!簡単なのです。 flexレイアウトを使うためには、「flexコンテナ」と「flexアイテム」2つの用語を覚えましょう。 flexコンテナとは横並びにするカラムをまとめる親要素 flexアイテムとは横並びにするカラムのこと あとは、flexコンテナに display : flex; とするだけ。 display:flexを使用するポイント 縦並びと横並びを明示的に指定する方法 全  >>続きを読む

人工知能について

ジョン・マッカーシーの画像人工知能(Artificial Intelligens)とはダートマス会議でジョン・マッカーシーが使った言葉です。

「人工知能 (Artificial Intelligence)」という用語は彼が1956年のダートマス会議のために1955年に出した提案書で初めて使用されました。また、ALGOL言語の設計に触発され、LISPというプログラミング言語を開発し、タイムシェアリングの概念を一般化させた人です。

人工知能の定義

実は人工知能の定義はいまだに明確化されていません。
これは、人工知能と呼ばれるシステムに対して、それを人工知能と呼ぶ人もいれば、それは人工知能ではないと主張する人も出てくるからです。

AI効果

AI効果とは、人工知能で何か新しいことが実現されても、その原理がわかってしまうと「単純な自動化であって知能とは関係ない」と結論付ける人間の心理的な効果のことをいいます。

このようなことから人工知能を定義することは難しいことのようです。
それでも、あえて説明するなら「推論、認識、判断などの知的処理能力を持つ情報システム」ということができるかもしれません。

人工知能の分類

深層学習教科書 ディープラーニング G検定(ジェネラリスト) 公式テキストには、人工知能をレベル分けすると次のようになると書かれています。
これも現時点の分類で、将来的には変わってくるものと思われます。

レベル1 シンプルな制御プログラム

あらかじめ単純な振る舞いが設定されたもの。
例えばエアコンの温度調整など。

レベル2 古典的な人工知能

探索、推論、知識データを活用した複雑な振る舞いをする仕組みのもの。
iRobotルンバなど。

レベル3 機械学習

機械学習した結果を取り入れた仕組みのもの。
スパムメール判定など。

レベル4 ディープラーニング

近年画像の認識は人を超えています。
これらの技術にディープラーニングが取り入れられています。

SNSで共有しましょう。