開発環境
- macOS Mojave - Apple (OS)
- Emacs (Text Editor)
- Windows 10 Pro (OS)
- Visual Studio Code (Text Editor)
- Python 3.7 (プログラミング言語)
はじめての機械学習 (小高知宏(著)、オーム社)の第4章(教示学習)、4.2(教示学習に基づくデータ分類システムの構成)、4.2.1(判断木構成支援プログラム)をC言語ではなくPythonで取り組んでみる。
コード
Python 3
#!/usr/bin/env python3
import sys
dataset = [line.split() for line in sys.stdin.readlines()]
dataset_n = len(dataset)
for j, _ in enumerate(dataset[0][:-1]):
print(f'p{j + 1}')
yes_n = 0
yes_point = 0
no_n = 0
no_point = 0
for data in dataset:
category = data[-1]
if data[j] == '1':
yes_n += 1
if data[j] == category:
yes_point += 1
else:
no_n += 1
if data[j] == category:
no_point += 1
for yes_or_no, point, total in zip(['Yes', 'No'],
[yes_point, no_point],
[yes_n, no_n]):
print(f'{yes_or_no:3} {point}/{total} {point/total}')
print()
入出力結果(Bash、cmd.exe(コマンドプロンプト)、Terminal、Jupyter(IPython))
$ ./decision.py < ex.txt p1 Yes 3/7 0.42857142857142855 No 2/3 0.6666666666666666 p2 Yes 3/7 0.42857142857142855 No 2/3 0.6666666666666666 p3 Yes 4/7 0.5714285714285714 No 3/3 1.0 p4 Yes 0/3 0.0 No 3/7 0.42857142857142855 $
0 コメント:
コメントを投稿