-
PyTorchでCNNを実装してMNISTの手書き数字を認識する方法
この記事では、PyTorchを使ってCNN(畳み込みニューラルネットワーク)を訓練し、MNISTデータセットによる手書き数字の分類器を構築する方法を解説します。MNISTは手書き文字認識タスクで広く利用されているデータセットで、ラベル付きの28×28ピクセル・グレースケール画像が7万枚以上収録されています。内訳は約6万枚の訓練画像と1万枚のテスト画像です。ここでは、6万枚の訓練画像でモデルを学習し、その後1万枚のテスト画像で分類精度を評価します。環境準備まず、最新版のPyTorchとtorchvisionが必要です。まだインストールしていない場合は、ターミナルで以下のコマンドを実行してください
-
Node.jsのchild_process.spawn()メソッドを使ってPythonスクリプトを実行する方法
Node.jsとPythonは、開発者やWebデザイナーの間で最も人気のある2つのプログラミング言語です。しかし、数値計算や科学技術計算(AI、機械学習、ディープラーニングなど)の分野において、Node.jsはPythonに及ばない部分があります。一方のPythonには、科学技術計算を格段に簡単に行える豊富なライブラリが用意されています。幸いなことに、Pythonをバックグラウンドで実行してその結果を受け取ることで、Node.jsアプリケーションの中でもこれらのPythonライブラリを活用することが可能です。本記事では、Node.jsの標準ライブラリであるchild_processを使用して、
-
Pythonで作るコンウェイのライフゲーム:基本ルールと実装方法を徹底解説
1970年頃、イギリスの数学者ジョン・ホートン・コンウェイによって考案された「ライフゲーム(Game of Life)」は、生物の集団が見せるカオス的でありながらも秩序のある増殖の様子を表現する、シンプルな一連のルールです。盤面は「生存」セルと「死亡」セルで構成される二次元グリッドとして表現されます。 ライフゲームの基本ルール 過密(Overpopulation):あるセルの周囲に3つより多い生存セルが存在する場合、そのセルは次の世代で死滅します(OFF)。 維持(Static):周囲に2つまたは3つの生存セルが存在する場合、そのセルは次の世代でも生存し続けます(ON)。 過疎(Under
-
PythonでGitHubの月間スター数トップ10リポジトリを取得する方法
Gitは世界で最も人気のあるバージョン管理システムであり、何百万人もの開発者が日々プロジェクトやコードを管理しています。この記事では、Pythonを使って過去1か月間に最も多くスターを獲得したGitHubリポジトリのトップ10を自動的に取得する方法を解説します。GitHubのページからデータを抽出するため、以下の2つのライブラリを使用します。Requests:WebページへHTTPリクエストを送信し、HTMLを取得するBeautifulSoup:取得したHTMLを解析し、目的の要素を抜き出す取得した結果はテキストファイルに保存し、順位(スター数)・ユーザー名・リポジトリ名の一覧として表示します
-
PythonでWebカメラの動体検知プログラムを作成する方法
本記事では、Webカメラから取得した映像を解析して動き(モーション)を自動的に検出し、その検出された時間帯をCSVファイルに記録するPythonプログラムを作成します。監視カメラやセキュリティシステムの基礎となる技術であり、OpenCVの画像処理機能を活用した実践的な例です。 必要なライブラリ このプログラムではOpenCVとpandasを使用します。まだインストールされていない場合は、pipコマンドでインストールできます。 $ pip install opencv-python pandas サンプルコード # 必要なライブラリをインポート import cv2 import pan
-
Pythonで描く葉序(ようじょ)パターン ― フィボナッチ螺旋の美しさをコードで再現
葉序パターンとは? 植物学の授業や植物の世界でよく耳にする「葉序(ようじょ)」とは、植物の茎に花・葉・種子などがどのような順序で配置されるかを表す用語です。この配置は、いわゆる「フィボナッチ螺旋」と非常によく似たパターンを示します。 フィボナッチ螺旋は、パスカルの三角形にも似た規則性を持つ数列、すなわちフィボナッチ数列に基づいています。フィボナッチ数列は次のように続きます。 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144 … この数列の特徴は、各項が直前の2つの数の和になっているという点です。自然界のあらゆる場所に潜む、シンプルながら奥深い数理構造と言えま
-
PythonのpygmapsパッケージでGoogleマップにデータをプロットする方法
Pythonのpygmapsライブラリは、Google Maps JavaScript APIのラッパーを提供するライブラリです。このライブラリを使うと、matplotlibのような直感的なインターフェースでHTMLとJavaScriptを自動生成でき、Googleマップの上に自分の好きな情報(ポイントや経路など)を自由に重ねて表示できます。 必要なライブラリ 今回使用するのはpygmapsライブラリのみです。pipコマンドを使って、以下のようにインストールしてください。 $ pip install pygmaps (Windowsの場合) $ sudo pip3 install pygma
-
クリップボードの住所からGoogleマップを自動で開くPythonスクリプトの作り方
Googleマップで特定の場所を調べたいとき、普段はブラウザを開いて検索するのが一般的です。しかし、この作業を1日に何度も繰り返すとなると、かなり面倒に感じるものです。そこで本記事では、この操作を自動化するPythonスクリプトをご紹介します。スクリプトを実行すると、ブラウザが自動的に起動し、指定した場所のGoogleマップがすぐに表示される仕組みです。 準備:pyperclipのインストール このスクリプトでは、クリップボードを扱うために「pyperclip」パッケージを使用します。標準ライブラリには含まれていないため、pipを使ってインストールする必要があります。 >pip inst
-
PythonでGoogle Distance Matrix APIを使って2地点間の距離と所要時間を計算する方法
私たちの多くは、出発地から目的地までの距離や移動時間を確認する際に、Googleマップを利用しています。実は開発者向けに、Googleは「Google Distance Matrix API」というサービスを提供しており、これを使えばプログラムから2地点間の距離と所要時間を簡単に計算することができます。このAPIを利用するには、Google MapsのAPIキーが必要です。以下のリンクから無料で取得できます。https://developers.google.com/maps/documentation/distance-matrix/get-api-key必要なライブラリこの機能は、複数のP
-
PythonとGoogle Geocoding APIで場所の緯度経度(地理座標)を取得する方法
特定の場所の地理座標、つまり経度(longitude)と緯度(latitude)を取得したい場合、Google Mapsが提供する「Geocoding API」を利用するのが便利です。この記事では、Pythonを使ってGeocoding APIを呼び出し、地名から座標情報を取得する方法を解説します。事前に必要なもの場所の座標を取得するには、まずGoogleのGeocoding APIキーが必要です。以下の公式ページからAPIキーを発行できます。https://developers.google.com/maps/documentation/geocoding/get-api-keyAPIキーに
-
Pythonのstatisticsモジュールで使える数理統計関数の使い方
Pythonのstatisticsモジュールとは Python標準ライブラリのstatisticsモジュールには、Fraction型やDecimal型を含むさまざまな数値データ型を使って統計量を計算するための関数が用意されています。 本記事で紹介する関数を使用するには、あらかじめ次のインポート文を実行しておきましょう。 >>> from statistics import * 代表値(中央傾向)を求める関数 以下の関数は、サンプルデータの代表値(中央傾向)を計算します。 mean() – 算術平均 mean()関数は、シーケンスやイテレータ形式のデータに対して算術平均(相
-
Pythonで有理数(分数)を扱う方法|fractionsモジュールの使い方を徹底解説
有理数(rational number)とは、p/q という商(分数)の形で表すことができる数のことです。Pythonの標準ライブラリに含まれる fractions モジュールを使えば、有理数の演算を正確に行えます。 Fractionクラスとは fractionsモジュールには Fraction クラスが定義されています。このクラスのオブジェクトは、以下のようにさまざまな方法で生成できます。 Fraction(num, denom) 分子と分母を指定して生成する 基本となるコンストラクタは、分子(numerator)と分母(denominator)の2つの引数を受け取ります。分子のデフォルト値
-
Pythonで複素数を扱う方法:complex型の基本からcmathモジュールまで
複素数の基礎知識 正の数には必ず2つの実数平方根が存在します。たとえば x² = 25 のとき、x = ±5 です。しかし x² = -25 のような場合は実数解が存在しません。負の数の平方根は、絶対値の平方根に虚数単位 j = √−1 を掛けた形で定義されます。 したがって、√−25 = √25 × √−1 = 5j となります。 複素数は実部と虚部から構成され、「x + yj」という形式で表されます。x と y はどちらも実数であり、y に虚数単位 j を掛けた部分が虚部となります。 記述例:3+2j、10-5.5J、9.55+2.3j、5.11e-6+4j Pythonにおける複素数型
-
Pythonで作るハングマンゲーム:初心者向けコード解説
ハングマン(Hangman)は、制限回数内に隠された単語を一文字ずつ推測して当てていく、世界的に有名な古典的な言葉遊びゲームです。レターをひとつずつ推理しながら新しい単語を学べるため、語彙力アップにも最適なゲームとして親しまれてきました。この記事では、Pythonを使ってこの定番ゲーム「ハングマン」を実装する方法を、初心者の方にもわかりやすく解説します。ハングマンゲームのコード全体 0: # ゼロから始まるカウンターを作成 failed = 0 # 秘密の単語の各文字について for char in word: # その文字がプレイヤーの推
-
Pythonクロージャとは?ネスト関数の仕組みと実用例をわかりやすく解説
Pythonのクロージャ(closure)を正しく理解するには、まず「ネストされた関数(入れ子関数)」という概念を押さえておく必要があります。本記事では、ネスト関数の基本から、クロージャの仕組み、さらに__closure__属性を使った内部構造の確認方法まで、具体的なコード例とともにわかりやすく解説します。一言でいえば、Pythonのクロージャとは「データをコードとともにカプセル化した関数」のことです。Pythonにおけるネストされた関数とはある関数の中で定義された別の関数を、ネストされた関数(nested function)と呼びます。ネストされた関数は、それを囲む外側のスコープにある変数に
-
Pythonで学ぶロジスティック回帰:基礎から実装・結果の解釈まで徹底解説
ロジスティック回帰とは ロジスティック回帰(Logistic Regression)は、二値の結果(合格/不合格、はい/いいえなど)を予測するための統計手法です。金融、医療、犯罪学をはじめとする社会科学など、幅広い分野で長年にわたり活用されている実績あるアプローチです。 本記事では、Pythonを使ってロジスティック回帰を実装する方法を解説します。なお、同じ処理はRなどの他の言語でも実装可能です。 必要なライブラリのインストール サンプルプログラムでは、以下のライブラリを使用します。 NumPy:数値配列や行列の定義に使用 Pandas:データの読み込み・操作・加工に使用 Statsmod
-
Pythonでコマンドラインインターフェース(CLI)を開発する方法 ― clickパッケージ活用ガイド
この記事では、Pythonを使ってコマンドラインインターフェース(CLI)を開発する方法を解説します。実際のコードに入る前に、まず「コマンドライン」とは何かを理解しておきましょう。 コマンドラインは、コンピュータープログラムの誕生以来使われてきた歴史ある仕組みで、コマンドをベースに構築されています。コマンドラインプログラムとは、シェルやコマンドラインから直接実行されるプログラムのことです。 コマンドラインインターフェース(CLI)は、マウス操作の代わりに、ターミナル・シェル・コンソール上でコマンドを入力して操作できるユーザーインターフェースを提供します。 CLIは実行ファイルから始まり、その設
-
Pythonのeval()関数とは?基本構文からglobals・localsの使い方まで徹底解説
Pythonのeval()関数は、文字列として渡された式をPythonの式として解析(パース)し、プログラム内で実際に実行するための組み込み関数です。文字列で表現された数式やコードを動的に評価できるため、電卓アプリや数式処理ツールなどで活用されることがあります。eval()の基本構文eval()関数の一般的な構文は以下の通りです。eval(expression, globals=None, locals=None)各引数の意味expression:必須の文字列引数。ここには、Pythonの式として解析・実行したい文字列を指定します。globals:省略可能な引数。辞書型で指定し、eval()内
-
Pythonで画像ファイルの種類を判定する方法|imghdrモジュールの使い方
この記事では、Pythonを使って画像ファイルの種類をプログラム的に判定する方法を解説します。例えば、1つのディレクトリに数百枚の画像ファイルがあり、その中からJPEGなど特定の形式のファイルだけを抽出したい場面を考えてみましょう。こうした処理は、Pythonのライブラリ「imghdr」を使えば簡単に実現できます。 imghdrは、ファイルまたはバイトストリームに含まれる画像の種類を判定するためのパッケージです。 インストール Python 3.6以降を使用している場合、imghdrは標準ライブラリとして同梱されているため、多くの場合は別途インストールを行う必要はありません。 もしインストール
-
【Python】ジャンクファイルオーガナイザーで面倒なファイル整理を一括自動化
はじめに 大量のファイルやフォルダをひとつのディレクトリに放り込みっぱなしにして、「何のファイルがあったんだっけ?」と混乱しがちなPythonプログラマーは少なくありません。そんな「怠惰(=効率重視)」な開発者にとって、手作業でのファイル整理は面倒この上ないものです。 そこで本記事では、散らかったフォルダ内のファイルを拡張子ごとに適切なフォルダへ一括で振り分け、さらに不要になった空のディレクトリまで削除してくれるPythonスクリプトを紹介します。コマンドひとつでフォルダがすっきり片付くので、ぜひ活用してみてください。 具体的には、さまざまな種類のファイルが混在したディレクトリ(下図)を入力と