FAQ
Author
Ryo Nakagami
Modified
2025-12-19
統計分析
Note統計スキル習得の5つの観点
- 統計手法そのものの理解と,その背後にある数学を用いた理論の理解
- 実際のデータに対して統計手法を用いた分析を実行するためのプログラミングスキル
- データの前処理,環境構築,ソースコードのテストや管理,実装した推定量のデプロイなどのエンジニアリングスキル
- 統計学の考え方や発想(例:データ分析のお作法や結果の解釈方法など)
- そもそも解くべきの問題の見つけ方とその問題を解くにあたっての方法論
統計学の考え方や発想
「統計学の考え方や発想」を身につけることは
- データを取得したときに最初にすべきこと
- データ解析で意識しておくべきこと
- 結果を解釈するときに肝に銘じておきたいこと
へ繋がってきます.
Linux
NoteOSの役割
OSは以下の役割を担う:
- ユーザとのインタフェース機能(入力の受付・結果表示など)
- 記憶装置(ハードディスク,テープ等)やプリンタなどへのデータ入出力の管理
- メモリの管理やリソースの割り当て
- アプリケーションソフトウェアの実行管理(OSが存在しないと,アプリケーションは動作できない)
- システム全体を統括する中心部分としてカーネルを持ち,GNU/LinuxシステムではLinuxがそのカーネルにあたる
Noteカーネル情報の確認
表示フィールドは
| フィールド | 例(あなたの環境) | 説明 |
|---|---|---|
| Kernel name | Linux |
カーネルの種類(通常 Linux) |
| Hostname | ryo-billiken-Desktop |
ホスト名(マシン名) |
| Kernel release | 6.14.0-35-generic |
カーネルのリリースバージョン |
| Kernel version | #35~24.04.1-Ubuntu |
カーネルのビルド番号+ディストリビューション情報 |
| Build date | Tue Oct 14 13:55:17 UTC |
カーネルがビルドされた日時 |
| Build number / ABI | 2 |
ABI 番号や追加のビルドメタ情報 |
| Machine hardware name | x86_64 |
CPU アーキテクチャ(ハードウェア) |
| Processor type | x86_64 |
プロセッサタイプ(多くの Linux は machine と同じ値) |
| Hardware platform | x86_64 |
ハードウェアプラットフォーム(多くの環境で machine と同じ) |
| Operating system | GNU/Linux |
OS 種別 |
NoteLinuxを学ぶ意義は?
- Linuxは世界でもっとも使われているOSであり,サーバやクラウド環境で広く採用されている
- コンピューターはOS上で動作し,多くの機器がLinuxを搭載していることから,身の回りのコンピュータがどのような仕組みで動いているか理解する上でLinuxを学ぶ意義がある
- データ分析実践の場面では,分析サーバやクラウド環境の多くがLinuxを基盤としており,操作や管理能力は実務上重要
- Linuxの知識を身につけることで,効率的なデータ処理,自動化,環境構築など幅広いタスクを自力で行えるようになる
NoteUbuntuとは?
- Debian GNU/Linuxをベースとしたディストリビューション
- パッケージはDebianと同じく
.deb形式,パッケージマネージャもAPT(Advanced Packaging Tool) を基本的には用いる - Canonical社から支援を受けつつ,コミュニティーベースで開発
Ubuntuにもいろいろなバリエ=ションがあり,代表例は以下
| バリエーション | 用途・特徴 | デスクトップ環境 | サポート期間 |
|---|---|---|---|
| Ubuntu Desktop | 一般ユーザー向けデスクトップ | GNOME | LTS: 5年 |
| Ubuntu Server | サーバー向け,GUIなし | なし(CLI中心) | LTS: 5年 |
| Ubuntu Cloud | クラウド環境向け(AWS, Azure, OpenStackなど) | なし | LTS: 5年 |
| Ubuntu Core | IoT・組み込み向け,スナップ中心 | なし | リリースによる |
LTS系を使うときは,初回リリースには「未知のバグやハードウェア非対応」がある場合があるので基本的には 22.04.2 のような .2 ポイントリリース以降を用いること
Noteディレクトリ構造の理解が必須
- データ取得・前処理・Notebookの配置・スクリプト実行など分析の中心はファイルやフォルダの操作
- CLI のほうが正確で速い
- CLI はパス指定で動くためディレクトリ構造の把握が必須
- サーバーやクラウドは GUI が使えない
- 再現性と品質管理にディレクトリ設計が不可欠
- CLI コマンドはそのまま自動化できるが,GUI 操作はできない
- そもそもUnix / Linux システムでは,「UNIXがインストールされたコンピューター(ホスト)に,ネットワーク経由で複数の別のコンピューター(ターミナル)から接続して作業を行う」という利用方法が基本なので,CLI利用が基本
NoteUbuntuセットアップ命名規則
NoteUbuntu Hostname Guideline
| カテゴリー | 例 | 特徴 |
|---|---|---|
| ① 動物・神話生物 | ryo-griffinryo-pegasusryo-dragon |
・印象に残る ・長期運用向き |
| ② プロジェクト名 | ryo-regmonkeyryo-digitaltwinryo-hvac |
・用途が明確 ・ワークスペースや実験環境に最適 |
| ③ 英語の形容詞+名詞 | ryo-silverfoxryo-blueoak |
・自由度が高い |
環境構築
Noteなぜデータサイエンティストにとって,ネットワークやサーバーなどの基盤知識が必要なのか?
- 自分で好きなように分析環境を整えられるようになる
- リソース不足時に,アルゴリズムの最適化のほか,スケールアップなどのインフラ計画まで踏み込んだ包括的な対応ができるようになる
- システムトラブル時にどこに問題があるか,どのように対策すれば良いかが判断できるようになる
Python分析環境
NoteQuick setup for ad-hoc analysis
pytestやruffをこだわりなくクイックに用いたい場合はuvx(oruv tool run) を用いるPyproject.tomlで管理されていないディレクトリでもコマンド自体は利用可能
プログラミング
Note哲学としてのオブジェクト指向設計(OOD)
- 解決しようとする現実の問題を上手く理解できる形に整理・表現(モデリング)した上で,自分の経験やベストプラクティスをパターンという形に結晶化し,それを再利用すること
- 問題をどう捉え,どう構造化するかという思考法そのものを重視
- 「オブジェクト指向設計」自体に拘るのではなく「問題解決に使えるオブジェクト指向設計」という考えが重要
NoteCLIコマンドの引数とオプションの順番
NotePythonの特徴
- Javaのようにオブジェクト指向を全面に出さないため,クラスに属さない関数やグローバル変数が定義可能
- 一方,データ型はすべてクラスであり,個々のデータ値はインスタンス
ドキュメント
Note
man ドキュメント
- デフォルトでは
lessを用いて表示される passwdコマンドと/etc/passwdファイルなど,同じ名前のコマンドやファイルはセクションによって区別します- コマンドやファイル名の一部しかわからない場合は,
aproposコマンドを用いると見出し一部部分マッチで候補を検索することができる
| セクション番号 | セクション名 | 内容 |
|---|---|---|
| 1 | User Commands | 一般ユーザ向けコマンド(例:ls, cat, grep) |
| 2 | System Calls | カーネルが提供するシステムコール(例:open, read) |
| 3 | Library Calls | ライブラリ関数(例:printf, malloc) |
| 4 | Special Files | デバイスファイル・特殊ファイル(例:/dev/null) |
| 5 | File Formats | 設定ファイル・ファイル形式(例:passwd, fstab) |
| 6 | Games | ゲーム・娯楽プログラム |
| 7 | Miscellaneous | 規約・標準・マクロ・プロトコル等 |
| 8 | System Administration | 管理者向けコマンド(例:mount, iptables) |
| 9 | Kernel Routines | カーネル内部 API(主に開発者向け) |
Business Communication Skill
NoteなぜWriting Skillsを学ぶ必要があるのか?
Note語彙の重要性
word(語彙)は言語や文章,パラグラフの重要なbuilding blocks(構成要素)- どのような語彙が適切かはどのような場面でのコミュニケーションを想定しているかに依存する