タグ

ブックマーク / qiita.com/ynakayama (46)

  • 機械学習で未来を予測する - scikit-learn の決定木で未来の株価を予測 - Qiita

    今回の記事は一応前回の続きなのですが、 scikit-learn による機械学習を利用して、実際に未来を予測する話を書いていきたいと思います。 なにはともあれ、まずは以下の図をみてください。 今回も実験対象のデータとして株価データを利用します。 上の図に挙げたのは弊社 (DTS) の株価であり、物のデータです。 図にあるように「過去の株価の変化から結果どうなったのか」という情報を、機械学習を利用して計算機に学習させ、それをもとに将来の株価を予測してみます。 決定木アルゴリズム 今回は数ある分類の手法の中から決定木 (デジジョン・ツリー) を利用します。手法の選択理由は以前に書いた記事を参考にしてください。 決定木自体の説明は Wikipedia あたりを読んでいただくと早いかと思います。 また scikit-learn に実装されている決定木についての説明は公式ドキュメントにあります。

    機械学習で未来を予測する - scikit-learn の決定木で未来の株価を予測 - Qiita
  • pandas によるデータセットの加工 (2) - Qiita

    昨日は pandas でのデータセット加工について説明しましたがその続きです。 データを正規化する 実は今までの記事でもさり気なく正規化は登場してきたのですがきちんと説明していなかったと思います。 統計における 正規化 (normalize) とは、異なる基準のデータを一定の基準にしたがって変形し利用しやすくすることです。 たとえば国語が 90 点、数学が 70 点だったとしましょう。単純に数値だけを比較すると国語のほうが成績が良いことになってしまいますが、もし国語の平均点が 85 点、数学の平均点が 55 点だったら果たしてどうでしょうか?このように基準が異なるデータを比較できるようになるといったことが正規化のメリットです。 一般的には平均 0 、分散 (及び標準偏差) が 1 になるように値を変換することを指します。 これは以下の数式で算出できます。

    pandas によるデータセットの加工 (2) - Qiita
  • pandas + matplotlib による多彩なデータプロッティング - Qiita

    科学技術計算用言語としての Python そもそもなぜデータ分析などの科学技術計算を Python でやるのでしょうか。主に次の二点によります。 NumPy, pandas, matplotlib など豊富なライブラリが揃っている 汎用性の高いグルー言語として利用できる データフレームを利用した計算とそのグラフ描画 (プロッティング) のみであれば R のほうがどちらかといえば簡単かもしれません。しかし統計解析を汎用性の高い Python で完結させることで様々な分野へのより幅広い応用が可能になります。 NumPy 統計解析の多くはベクトル演算を伴います。 NumPy は高速でメモリ効率の良い多次元配列の実装である ndarray を備えています。プログラミング言語に元から備わっている配列・ハッシュオブジェクトでは到底かなわないような高次元のベクトル演算を可能にします。またファンシーインデ

    pandas + matplotlib による多彩なデータプロッティング - Qiita
  • pandas による金融データの分析とその可視化 (1) - Qiita

    データフレームにはこれらと対になる to_XXX 関数が用意されており任意の形式でデータを出力できます。いちいち CSV や JSON の Parser を呼んでコードを書かなくていいのはとてもラクですね。 import pandas as pd stock = pd.read_csv('stock_px.csv', parse_dates=True, index_col=0) しかも CSV などから読み込んだデータには自動的にインデックスが作成されます。新しいオブジェクトをより適した新しいインデックスで再作成することもできます。 また pandas の特徴として欠損値の扱いが充実していることも挙げられます。データ分析において欠損の無いクリーンなデータをいつも取り扱えるとは限りません。そこで pandas のオブジェクトの統計値はすべて欠損値を除外します。欠損値をどの程度許容するか閾値を

    pandas による金融データの分析とその可視化 (1) - Qiita
  • matplotlib によるデータ可視化の方法 (1) - Qiita

    matplotlib と pandas によるさまざまな図の描画方法を以前に紹介しました。しかしその具体的なパラメーターについては触れませんでした。今回から数回に渡り matplotlib による図形描画について追っていこうと思います。 図とサブプロット matplotlib の Figure オブジェクトはプロット機能を提供します。 plt.figure() メソッドは何も描画されていない新しいウィンドウを描画します。 add_subplot() メソッドはその内部にサブプロットを生成します。 import numpy as np from pandas import * from pylab import * import matplotlib.pyplot as plt from matplotlib import font_manager from numpy.random imp

    matplotlib によるデータ可視化の方法 (1) - Qiita
  • matplotlib (+ pandas) によるデータ可視化の方法 (3) - Qiita

    前々回、前回に引き続いて matplotlib によるデータ可視化に焦点を当てていきます。今回から pandas との組み合わせによる合わせ技となります。 折れ線グラフ シリーズやデータフレームのオブジェクトをプロットすると、デフォルトでは折れ線グラフとなります。 import numpy as np from pandas import * from pylab import * import matplotlib.pyplot as plt from numpy.random import randn # シリーズの単純なプロッティング s = Series(np.random.randn(10).cumsum(), index=np.arange(0, 100, 10)) s.plot() plt.show() plt.savefig("image.png") # データフレームの単

    matplotlib (+ pandas) によるデータ可視化の方法 (3) - Qiita
  • matplotlib (+ pandas) によるデータ可視化の方法 (4) - Qiita

    前回までに引き続き matplotlib と pandas によるデータ可視化について話を進めていきます。 外部データを可視化する 今回はより実践的なデータとして外部のデータを利用しましょう。この記事の参考にもしている pydata-book のデータをまずダウンロードしてきます。 pydata-book/ch08/tips.csv https://github.com/pydata/pydata-book/blob/master/ch08/tips.csv import numpy as np from pandas import * import matplotlib.pyplot as plt tips = read_csv('tips.csv') # CSV データのクロス集計をおこなう party_counts = crosstab(tips.day, tips.size) pr

    matplotlib (+ pandas) によるデータ可視化の方法 (4) - Qiita
  • matplotlib (+ pandas) によるデータ可視化の方法 (5) - Qiita

    前回まで延々と続いていたデータ可視化の話も今回で最終回です。 散布図 前回と同様 pydata-book のデータを利用します。 pydata-book/ch08/macrodata.csv https://github.com/pydata/pydata-book/blob/master/ch08/macrodata.csv import numpy as np from pandas import * import matplotlib.pyplot as plt # CSV データを読み込む macro = read_csv('macrodata.csv') # いくつかの列をピックアップする data = macro[['cpi', 'm1', 'tbilrate', 'unemp']] # .diff() メソッドは値をひとつ前の行からの差分に変更する # 先頭が NaN になる

    matplotlib (+ pandas) によるデータ可視化の方法 (5) - Qiita
  • Python + matplotlib によるヒートマップ - Qiita

    Python と matploblib によるデータ可視化についてはすでに pandas + matplotlib による多彩なデータプロッティングや pandas を利用してデータセットの可視化を素早く試行する、 matplotlib (+ pandas) によるデータ可視化の方法などでさまざまな方法を説明してきました。 今回はヒートマップを描くわけですが、その前にあらためで可視化の方法についておさらいしましょう。 配列からのデータ可視化方法のまとめ ここでのデータ可視化とは配列からなるポピュラーな図示をさしています。配列とは、複数の属性値を持ち、 1 つのデータが 1 つの行で表されるデータの形式です。 いろいろなバリエーションがありますが、主軸となる代表的な可視化方法をまとめます。 棒グラフ (bar) データの大きさの比較に適したグラフです。縦や横に描画する方法、積み上げる方法、複

    Python + matplotlib によるヒートマップ - Qiita
  • D3.js をラップするライブラリを使う - Qiita

    昨日は D3.js に触れてみましたが、昨日書いた通り D3.js はレイヤーが低く自由度が高い代わりに何でもできてしまいドメイン固有の用途には若干使いづらい部分があります。 というわけで今日は D3.js をラップして使いやすくするライブラリを紹介します。 D3.js を利用したラッパーライブラリ Rickshaw Rickshaw http://code.shutterstock.com/rickshaw/ レンダラー、レジェンド、ホバーなどインタラクティブなグラフを作成するために必要なエレメントを追加するライブラリです。 詳細はチュートリアルを見ると良いでしょう。 メソッドチェーンだらけの JQuery ライクな生の D3.js 用コードを書くのに比較するとだいぶ読みやすく使いやすくなることがわかるかと思います。 あわせてデモも豊富に用意されています。インタラクティブな操作が可能なグ

    D3.js をラップするライブラリを使う - Qiita
  • 形態素解析のために Wikipedia とはてなキーワードからユーザー辞書を生成し利用する - Qiita

    形態素解析エンジンと辞書 MeCab はオープンソースの形態素解析エンジンであり、自然言語処理の基礎となる形態素解析のデファクトとなるツールです。また各言語用バインディングを使うことで RubyPython をはじめ多くのさまざまなプログラミング言語から呼び出して利用することもでき大変便利です。 MeCab の仕組みとしては、対象言語の文法の知識を形態素解析用「辞書」 (品詞等の情報付きの単語リスト) という形で用意しこれをもとに自然言語を分解、品詞を判定します。プロジェクトページには 3 種類の辞書が紹介されています。ほぼそのまま引用ですがまとめると以下の通りです。 辞書名 説明

    形態素解析のために Wikipedia とはてなキーワードからユーザー辞書を生成し利用する - Qiita
  • 特徴抽出と TF-IDF - Qiita

    今日は TF-IDF についてざっくりとまとめます。 特徴量と特徴抽出 TF-IDF は情報検索や文書推薦などで幅広く利用される特徴量の指標です。 特徴量 - 対象の特徴を表現する値 特徴抽出 - 対象から特徴量を取り出す 日語の特徴抽出 英語の場合はホワイトスペースで分割してから記号などを取り除くだけで特徴抽出できます。 日語の場合は形態素解析または N-Gram などの索引文字列抽出方法を利用します。 索引語頻度 TF (Term Frequency) ある文書 d の中に出現する索引語 t の頻度です。文書中にその単語が何回現れたかをあらわします。 単語 回数

    特徴抽出と TF-IDF - Qiita
  • Python でレコメンデーションを実装する - Qiita

    みな味の好みがバラバラで、同じメニューでも人によって採点が高かったり低かったりしているようです。 元データの作成 まずは Python で扱える形でデータを用意し recommendation_data.py とします。 dataset = { '山田': {'カレー': 2.5, 'ラーメン': 3.5, 'チャーハン': 3.0, '寿司': 3.5, '牛丼': 2.5, 'うどん': 3.0}, '田中': {'カレー': 3.0, 'ラーメン': 3.5, 'チャーハン': 1.5, '寿司': 5.0, 'うどん': 3.0, '牛丼': 3.5}, '佐藤': {'カレー': 2.5, 'ラーメン': 3.0, '寿司': 3.5, 'うどん': 4.0}, '中村': {'ラーメン': 3.5, 'チャーハン': 3.0, 'うどん': 4.5, '寿司': 4.0, '牛

    Python でレコメンデーションを実装する - Qiita
  • pandas のデータフレームを D3.js で表示するまでの取り扱いまとめ - Qiita

    D3.js によるデータの可視化はインタラクション、探索的データ可視化といったメリットをもたらします。見た目にも動的で派手、かっこいいといった特徴があります。 以前に D3.js について書いた記事を振り返って見ます。 D3.js + NVD3 + Sinatra + Heroku で作るインタラクティブなデータ可視化デモ http://qiita.com/ynakayama/items/f661b493751370ee6568 これと対照的なのが説明的データ可視化であり、これは「一目でわかること」において優れています。延々とアニメーションを見る、ポインティングデバイスを動かすなどのインタラクションをおこなわなければならないといった可視化は、一目で素早く全貌を理解するといった説明的データ可視化には不向きです。 説明的データ可視化の例を挙げてみましょう。次の例は以前にもいくつかの例を挙げた

    pandas のデータフレームを D3.js で表示するまでの取り扱いまとめ - Qiita
  • D3.js を使ってみる - Qiita

    まずはじめに、データ可視化は真の目的ではありません。手段です。 Vitaly Friedman の有名な言葉で、データ可視化の大目的は明瞭かつ効果的に情報とコミュニケーションができるように、データを視覚化できる能力そのものである (The main goal of data visualization is its ability to visualize data, communicating infomation clearly and effectivelty.) というものがあります。 情報を視覚的に伝える 明確に情報を伝える 効果的に情報を伝える こういったことがデータ可視化の要件かと思います。 とくに、何のための可視化なのかという大目的を見失ってはいけません。 この辺の話は以下の「データ可視化勉強会」のスライドがとても素晴らしいのであわせて参照すると良いでしょう。 http:

    D3.js を使ってみる - Qiita
  • 超訳 D3.js チュートリアル - Qiita

    D3.js のチュートリアルの日語訳がここにあるわけですが、解説は丁寧なのですけど全体が 16 章もあって冗長なのでまとめます。 メソッドチェーン D3.js の基的なスタイルはメソッドチェーンです。 var dataset = [5, 10, 15, 20, 25]; var get_data = function(d) { return d; }; var get_color = function(d) { if (d >= 15) { return "red"; } else { return "black"; }; }; d3.select("body").selectAll("p") .data(dataset) .enter() .append("p") .text(get_data) .style("color", get_color); var dataset = [

    超訳 D3.js チュートリアル - Qiita
  • D3.js + NVD3 + Sinatra + Heroku で作るインタラクティブなデータ可視化デモ - Qiita

    インタラクションの実装 さて昨日は D3.js 日語訳の全 16 章の内容を駆け足で一気に書き下ろしてみましたが、この内容だけですと静的なプロッティングしかできずなんとも消化不良です。 そこで今回は前々回にも紹介した NVD3 との組み合わせでいよいよ D3.js の肝心の目玉であるインタラクションを実装していきます。 完成形のデモアプリケーションはこちらから閲覧できます。 (うまく表示されない場合はブラウザをリロードしてみてください) Heroku を利用する いままでは画像をペタペタと記事に貼ってきましたがインタラクションを見せるには Qiita に画像を貼るだけでは不十分です。そこでデモアプリケーションとして外部のサイトにデプロイすることを考えます。こんなときに非常に便利なのが Heroku というサイトです。詳細はこの辺りを読めば分かると思いますが要は無料でも使える PaaS サ

    D3.js + NVD3 + Sinatra + Heroku で作るインタラクティブなデータ可視化デモ - Qiita
  • scikit-learn で TF-IDF を計算する - Qiita

    昨日触れた TF-IDF を求めるコードを実装します。機械学習については例によって scikit-learn を使います。 このような既知の計算については自力で実装するより完成度の高いライブラリを利用するべきでしょう。これにより車輪の再発明を避ける、品質を担保するという狙いがあります。 事前準備として、ホームディレクトリの docs ディレクトリに処理対象となる自然言語の文書を格納します。 import os import MeCab from sklearn.feature_extraction.text import TfidfVectorizer home = os.path.expanduser('~') target_dir = os.path.join(home, 'docs') token_dict = {} def tokenize(text): """ MeCab で分か

    scikit-learn で TF-IDF を計算する - Qiita
  • 青空文庫の作品から TF-IDF を指標として特徴となる語彙を抽出する - Qiita

    文書要約と情報抽出 だいぶ前に特徴抽出と TF-IDF について説明し、また scikit-learn で TF-IDF を計算してみました。 文書の要約を作成するためには次の 3 つの作業が必要となります。 1. 文章の内容を理解する 2. 中心的な話題を特定する 3. 簡潔にまとめる 現在の言語処理の技術では文書の内容を完全に理解したり、高品質の要約文書を作成するということは困難です。しかし要約ではなく、特徴となる語彙を抜き出して抄録を作成するということであれば、それほどではありません。抄録とは重要な情報を伝えている語句を文書から抜き出して並べたものです。 一般的には、文書中における語句の登場頻度から、その文書内での語句の重要性を計算する方法が選択されます。今回は過去の記事を参考にしながら、青空文庫にある小説作品をダウンロードして、その小説の特徴となる語彙を抽出してみます。 素材を用意

    青空文庫の作品から TF-IDF を指標として特徴となる語彙を抽出する - Qiita
  • scikit-learn から学ぶ機械学習の手法の概要 - Qiita

    前回、株式の時系列データを分析する話で、後半にちょっとだけ機械学習の話をしました。今日は機械学習ライブラリ scikit-learn に触れます。 scikit-learn といえば以前にも簡単なクラスタリングの例をあげたり、サポートベクトルマシンやクラスタリングで問題を解く、 TF-IDF を計算する、回帰モデルの可視化、 DBSCAN によるクラスタリングといったことをしてきましたが、あらためてライブラリの機能を整理します。 機械学習と言うと難しい数学を駆使するイメージがつきまといますが、完成度の高いライブラリを使えば利用者が機械学習の手法そのものを実装しなくても利用することはできます。もちろん手法の内容に対する理解は必要ですが、せっかく scikit-learn という事実上デファクトとも言えるライブラリが存在するのですから、これを使うところから入門していくのが良いかと思います。 以

    scikit-learn から学ぶ機械学習の手法の概要 - Qiita