270 Views
January 29, 23
スライド概要
トピックス:Python, データフレーム, ヒストグラム, クラスタリング, 外れ値, ディープラーニング, 人工知能
ディープラーニング(スライドとプログラム例,Python を使用)(全15回)
https://www.kkaneko.jp/ai/ae/index.html
金子邦彦研究室ホームページ
https://www.kkaneko.jp/index.html
金子邦彦(かねこくにひこ) 福山大学・工学部・教授 ホームページ: https://www.kkaneko.jp/index.html 金子邦彦 YouTube チャンネル: https://youtube.com/user/kunihikokaneko
11. 実データの分析,意味の抽 出,外れ値の判断 (ディープラーニング,Python を使用) (全15回) https://www.kkaneko.jp/cc/ae/index.html 金子邦彦 1
全体まとめ クラスタリング Iris データセット ヒストグラム クラスタリングののち,外れ値を除去 2
アウトライン 番号 項目 11-1 11-2 11-3 11-4 11-5 11-6 復習 Python まとめ Python のデータフレーム ヒストグラム クラスタリング 外れ値 演習 各自,資料を読み返したり,課題に取り組んだりも行う 3
データサイエンス • データの正しい取り扱いと活用 • 統計,数学を基礎とする データサイエンスの用途はさまざま クラスタリング 分離 分類 予測 など 4
クラスタリング 訓練データ 近くにあるデータを 1つにまとめる クラスタリング:データの密集を見ることによる 分析 5
分離 訓練データ 集まっているものを正常と 考え,それ以外は異常 分離(異常と正常の分離など) 6
アヤメ属 (Iris) • 多年草 内花被片 • 世界に 150種. 日本に 9種. • 花被片は 6個 外花被片 • 外花被片(がいかひへん) Sepal 3個(大型で下に垂れる) • 内花被片(ないかひへん) Petal 3個(直立する) 7
Iris データセット Iris データセット(データ数は 50 × 3) のうち、先頭 10 行 ◆ 3種のアヤメの外花被 辺、内花被片を計測 ◆ 種類も記録 setosa versicolor virginica ◆ データ数は 50 × 3 外花被片(Sepal) 内花被片(Petal) 種類 の長さと幅 の長さと幅 作成者:Ronald Fisher 作成年:1936 特徴量 ラベル 8
Iris データセットの散布図 縦 軸 : 内 花 被 片 の 幅 横軸:内花被片の長さ 次の3種類の分類済みのデータ 0: setosa 1: versicolor 2: virginica 9
Iris データセットと配列(アレイ) [0 0 0 0 0 0 0 0 0 0 Iris データセット 特徴量(数値) サイズ:150 × 4 ラベル(数値) サイズ:150 setosa → 0 versicolor → 1 virginia → 2 ラベルの数値化 10
Iris データセットは Python でも利用可能 ソースコード import matplotlib.pyplot as plt import seaborn iris = seaborn.load_dataset('iris') print(iris) 11
Iris データセットのクラスタリング 内花被片,外花被片の長さと幅で,クラスタリング を行う. クラスタ数 = 2 に設定 クラスタ数 = 3 に設定 12
11-1. Python まとめ 13
Python • プログラミング言語 • 「入門者に学習しやすい」とされる • 多数の拡張機能(外部プログラムのインポートに よる) 実行結果 ソースコード 14
オブジェクト,変数,メソッド,代入,変数 • オブジェクト:コンピュータでの操作や処理の対象と なるもののこと • 変数:名前の付いたオブジェクトには,変数,関数な どがある(「変数」は,数学の変数とは違う意味) • メソッド: オブジェクトに属する操作や処理.メソッド 呼び出しでは,引数を指定することがある.引数(ひ きすう)は,メソッドに渡す値のこと Hero.attack("fence", 36, 26) • 代入:「=」を使用.オブジェクトの値が変化する b = a + 100 15
オブジェクトとメソッド hero.moveDown() Python プログラム hero オブジェクト moveDown() メソッド 間を「.」で区切っている • メソッド: オブジェクトに属する操作や処理. • メソッド呼び出しでは,引数を指定することがある.引数 (ひきすう)は,メソッドに渡す値のこと Hero.attack("fence", 36, 26) 16
代入 • 代入:プログラムで,「x = 100」のように書く と,x の値が 100 に変化する x = 100 プログラム 実行結果 17
メソッドアクセス,代入 Python プログラムの例 x = 100 a = x + 200 enermy1 = hero.findNearestEnemy() hero.attack(enemy1) • 代入:オブジェクト名 + 「=」 + 式または値またはメソッド呼び出し • メソッドアクセス:オブジェクト名 + 「.」 + メソッド名 +「()」 (引数を付けることも) Python プログラムでは,その他にも,属性アクセス,関数 呼び出し,制御,「*」, 「+」などの演算子,コマンド, 18 定義など
11-2. Python のデータフレーム 19
Python のデータフレーム 表形式のデータ 0 1 2 3 4 5 x 1 1 1 2 3 3 y 4 2 5 4 5 3 データ本体 20
Python のデータフレームを組み立てるプログラム 0 1 2 3 4 5 x 1 1 1 2 3 3 y 4 2 5 4 5 3 データフレーム データフレームの作成と確認表示 データフレームの組み立て,結果は df に代入 df = pd.DataFrame([[1, 4], [1, 2], [1, 5], [2, 4], [3, 5], [3, 3]], columns=['x', 'y']) 21
データフレームから散布図を作成するプログラム 「data=df」では,散布図を作成したいデータフレームのオ ブジェクト名が df であることを指定 22
11-3. ヒストグラム 23
ヒストグラム① • ヒストグラムは,データ全体を同じ大きさで分割 し,数え上げを行う.データ全体の分布をみる 3個 1個 元データ 2個 ヒストグラム (帯の数は3, 基準は x) 24
ヒストグラム② 2個 2個 1個 1個 元データ ヒストグラム (帯の数は4, 基準は y) 25
ヒストグラム② 4個 1個 1個 元データ ヒストグラム (帯の数は4, 基準は y) 26
ヒストグラム①を得る Python プログラム • 帯の数: 3 • 基準: x x 3 27
まとめ • ヒストグラムは,データ全体を同じ大きさで分割 し,数え上げを行う.データ全体の分布をみる 3個 1個 2個 同じ大きさで分割し、数え上げ 28
11-4. クラスタリング 29
クラスタリング クラスタリング • クラスタリングは,近いデータをまとめて,1グ ループ(=クラスタという)にする 30
クラスタリングの例① クラスタ数を 2 に設定 0 1 2 3 4 5 x 1 1 1 2 3 3 y 4 2 5 4 5 3 元データ 1 0 1 1 1 0 クラスタリング結果 は番号 クラスタリング結果 を色付きの散布図で プロット 31
クラスタリングの例② クラスタ数を 3 に設定 0 1 2 3 4 5 x 1 1 1 2 3 3 y 4 2 5 4 5 3 元データ 0 1 0 0 0 2 クラスタリング結果 は番号 クラスタリング結果 を色付きの散布図で プロット 32
クラスタリング①を行う Python プログラム • クラスタ数: 2 2 クラスタリングでは,乱数が使用されるため, 実行のたびに違った値になる可能性がある 33
まとめ クラスタリングは,近いデータをまとめて,1グ ループにする.クラスタ数を設定可能 0 1 2 3 4 5 x 1 1 1 2 3 3 y 4 2 5 4 5 3 元データ 1 0 1 1 1 0 クラスタリング結果 クラスタリング結果 を色付きの散布図で プロット は番号 34
11-5. 外れ値 35
平均 • 平均の基本,合計して,データの個数で割る 10, 40, 30, 40 の平均: 120 ÷ 4 で 30 • 複数の値の組の平均を考えることもある (10, 5), (40, 10), (30, 5), (40, 20) の平均: 合計は 120 と 40.4で割って (30, 10) 平均は,データ集合の代表とみる ことができる場合がある 平均 計測に誤差があるとき, 複数の計測を繰り返し,平均をとる ことで,誤差を軽減できることも 36
平均を使うときの注意点 平均 平均 このような平均に, 意味があるでしょうか? データの分布によっては,平均では役に 立たないこともある. (平均は万能ではない) 37
クラスタリングでの各クラスタの中心 • クラスタ数: 2 0 1 2 3 4 5 x 1 1 1 2 3 3 y 4 2 5 4 5 3 元データ 1 0 1 1 1 0 2つのクラスタの中心 クラスタリング結果 は番号 38
各クラスタの中心からの距離 • 元データが 6個のとき,距離は 6個算出される 2 0 1 4 3 5 算出された距離 2つのクラスタの中心 からの距離 • 距離が極端に大きいものは,外れ値と判断できる 39
まとめ クラスタの中心からの遠近が,外れ値であるかの判 断に使える場合がある 2 0 1 4 3 5 2つのクラスタの中心 からの距離 40
11-6. 演習 41
今回の演習の特徴 • Python で自動化する • Excel よりも、きれいなグラフをめざす • Excel では難しいこと(クラスタリング,外れ値の 判断)も行う • Python の簡単なプログラムで行う 書き換えて違う結果を得る,考察すること にもチャレンジ 42
Google Colaboratory の使い方概要 ① 実行 コードセル Google Colaboratory ノートブック コードセルの再実行や変更には, Google アカウントでのログインが必要 43
Google Colaboratory の使い方概要 ② 実行 コードセル テキストセル 実行 コードセル • WEBブラウザでアクセス • コードセルは Python プログラム. 各自の Google アカウント でログインすれば, 変更,再実行可能 一番上のコードセルから順々に実行 44
Google アカウント Google アカウントの取得が必要 • 次のページを使用 https://accounts.google.com/SignUp • 次の情報を登録する 氏名 自分が希望するメールアドレス <ユーザー名>@gmail.com パスワード 生年月日,性別 45
演習 1. 使用するページ: https://colab.research.google.com/drive/1eGdELBNegyEoF43u eYqwa6WDk13_7yuY?usp=sharing 2. 必要な事前知識 Python の基本,散布図,クラスタリング,クラスタリング の中心からの距離 3. 各自で行うこと ①各自で説明、ソースコード、実行結果を確認する. ②セレッソでの「各自の演習の指示」 ③セレッソの「課題」 46
全体まとめ クラスタリング Iris データセット ヒストグラム クラスタリングののち,外れ値を除去47