SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

連載記事

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

CodeZine BOOKS(コードジン・ブックス)は、CodeZineの連載からカットアップした、開発現場の課題解決に役立つ書籍シリーズです。

書籍に関する記事を見る

'); googletag.cmd.push(function() { googletag.pubads().addEventListener('slotRenderEnded', function(e) { var ad_id = e.slot.getSlotElementId(); if (ad_id == 'div-gpt-ad-1659428980688-0') { var ad = $('#'+ad_id).find('iframe'); if ($(ad).width() == 728) { var ww = $(window).width(); ww = ww*0.90; var style = document.createElement("style"); document.head.appendChild( style ); var sheet = style.sheet; sheet.insertRule( "#div-gpt-ad-1659428980688-0 iframe {-moz-transform: scale("+ww/728+","+ww/728+");-moz-transform-origin: 0 0;-webkit-transform: scale("+ww/728+","+ww/728+");-webkit-transform-origin: 0 0;-o-transform: scale("+ww/728+","+ww/728+");-o-transform-origin: 0 0;-ms-transform: scale("+ww/728+","+ww/728+");-ms-transform-origin: 0 0;}", 0 ); sheet.insertRule( "#div-gpt-ad-1659428980688-0 div{ height:"+(90*ww/728)+"px;width:"+728+"px;}", 0 ); } else { if ($(window).width() < 340) { var ww = $(window).width(); ww = ww*0.875; var style = document.createElement("style"); document.head.appendChild( style ); var sheet = style.sheet; sheet.insertRule( "#div-gpt-ad-1659428980688-0 iframe {-moz-transform: scale("+ww/320+","+ww/320+");-moz-transform-origin: 0 0;-webkit-transform: scale("+ww/320+","+ww/320+");-webkit-transform-origin: 0 0;-o-transform: scale("+ww/320+","+ww/320+");-o-transform-origin: 0 0;-ms-transform: scale("+ww/320+","+ww/320+");-ms-transform-origin: 0 0;}", 0 ); sheet.insertRule( "#div-gpt-ad-1659428980688-0 div{ height:"+(180*ww/320)+"px;width:"+320+"px;}", 0 ); } } } }); }); } else { document.write('
'); document.write('
'); }
近未来の技術トレンドを先取り! 「Tech-Sketch」出張所

写真共有SNSのユーザーの性別を機械学習で推定するWebアプリケーションをPythonで作ってみよう

近未来の技術トレンドを先取り! 「Tech-Sketch」出張所 第21回

  • X ポスト
  • このエントリーをはてなブックマークに追加

 本連載ではTIS株式会社が提供している技術ブログ「Tech-Sketch」から「コレは!」というテーマをピックアップし、加筆修正して皆さまにお届けしています。今回はTISのインターンシップで行った「機械学習を活用したWebアプリケーション開発」を取り上げます。

  • X ポスト
  • このエントリーをはてなブックマークに追加

機械学習(ほぼ)初心者が、Webアプリケーションを作ったキッカケ

 本記事では、機械学習の(ほぼ)初心者である筆者が、TIS株式会社の5daysインターンシップ「機械学習を用いたWebアプリケーション開発」に参加した際に開発したWebアプリケーションについて紹介します。筆者は、学部で情報工学の基礎を学び、現在は都内国立大学大学院に通う大学院生です。これまでにWebアプリケーションの開発経験はなく、機械学習も「なんとなくイメージはできる」程度の理解でした。今回は、開発にPythonを用いました。Pythonの使用経験は2年弱でしたが、機械学習を実装するのは初めてでした。

 開発したアプリケーションのソースコードは、GitHubで公開していますので適宜参照してください。

5daysインターンシップとテーマ設定

 今回のインターンシップでは、機械学習技術を活用したWebアプリケーションを開発するということ以外の制約はなく、開発に用いる言語やテーマは自由でした。そこで、テーマを考える際にSNSからデータ取得することを考えました。私はもともと写真に興味があったので写真共有SNSの"Instagram"に投稿された写真を眺め、

  • 「人物が写っている写真を投稿するユーザーは、女性が多いのでは?」
  • 「男性は食べ物が写っている写真が多いのでは?」

という仮説を思いついたので、写真共有SNSの投稿画像からユーザーの性別を推定するWebアプリケーションを開発するテーマに設定しました。もし、ユーザーの性別が分かれば、ユーザーに応じてより適切な広告を表示したりサービスを提供したりすることが可能になります。

 このWebアプリケーションでは、ユーザーがInstagramに何を被写体とした写真を多く投稿しているか、ユーザーが投稿した写真の傾向をもとに性別を推定することを試みます。具体的には、Instagramでユーザーの直近20枚の画像を取得し、画像認識API(AlchemyAPI)を使ってそれらの写真に写っている物体ごとにスコア化して、そのスコアに応じて性別を推定します。

図 今回開発した性別推定アプリケーションのイメージ図
図 今回開発した性別推定アプリケーションのイメージ図

今回用いたプログラミング言語/ライブラリの紹介

使用言語
Python 汎用プログラミング言語。今回は、最新(当時)バージョン3.4.3を使用
Pythonライブラリ(詳細は、後述のGitHubを確認してください)
IPython Pythonを対話的に実行するシェル
IPython Notebook IPythonをWebブラウザ上で実行することができる
scikit-learn 機械学習ライブラリ
Flask Webアプリケーションフレームワーク
API
Instagram API 写真投稿SNSのInstagramをプログラミング言語から呼び出すAPI
AlchemyAPI 画像解析API。画像をこのAPIに入力すると、該当するタグをスコアが出力される。スコアは0から1の範囲で、1に近ければ近いほどそのタグの適合度が高い

開発の流れ

 今回開発するのはInstagramのユーザーIDを入力すると、そのユーザーの性別を推定してくれるWebアプリケーションです。

 まずユーザーが投稿した写真から性別を推定する識別器(モデル)が必要になります。その識別器は、すでに性別が分かっているユーザーの性別と写真の組み合わせを学習データとしてscikit-learnで機械学習を行うことで作成します。その識別器を呼び出すWebアプリケーションを開発します。

会員登録無料すると、続きをお読みいただけます

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

次のページ
ユーザー性別推定を行う識別器をつくろう

この記事は参考になりましたか?

  • X ポスト
  • このエントリーをはてなブックマークに追加
近未来の技術トレンドを先取り! 「Tech-Sketch」出張所連載記事一覧

もっと読む

この記事の著者

yiori(yiori)

2015年現在、大学院修士2年生です。大学院では教育工学を専門として学んでいますが、学部時代は情報系学部に所属し、データ分析やソフトウェアに興味があります。

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

  • X ポスト
  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/8953 2015/09/29 14:00
" ); }

おすすめ

アクセスランキング

  1. 1
    ガントチャートをWebアプリに組み込める「ガントシート」でプロジェクト管理機能を作成してみよう
  2. 2
    1/10まで全文無料公開、人気の入門書シリーズ『いきなりプログラミング Androidアプリ開発』
  3. 3
    新しいクエリ言語「Wvlet 2024.9」リリース、SQLを現代のデータ分析向けに再設計 NEW
  4. 4
    アジャイル開発の推進において、必ずしも"すごい人"は必要ない──現場のエンジニアがDevOps推進で実現する組織改革
  5. 5
    静岡のPythonカンファレンス「PyCon mini Shizuoka 2024 continue」が2月8日に開催 NEW
  1. 6
    Cloudflare、HTTP/3のテストとデバッグ用ツール「h3i」をオープンソース化 NEW
  2. 7
    コーレ、AIエージェントを一貫して学べる「AIエージェント研修」の提供を開始 NEW
  3. 8
    生成AIでは対応が難しい検索もある? Elasticsearchが語るこれからの「検索」のポイント NEW
  4. 9
    ライフステージが変われば目指すキャリアも変わっていく?──仕事と育児、どちらにも無理なくフィットした環境を手に入れるには NEW
  5. 10
    AWS、Kubernetesクラスタ管理を大幅に効率化する「Amazon EKS Auto Mode」を一般提供 NEW

アクセスランキング

  1. 1
    ガントチャートをWebアプリに組み込める「ガントシート」でプロジェクト管理機能を作成してみよう
  2. 2
    1/10まで全文無料公開、人気の入門書シリーズ『いきなりプログラミング Androidアプリ開発』
  3. 3
    新しいクエリ言語「Wvlet 2024.9」リリース、SQLを現代のデータ分析向けに再設計 NEW
  4. 4
    アジャイル開発の推進において、必ずしも"すごい人"は必要ない──現場のエンジニアがDevOps推進で実現する組織改革
  5. 5
    静岡のPythonカンファレンス「PyCon mini Shizuoka 2024 continue」が2月8日に開催 NEW
  6. 6
    Cloudflare、HTTP/3のテストとデバッグ用ツール「h3i」をオープンソース化 NEW
  7. 7
    コーレ、AIエージェントを一貫して学べる「AIエージェント研修」の提供を開始 NEW
  8. 8
    生成AIでは対応が難しい検索もある? Elasticsearchが語るこれからの「検索」のポイント NEW
  9. 9
    ライフステージが変われば目指すキャリアも変わっていく?──仕事と育児、どちらにも無理なくフィットした環境を手に入れるには NEW
  10. 10
    AWS、Kubernetesクラスタ管理を大幅に効率化する「Amazon EKS Auto Mode」を一般提供 NEW
  1. 1
    いいエンジニアになるための2つのポイント ──元Google技術者・石原氏が説く「シリコンバレー流ソフトウェア開発術」
  2. 2
    「CUDA」 ~マンガでプログラミング用語解説
  3. 3
    アジャイル開発の推進において、必ずしも"すごい人"は必要ない──現場のエンジニアがDevOps推進で実現する組織改革
  4. 4
    デスクトップアプリを開発しよう! 「Rust」と「Tauri 2.0」の基本情報と環境整備の仕方を解説
  5. 5
    デスクトップアプリ開発に必要な「Rust」の文法を理解しよう
  6. 6
    "けしからん"精神が切り拓く未来──IPA登氏が語る、技術大国・日本が目指す復活戦略
  7. 7
    Google、社内AIエージェント「Google Agentspace」発表
  8. 8
    JavaScriptのWebフレームワーク、「Astro 5.1」リリース
  9. 9
    1/10まで全文無料公開、人気の入門書シリーズ『いきなりプログラミング Androidアプリ開発』
  10. 10
    テストは増え続ける、でもボトルネックにはできない──テスト効率化の2つのカギを朱峰 錦司氏が解説!

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

メールバックナンバー

アクセスランキング

  1. 1
    ガントチャートをWebアプリに組み込める「ガントシート」でプロジェクト管理機能を作成してみよう
  2. 2
    1/10まで全文無料公開、人気の入門書シリーズ『いきなりプログラミング Androidアプリ開発』
  3. 3
    新しいクエリ言語「Wvlet 2024.9」リリース、SQLを現代のデータ分析向けに再設計 NEW
  4. 4
    アジャイル開発の推進において、必ずしも"すごい人"は必要ない──現場のエンジニアがDevOps推進で実現する組織改革
  5. 5
    静岡のPythonカンファレンス「PyCon mini Shizuoka 2024 continue」が2月8日に開催 NEW
  1. 6
    Cloudflare、HTTP/3のテストとデバッグ用ツール「h3i」をオープンソース化 NEW
  2. 7
    コーレ、AIエージェントを一貫して学べる「AIエージェント研修」の提供を開始 NEW
  3. 8
    生成AIでは対応が難しい検索もある? Elasticsearchが語るこれからの「検索」のポイント NEW
  4. 9
    ライフステージが変われば目指すキャリアも変わっていく?──仕事と育児、どちらにも無理なくフィットした環境を手に入れるには NEW
  5. 10
    AWS、Kubernetesクラスタ管理を大幅に効率化する「Amazon EKS Auto Mode」を一般提供 NEW

アクセスランキング

  1. 1
    ガントチャートをWebアプリに組み込める「ガントシート」でプロジェクト管理機能を作成してみよう
  2. 2
    1/10まで全文無料公開、人気の入門書シリーズ『いきなりプログラミング Androidアプリ開発』
  3. 3
    新しいクエリ言語「Wvlet 2024.9」リリース、SQLを現代のデータ分析向けに再設計 NEW
  4. 4
    アジャイル開発の推進において、必ずしも"すごい人"は必要ない──現場のエンジニアがDevOps推進で実現する組織改革
  5. 5
    静岡のPythonカンファレンス「PyCon mini Shizuoka 2024 continue」が2月8日に開催 NEW
  6. 6
    Cloudflare、HTTP/3のテストとデバッグ用ツール「h3i」をオープンソース化 NEW
  7. 7
    コーレ、AIエージェントを一貫して学べる「AIエージェント研修」の提供を開始 NEW
  8. 8
    生成AIでは対応が難しい検索もある? Elasticsearchが語るこれからの「検索」のポイント NEW
  9. 9
    ライフステージが変われば目指すキャリアも変わっていく?──仕事と育児、どちらにも無理なくフィットした環境を手に入れるには NEW
  10. 10
    AWS、Kubernetesクラスタ管理を大幅に効率化する「Amazon EKS Auto Mode」を一般提供 NEW
  1. 1
    いいエンジニアになるための2つのポイント ──元Google技術者・石原氏が説く「シリコンバレー流ソフトウェア開発術」
  2. 2
    「CUDA」 ~マンガでプログラミング用語解説
  3. 3
    アジャイル開発の推進において、必ずしも"すごい人"は必要ない──現場のエンジニアがDevOps推進で実現する組織改革
  4. 4
    デスクトップアプリを開発しよう! 「Rust」と「Tauri 2.0」の基本情報と環境整備の仕方を解説
  5. 5
    デスクトップアプリ開発に必要な「Rust」の文法を理解しよう
  6. 6
    "けしからん"精神が切り拓く未来──IPA登氏が語る、技術大国・日本が目指す復活戦略
  7. 7
    Google、社内AIエージェント「Google Agentspace」発表
  8. 8
    JavaScriptのWebフレームワーク、「Astro 5.1」リリース
  9. 9
    1/10まで全文無料公開、人気の入門書シリーズ『いきなりプログラミング Androidアプリ開発』
  10. 10
    テストは増え続ける、でもボトルネックにはできない──テスト効率化の2つのカギを朱峰 錦司氏が解説!