忍者ブログ
統計、機械学習、AIを学んでいきたいと思います。 お役に立てば幸いです。

【Julia】Juliaでソースファイルを作成して実行する手順

前回はターミナルの対話型環境(REPL)を使ってその場でコードを実行しましたが、本格的なプログラム開発や機械学習のモデル構築では、コードをファイルに保存して実行するのが一般的です。今回は、拡張子「.jl」のソースファイルを作成し、ターミナルから一発で実行するまでの手順を解説します。

※本記事の手順は、MacBook Air(macOS 15.7.7)の環境にて実際に動作を確認したログをベースに作成しています。

1. 【 概要 】

Juliaのプログラムが書かれたテキストファイルは、ソースファイル(またはスクリプトファイル)と呼ばれ、拡張子「.jl」を付けて保存します。今回は、使い慣れたターミナルのコマンド操作を使ってソースファイルを作成し、対話型環境を起動することなく直接ファイルを指定してプログラムを実行する手順を整理します。


2. 【 基本手順 】

(1) 拡張子「.jl」を付けたソースファイルを作成する
(2) ファイル内に実行したいJuliaのコードを記述して保存する
(3) ターミナルから `julia ファイル名` コマンドで実行する

3. 整理:各ステップの具体的な処理内容

ターミナル上でのファイル操作と実行の流れを、ステップごとに具体的に見ていきましょう。

【 ファイル作成と実行の具体的な処理内容 】

ステップ(1)&(2):ソースファイルの作成と編集
作業用のディレクトリ(フォルダ)に移動し、`main.jl` という名前のファイルを作成します。
ターミナルから `nano` や `vim` などのエディタを開き、ファイル内にJuliaのコードを書き込んで保存します。

ステップ(3):ターミナルからの直接実行
ファイルが保存できたら、ターミナルで `julia main.jl` と入力してエンターキーを押します。
対話型環境(REPL)の画面を開くことなく、Juliaがファイルを読み込んで内部のコードを上から順に高速実行し、結果をターミナルに直接出力して処理が終了します。

4. 関連して押さえたい「対話型環境(REPL)とファイル実行の使い分け」

Juliaを使った開発では、これまでに学んだ「対話型環境(REPL)」と、今回の「ファイル実行」を目的や状況に応じて使い分けるのが鉄則です。

対話型環境(REPL)は、1行ずつコードを入力してその場で結果を確認できるため、「この関数はどんな動きをするだろう?」「このデータの形状はどうなっているだろう?」といった、試験的なコードの動作確認やデータの簡単な分析・可視化に向いています。

一方、ファイル実行は、一度記述した一連の処理(データの読み込み、前処理、学習、結果の保存など)を何度でも正確に再現できるため、本番用のプログラム構築や、長時間の計算を行う機械学習のバッチ処理などに向いています。実際の開発では、REPLでパーツごとにテストしたコードを、最終的に一つの `.jl` ファイルにまとめるという流れが主流になります。


5. 補足:実際のターミナル操作ログ

ターミナル上で簡単なソースファイルを作成し、それをJuliaで直接実行した際の操作ログをまとめました。
コードやコマンドが1行で長くなりすぎないよう、適宜改行を入れて読みやすくしています。

# 1. ファイルへコードを書き込み
% echo '
println("Hello from script file!")
' > main.jl

# 2. ファイルの中身を確認
% cat main.jl
println("Hello from script file!")

# 3. juliaコマンドで直接実行
% julia main.jl
Hello from script file!
%

6. まとめ

Juliaの環境構築、対話型環境での動作確認に続き、今回の「ソースファイル(.jl)からの実行」をマスターしたことで、本格的なプログラミングを行うための基本手順がすべて揃いました。これからはどれだけ長いコードや複雑な機械学習アルゴリズムであっても、ファイルに保存しておくことでいつでも一瞬で呼び出して実行できます。強力なJuliaスクリプトをガシガシ書いていきましょう!


PR

【Julia】Julia的インストールとHello Worldまでの手順

機械学習やデータサイエンスの分野で、Pythonに続く次世代の高速なプログラミング言語として注目を集める「Julia」。環境構築と聞くと難しく感じるかもしれませんが、ターミナルが好きなMacユーザーなら、コマンド数発で驚くほどシンプルに導入が完了します。今回は、インストールから最初のプログラムを動かすまでをすべてターミナル完結で行う手順を解説します。

※本記事の手順は、MacBook Air(macOS 15.7.7)の環境にて実際に動作を確認したログをベースに作成しています。

1. 【 概要 】

Juliaは、Pythonのような「書きやすさ」と、C言語のような「圧倒的な実行速度」を両立したオープンソースのプログラミング言語です。今回は、Mac環境においてブラウザやインストーラーの画面を一切開かず、パッケージマネージャー(Homebrew)を利用してターミナルだけでJuliaを導入し、そのまま最速で「Hello World」を出力させるまでの手順を整理します。


2. 【 基本手順 】

(1) Homebrew(cask)を使ってJuliaをターミナルからインストールする
(2) インストールが成功したか、バージョン確認コマンドでチェックする
(3) ターミナルでJuliaの対話型環境を起動し、Hello Worldを出力する

3. 整理:各ステップの具体的な処理内容

GUIツールを一切使わず、コマンドラインだけでスマートに進めていきます。それぞれのステップを具体的に見ていきましょう。

【 インストールと実行の具体的な処理内容 】

ステップ(1):Homebrewでのインストール
Macの定番パッケージマネージャーであるHomebrewを利用します。ターミナルを開き、`brew install --cask julia` コマンドを実行します。これにより、自動的にMacの環境に合わせた最適なJuliaのバイナリがダウンロードされ、アプリケーションフォルダへの配置やパスの自動設定までがワンコマンドで完了します。

ステップ(2):動作とバージョンの確認
インストールが終わったら、無事にシステムがJuliaを認識しているかを確認します。ターミナルで `julia --version` を実行し、現在導入されたJuliaのバージョン番号が正常に返ってくるかを確認します。

ステップ(3):Hello Worldの出力
ターミナルに `julia` とだけ打ち込んでエンターキーを押すと、Juliaの対話型実行環境(REPL)が起動します。プロンプトが切り替わったら、文字列を出力する関数 `println()` を実行し、画面に「Hello, World!」が表示されることを確認します。最後は `exit()` でターミナルに戻ります。

4. 関連して押さえたい「Juliaが機械学習で注目される理由」

なぜ今、データサイエンスの現場でJuliaを学ぶ必要があるのでしょうか?それはJuliaが持つ「2つの言語の問題(Two-Language Problem)」の解決という特徴にあります。

従来の機械学習では、プログラミングのしやすさから「Python」でコードを書き、速度が必要な計算処理の内部(ライブラリ)は「C言語」や「C++」で開発するという、2つの言語を組み合わせるアプローチが一般的でした。しかし、これでは開発やメンテナンスが非常に複雑になります。

Juliaは、コード自体は非常にシンプルで読みやすいにもかかわらず、内部で高度なJITコンパイル(実行時コンパイル)を行うため、C言語並みの超高速処理を単体で実現できます。この「1つの言語で全て完結する」強みが、大規模なデータを扱う機械学習の現場で熱視線を浴びている理由です。


5. 補足:実際のターミナル操作ログ

ターミナル愛好家のために、実際に実行するコマンドと、その際に出力される実際のログをまとめました。エラーなく進めるためのカンペとしてご活用ください。

# 1. Juliaのインストール
% brew install --cask julia
==> Downloading https://julialang-s3.julialang.org/...
==> Installing Cask julia
julia was successfully installed!

# 2. バージョン確認でパスが通っているかチェック
% julia --version
julia version 1.12.6

# 3. Juliaを起動してHello Worldを実行
% julia
               _
   _       _ _(_)_     |  Documentation: https://docs.julialang.org
  (_)     | (_) (_)    |
   _ _   _| |_  __ _   |  Type "?" for help, "]?" for Pkg help.
  | | | | | | |/ _` |  |
  | | |_| | | | (_| |  |  Version 1.12.6 (2026-04-09)
&nbsp_/ |\__'_|_|_|\__'_|  |  Official https://julialang.org release
|__/                   |

julia> println("Hello, World!")
Hello, World!

julia> exit()
%

6. まとめ

データサイエンスや機械学習の新定番として期待されている言語「Julia」も、ターミナルとHomebrewを使えば、一切マウスに触れることなく一瞬で環境構築が完了します。パッケージ管理(Pkg)や外部ライブラリの呼び出しもすべてターミナル上で美しく完結させられるのがJuliaの魅力です。強力な計算環境が手に入ったところで、新しい言語の世界へ一歩踏み出してみましょう!



【機械学習の知識】数式なしでわかる統計モーメントの仕組みとアルゴリズム

データの集まり(分布)がどのような形をしているかを数値で表現したい。平均値や分散だけでなく、左右の非対称さや尖り具合までを系統的に捉えるための概念が、統計モーメント(積率)です。

1. 【 概要 】

統計モーメントとは、確率分布やデータの「形状の特徴」を段階的に切り出すための指標です。1次、2次、3次、4次と次数が上がるにつれて、データの中心位置から始まり、広がり方、非対称性、尖り具合といった、より詳細な形状の情報が得られるようになります。


2. 【 基本アルゴリズム 】

1次モーメント ・・ 中心の位置の分布(平均値)
データの重心がどこにあるかを表す、最も基本的な指標です。

2次モーメント ・・ ちらばり(分散)
データが中心(平均)からどれくらい広く散らばっているかを表します。

3次モーメント ・• 歪度(わいど)
分布の左右の「非対称さ」や傾き具合を表します。

4次モーメント ・• 尖度(せんど)
分布の頂点がどれくらい「尖っているか」、または裾野がどれくらい厚いかを表します。

3. 整理:各次数の具体的な処理内容

統計モーメントは、次数ごとにデータの異なる特徴を計算します。それぞれのステップと意味を具体的に見ていきましょう。

【 各モーメントの具体的な処理内容 】

1次モーメント(平均値)の処理
すべてのデータを足し合わせて、データの個数で割ることで、分布の「重心(中心の位置)」を特定します。

2次モーメント(分散)の処理
各データが「平均値からどれだけ離れているか(偏差)」を計算し、それを2乗したものの平均をとります。2乗することで、中心からの「距離(ちらばり)」を正の数として正しく評価できます。

3次モーメント(歪度)の処理
平均からの偏差を3乗して計算します。3乗するとプラスとマイナスの符号が残るため、分布の裾が右側に伸びているか、左側に伸びているかという「非対称さ」が分かります。

4次モーメント(尖度)の処理
平均からの偏差を4乗して計算します。4乗することで、中心から極端に離れたデータ(外れ値)の影響が強調され、分布の頂点の「尖り具合」や「裾野の厚み(外れ値の出やすさ)」を浮き彫りにします。

4. 関連して押さえたい「機械学習(特徴量エンジニアリング)への応用」

この統計モーメントは、機械学習において非常に重要な「特徴量エンジニアリング」の技術として応用されています。

例えば、音声データやセンサーデータ(時系列データ)を機械学習モデルに入力する際、そのままの波形データでは複雑すぎて学習がうまくいきません。そこで、一定時間ごとのデータの「平均(1次)」「分散(2次)」「歪度(3次)」「尖度(4次)」を計算し、波形の特徴をぎゅっと凝縮した数値(特徴量)に変換してからモデルに投入します。

このように、統計モーメントを使うことで、複雑なデータの性質をシンプルかつ強力に表現できるようになります。


5. 補足:正規分布を基準にする「歪度と尖度」の数値

データ分析で3次・4次モーメント(歪度・尖度)を扱う際、最も美しい対称の形である「正規分布」が基準になります。

歪度:完全に左右対称な正規分布では「0」になります。右に裾が長い分布(左側にデータが集中)ならプラス、左に裾が長い分布ならマイナスの値をとります。
尖度:数式の定義の仕方にもよりますが(正規分布の値を引く補正を行う場合)、正規分布の尖度を「0」とします。正規分布より頂点が鋭く尖っている分布はプラス(正)、平べったい分布はマイナス(負)の値をとるため、視覚的にデータの尖り具合を判断できます。


6. まとめ

データサイエンスや機械学習の現場において「データの形状を1次から4次の段階的な特徴で表す手法」と言えば、この統計モーメントです。中心(1次)、ちらばり(2次)、歪度(3次)、尖度(4次)というアルゴリズムの階層的な繋がりを理解し、データの性質を深く見極められるようになりましょう!


【DS検定対策】異常値に負けないタフな指標!統計量の「堅牢性(ロバスト性)」

データの中に数件の異常値(外れ値)が混ざっただけで、計算結果がガラリと変わってしまうようでは実務で使えません。ノイズに対するタフさを表す言葉が「堅牢性」です。

1. 【 問題 】

統計学や機械学習において、データの中に極端な外れ値や異常値、測定エラーなどが含まれていても、その影響をあまり受けずに、集団の実態を正しく推測できる(統計量やモデルの)性質のことを何と呼ぶでしょうか?

① 局所性
② 堅牢性(頑健性 / ロバスト性)
③ 収束性
④ 柔軟性


2. 【 解答 】

正解: ② 堅牢性(頑健性 / ロバスト性)

3. 整理:これまでに学んだ指標の「堅牢性」チェック

これまでに登場した基本統計量を、「堅牢性が高いチーム(異常値に強い)」と「低いチーム(異常値に弱い)」に分けて整理すると、試験対策としても完璧です。

グループ具体的な統計量なぜそう言えるのか?
堅牢性が高い
(ロバスト)
中央値
四分位範囲(IQR)
トリム平均
端っこのデータを無視したり、順位の真ん中だけを見たりするため、どれだけ極端な異常値が来ても数値がブレにくい。
堅牢性が低い
(非ロバスト)
平均値
範囲(レンジ)
分散 / 標準偏差
「すべての値を足す」「最大と最小の差をとる」「差を2乗する」といった計算を含むため、1つの異常値で全体が崩壊する。

5. DS検定形式:実戦4択クイズ

問:統計量だけでなく、データ分析モデル全体において「堅牢性(ロバスト性)」を確保するアプローチとして、最も不適切なものはどれか。

① 線形回帰において、外れ値の影響を抑える「ロバスト回帰(Huber損失など)」を適用する。
② 前処理の段階で、トリム平均などを応用して明確な異常値を除外(クレンジング)する。
③ 予測精度を極限まで高めるため、手元にある訓練データのノイズ(異常値)も含めて100%完璧にフィットするようモデルを複雑にする。
④ 外れ値に引きずられやすい「範囲(レンジ)」の代わりに、「四分位範囲(IQR)」を散布度の指標に採用する。

【 正解: ③ 】

解説: 訓練データのノイズまで完璧に合わせようとすると、以前に学んだ過学習(オーバーフィッティング)を引き起こし、未知のデータに対する堅牢性(汎化性能)がガタ落ちしてしまいます。ノイズを適度にいなす(無視する)ことこそが、堅牢性を保つ秘訣です。


6. まとめ

DS検定において「異常値やノイズの影響を受けにくい統計量や性質」というキーワードが出たら「堅牢性(頑健性、ロバスト性)」です。実務のシステム運用やデータ分析でも、「このシステム(または指標)はロバストか?」という視点は常に求められます。これまでに学んだ各指標の特徴とセットで記憶に刻んでおきましょう!


【DS検定対策】外れ値をカットして実態を掴む!「トリム平均」の仕組み

すべての値を足して割る「平均値」は、極端な値(外れ値)が1つあるだけで数値が跳ね上がってしまいます。その弱点を克服するために、上下のデータを一定割合だけ切り落としてから計算するのがトリム平均です。

1. 【 問題 】

統計学において、データの集団から極端に大きい値(最大値側)と極端に小さい値(最小値側)を、あらかじめ決めた一定の割合(または個数)だけ除外した上で、残ったデータを用いて算出する平均値のことを何と呼ぶでしょうか?

① 加重平均
② 幾何平均
③ トリム平均(調整平均)
④ 移動平均


2. 【 解答 】

正解: ③ トリム平均(調整平均)

3. 整理:トリム平均の計算イメージ

例えば、スポーツの審査(フィギュアスケートやスキージャンプなど)で、審判全員がつけた点数のうち「最高点」と「最低点」を除外して残りの平均をとるルールがあります。これがまさにトリム平均の思想です。

【 具体例:10%トリム平均の場合 】

元のデータ:データを大きさ順に並べます。
[ 10, 45, 50, 52, 55, 56, 58, 60, 62, 990 ] (データ数 10個)

トリム処理:上下からそれぞれ10%(1個ずつ)をカットします。
[ 10 ][ 990 ] を除外!

平均を計算:残った中間の8個だけで平均を計算します。
[ 45, 50, 52, 55, 56, 58, 60, 62 ] の平均 = 54.75

--------------------------

ここがメリット:
普通に平均をとると「143.8」になってしまい実態が見えなくなりますが、トリム平均を使うことで、最後の「990」という異常値(外れ値)の影響を完全にシャットアウトし、集団の本来の特徴をきれいに抽出できます。

4. 代表値としての「強さ」の位置づけ

データが外れ値に対してどれくらい強いか(影響を受けにくいか)という性質を「頑健性(ロバスト性)」と呼びます。今回のトリム平均は、ちょうど以下のような中間的なキャラクターを持っています。

平均値:すべてのデータを使う(頑健性は一番低い
トリム平均:端っこだけを削って平均をとる(頑健性は中くらい
中央値:真ん中の1点(または2点)しか使わない(頑健性は一番高い


5. DS検定形式:実戦4択クイズ

問:データの分布が、外れ値のない綺麗な左右対称(正規分布)であるとき、「平均値」「中央値」「トリム平均」の3つの値の関係として、最も適切なものはどれか。

① 平均値 < トリム平均 < 中央値
② 中央値 < トリム平均 < 平均値
③ 3つの値はほぼ一致する
④ トリム平均だけが全く異なる値になる

【 正解: ③ 】

解説: 外れ値がなく、左右が綺麗に対称な分布であれば、上下を均等に削っても中心のバランスは変わりません。そのため、これら3つの代表値はほぼ同じ値に収束します。外れ値がある非対称な分布のときにこそ、トリム平均はその真価を発揮します。


6. まとめ

DS検定において「一定割合の異常値(外れ値)を排除して残りで平均を算出する」という記述が登場したら「トリム平均(調整平均)」です。実務のデータクレンジングや集計ロジックでも頻出の手法ですので、平均値・中央値との違いを意識して整理しておきましょう!