タグ

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

  • ウェブアプリケーションフレームワーク Flask を使ってみる - Qiita

    Ruby は柔軟なプログラミング言語であり Sinatra のような手軽で軽量なウェブアプリケーションフレームワークがあります。いままで分析用の言語として主に Python で統計やデータの可視化をおこなってきましたが、もちろん Python にも多種多様なウェブアプリケーションフレームワークがあります。 数値計算などを Python でおこなう仕組みをウェブシステムとして提供したい場合、わざわざ別の言語を利用するよりウェブの部分も同じ言語で作ってしまったほうが一貫性があります。 そこで今回は Flask という Python の小規模なフレームワークを利用し、ごく簡単なウェブアプリケーションを作ってみます。 Flask には日語訳された親切なユーザーガイドがあります。 https://a2c.bitbucket.io/flask/ とても丁寧に書かれているので、基的にはこのドキュメン

    ウェブアプリケーションフレームワーク Flask を使ってみる - Qiita
  • データの種類の理解と線形回帰ことはじめ - Qiita

    昨日は統計のウソを見破る 5 つの視点として統計的誤りに関する注意点を説明しました。 日はここであらためて、分析しようとしているデータそのものにスポットを当ててみたいと思います。 KPI (key performance indicator) とは目標を達成するために何が必要かを定量的に表す数値です。整形して美人になりたいというのは KPI ではありませんが、体重を 3 ヶ月後までに 10 キロ減らすとか鼻を 1.5 センチ高くするといったものは KPI です。 データにはどのような種類があり KPI として利用しようとしている指標はどんなデータなのか正しく理解していないとしばしば誤った KPI を導き、無意味なデータ分析へとつながる危険を孕みます。 変数とは 社会調査や医療統計など様々な分野で被調査対象者の状態を多方面から特定していきます。たとえばアンケートやカルテを想定してみましょう

    データの種類の理解と線形回帰ことはじめ - Qiita
  • 線形回帰と相関係数、そして東京の平均気温を実際に分析してみる - Qiita

    線形回帰における仮定 前々回、前回 と線形回帰について説明してきました。 線形回帰における最小二乗法では Y 軸の点と点の全体的な長さの差異 (= これを、それぞれの差の二乗を取ってから加算するので二乗誤差といいます) が最小になるように、まっすぐな線 (= 1 次式の直線となる関数) を求めました。すなわち、データの集合から直線に回帰する推定をおこなったわけです。 相関係数を求める どんな 2 次元データでも線形回帰で関数を導くことはできますが、それが妥当かどうか気になります。そこで両者の相関係数を求めます。相関係数はベクトル v1, v2 からそれぞれの要素 x, y の平均を求め、次に v1, v2 の分散と共分散を求めます。コードで表現してみましょう。 def correlation(data): n = len(data) # 二次元データの長さを n に求める xm = 0.0

    線形回帰と相関係数、そして東京の平均気温を実際に分析してみる - Qiita
  • scikit-learn によるナイーブベイズ分類器 - Qiita

    ナイーブベイズの概要 ナイーブベイズ分類器は特徴ベクトル間に条件付き独立性を仮定したベイズ定理に基づく分類器です。現実の問題では特徴を表す素性同士に何らかの相関が見られるケースが多々ありますが、独立性仮定によって計算量を簡素化・削減し、高速でそこそこの精度を誇る分類器を実装することができます。 ベイジアンとヒューリスティクス これらを鑑みるとそもそも元より高精度を期待できる分類器ではないですし、諸々の論文等では比較対象として負けるための分類器とまで言う声も聞かれるほどです。多くは独立性を仮定するべきではない問題に適用しているからで当たり前なのですが、筆者の私見としてはナイーブベイズはヒューリスティックな問題に高い実用性を発揮すると思います。例えばテキストマイニングといった完全性を追い求めるのがなかなか難しい分野において、高速である程度の正解率を叩きだす分類器として実用性能が高いでしょう。

    scikit-learn によるナイーブベイズ分類器 - Qiita
  • scikit-learn を使った回帰モデルとその可視化 - Qiita

    昨日紹介した書籍のひとつ SciPy and NumPy Optimizing & Boosting your Python Programming から例を取り出し scikit-learn による回帰の話です。 3D モデルからの回帰平面算出 まずは 3D モデルを書くためのライブラリをインポートします。 import numpy as np import matplotlib.pyplot as plt from mpl_toolkits.mplot3d import Axes3D # scikit-learn の Linear Regression を利用します from sklearn import linear_model # 回帰用のサンプルデータセットを使います from sklearn.datasets.samples_generator import make_regr

    scikit-learn を使った回帰モデルとその可視化 - Qiita
  • scikit-learn による最も基本的なクラスタリング分析 - Qiita

    scikit-learn + クラスタリングに関してはこのブログのだいぶ初期にちょっとだけ触ったのですが、今にして思うと説明不足感が否めないですし、そもそもこれだけじゃ scikit-learn を思い通りの目的にあわせて使えないという意見もあるかと思います。そこで改めて scikit-learn による基的なクラスタリングについて説明していきます。 といっても基的な話としては家のドキュメントを読めで話が終わってしまうのですが、日語の情報があると何かと助かるということもあるかと思います。 生徒の成績をもとに班分けをおこなう よくあるケースとしては例えば、生徒の国語・数学英語の成績をもとにいくつかのグループに分けたいという場面です。このとき、各科目の合計点の上位から順番に分けてもいいのですが、中には国語が良く出来るけど数学はいまひとつな生徒、数学は得意だけど国語はいまひとつな生徒も

    scikit-learn による最も基本的なクラスタリング分析 - Qiita
  • scikit-learn によるクラスタリング (1) - Qiita

    クラスタリングの概要 実装根拠は以下を参照してください。 K-means++ K-means 英語ですけど日語のページより情報量が多くまた厳密性があると思います。 scikit-learn の概要 Python機械学習のあれこれをできる超便利なライブラリです。この辺を読んでください。 scikit-learn scikit-learn の紹介 前提 入力ファイルとして文字列ごとに改行で区切られたテキストファイルを想定します。 使い方としては python clustering.py input.txt output.txt のように引数に入出力ファイルを指定します。 途中 print() で途中結果を表示しています。 出力ファイルにクラスタリング後のデータが出力されます。 ぜひ適当なテキストファイルを用意して実際に動かしてみてください。 実装 コード全体は以下の通りです。 clust

    scikit-learn によるクラスタリング (1) - Qiita
  • matplotlib によるデータ可視化の方法 (2) - Qiita

    import numpy as np from pandas import * from pylab import * import matplotlib.pyplot as plt from matplotlib import font_manager from numpy.random import randn prop = matplotlib.font_manager.FontProperties(fname="/usr/share/fonts/truetype/fonts-japanese-gothic.ttf") r = randn(30).cumsum() # 色、線種、マーカーを指定する # 黒、破線、マーカーは o plt.plot(r, color='k', linestyle='dashed', marker='o') plt.show() plt.savefig("

    matplotlib によるデータ可視化の方法 (2) - Qiita
  • pandas で 3 次元のデータ構造を扱う - Qiita

    3 次元のデータを扱う pandas におけるデータ構造として主要なものに 1 次元つまり線の Series と 2 次元つまり表形式の DataFrame があります。これは pandas における主要なオブジェクトであり Python for Data Analysis でも詳しく解説されています。 しかし実はもう一つ主要なオブジェクトがあります。それが Intro to Data Structures でも 3 つ目に登場する 3 次元の Panel です。 この 3 次元のデータ構造は、たとえば毎日の表データから任意の数値を取り出して時系列のログに関する統計分析をおこないたいといった用途において役立ちます。 Panel オブジェクトを作る Panel は辞書形式にした DataFrame または 3 次元の ndarray を引数にとることで生成することができます。具体的にやってみ

    pandas で 3 次元のデータ構造を扱う - Qiita
  • ガウシアンフィッティング - Qiita

    正規分布とそのフィッティング すでに何度か登場している線形回帰ではデータの分布にフィットする線の理論式を最小二乗法にて求めました。線形回帰など今までに登場したさまざまな分析の多くで正規分布が仮定されます。 フィッティングに欠かせない手法とも言える最小二乗法は、プロットされたデータを理論式にフィッティングさせることによって理論式中に含まれる定数がいくらであるか、そこからさまざまな情報を得ることができます。たとえば各点にフィットする直線の傾きを求めたいとき、正規分布を仮定する分布の統計量を求めたいときなど色々な場面で使われます。 正規分布 (normal distribution) はまたの名を ガウス分布 (Gaussian distribution) と言い、平均値の付近にピークが集積するデータの分布を表した連続変数に関する確率分布であることは過去の記事でも説明しました。正規分布に対する近

    ガウシアンフィッティング - Qiita
  • 製品の改良を仮説検定する - Qiita

    統計分析における仮説検定と確率分布の重要性についてはすでに数度にわたって解説してきた通りですが、ここであらためて帰無仮説と対立仮説についてもう一度振り返ってみましょう。 製品の改良についてのシナリオ D 社では科学計算機用の演算装置を開発しています。このたび研究開発チームは既存のバージョンを改良して性能を向上した新しいプロトタイプを作成しました。同社の品質管理チームはさっそくソフトウェアのベンチマークを測定し、当に改良がされているか 50 個のサンプルを抽出してテストすることにしました。 品質管理チームによると、もともとの旧製品の性能スコアは平均して 1294 、標準偏差は 34.5 であり、サンプルとしてテストした新製品の性能スコアは平均して 1311 、標準偏差は 28.3 とのことでした。 帰無仮説と対立仮説 話だけを聞くと性能スコアが向上していますから確かに製品が改良されたように

    製品の改良を仮説検定する - Qiita
  • クロス集計とカイ二乗検定 - Qiita

    import pandas as pd # タブ区切りのテキストデータを読み込む data = pd.read_csv("data.txt", sep="\t") # クロス集計をする crossed = pd.crosstab(data.A, data.B) #=> # A B #store_1 435 165 #store_2 265 135 クロス集計表ができました。 2 つの変数の関連において、どちらかの変数が、もうひとつの変数の原因となっている場合に、原因となる側の変数を 独立変数 (independent variable) 、もう一方の結果となる変数を 従属変数 (dependent variable) と言います。これは 2 変数の間に因果関係があると考えられるときに生じます。つまりクロス集計表で提示されるのは、原則として独立変数の側を基準とした各カテゴリーの値です。 科学

    クロス集計とカイ二乗検定 - Qiita
  • SciPy で正規分布を生成する - Qiita

    確率分布の重要性については以前に強調してきた通りですが、その中でも特に正規分布は最も重要な分布と考えられます。 正規分布とは 観測する点の分布を増やしていくと期待値と分散が以下の値に近づくとき、正規曲線が描かれます。 この正規曲線を密度関数とするような分布を 正規分布 (Normal distribution) と言います。 いままでよく出てきた N(μ, σ^2) という正規分布の表現は、期待値が μ 、分散が σ^2 (標準偏差の二乗) に一致することを指します。 正規分布の重要性 前述した通り、正規分布はそれを仮定する場面が最も多いと言える分布です。 まず自然現象や社会現象には正規分布に従うと考えられるものがきわめて多数存在します。 また、漸近理論でも説明しましたが、大きな数を扱うときはその分布は正規分布に限りなく近似していきます。忘れた方はもう一度、中心極限定理を思い出しましょう。

    SciPy で正規分布を生成する - Qiita
  • ローソク足チャートと移動平均線のプロット - Qiita

    おはようございます。ようやく春らしい季節になってきましたね。今日は前回に引き続いてもう少し株価の話をします。前回の話ではどうやって分析するかという話で、理想株価の算出式と移動平均線について触れました。忘れてしまった方はもう一度前回の記事の後半を読んでください。 まず余談 さて話はそれていきなり余談ですが、先週は有名ソーシャルゲーム「パズドラ」をめぐる炎上騒ぎが大変なことになりましたね。 パズドラといえば 3,000 万ダウンロードを越える人気ゲームであり、あのコンプガチャ騒動の後にあらわれて、無料でも楽しめる仕様として課金額を低額に抑え人気を博しガンホーバブルが発生、まさに新しいソーシャルゲーム時代の代表格みたいなものですから四方や知らない方はいないかとは思います。 もっともその後バブルがはじけ最近ではパズドラ一ではだいぶ苦戦しているようですが、先週はそのパズドラにおいてスクエニとのコラ

    ローソク足チャートと移動平均線のプロット - Qiita
  • 過去のデータからビッグデータ分析で株価を予測する - Qiita

    今日は 15 年ぶりに日経平均が 19,000 円台を一時回復し、 6 月末までには 2 万円に達するのではとの声も出ていますが、そんな中ビッグデータ (笑) 分析で株式の分析をする話です。 効率的市場仮説 金融の世界には効率的市場仮説というものがあり、どのような情報を利用しても他人よりも高いパフォーマンスを継続してあげることは不可能であるという説があります。これほど誤解されたりあるいは都合良く解釈されたものはないと筆者は考えます。 この辺は効率的市場仮説のパラドックスあたりを読んでいただくと良いでしょう。 普通に考えて、たとえばなぜ証券業界のディーラーやファンドマネージャーが現役で職を保っていられるのか、みんながみんなバフェットの真似をしてみんながお金持ちにならないのはなぜか、などなど考えていけばわかりそうなものです。 賛否両論はこのあたりを読んでいただくとして (ちなみに筆者はアンドリ

    過去のデータからビッグデータ分析で株価を予測する - Qiita
  • SciPy のよく使うサブパッケージ - Qiita

    from scipy.stats import f # stats から F 分布を呼ぶ def draw_graph(dfn, dfd): rv = f(dfn, dfd) # 与えられた 2 つの引数で F 分布を描く x = np.linspace(0, np.minimum(rv.dist.b, 3)) plt.plot(x, rv.pdf(x)) draw_graph(1, 1) draw_graph(2, 1) draw_graph(5, 2) x = np.array([61, 74, 55, 85, 68, 72, 64, 80, 82, 59]) print(stats.zscore(x)) #=> [-0.92047832 0.40910147 -1.53413053 1.53413053 -0.20455074 0.20455074 # -0.61365221 1.0

    SciPy のよく使うサブパッケージ - Qiita
  • TA-Lib と pandas によるテクニカル指標の算出 - Qiita

    Python で金融データを収集し分析するにあたり、テクニカル分析における代表的な指標を算出するにあたってはライブラリとして TA-Lib があります。以前に書いたように pandas で株式の日足データ (= 日ごとの始値、高値など) を分析する場合、代表的なさまざまな指標を算出するにはすべて自前で実装するよりライブラリを使ったほうが便利ですし安心です。 TA-Lib http://ta-lib.org/ TA-Lib を使えるようにする この TA-Lib を Python で利用するには Python 用のバインディングが用意されています。 インストール方法 http://mrjbq7.github.io/ta-lib/install.html インストール方法は簡単でソースの tar ボールをダウンロードして make install すれば良いです。上のリンク先では --pref

    TA-Lib と pandas によるテクニカル指標の算出 - Qiita
  • scikit-learn + DBSCAN によるクラスタリング - Qiita

    今日は昨日に引き続き SciPy and NumPy Optimizing & Boosting your Python Programming の中から scikit-learn を使った例を軽く説明します。クラスタリングについてはすでにべられるキノコを見分けるやクラスタリングの結果を再利用するといった記事で説明しましたし scikit-learn によるクラスタリング でも取り扱ってきましたから機械学習の中でもすっかりお馴染みの手法かと思います。 scikit-learn でのクラスタリング ポピュラーな kmeans と比較して多くのデータ点を有するコア点を見つける DBSCAN アルゴリズムは、コアが定義されると指定された半径内内でプロセスは反復します。ノイズを多く含むデータに対して、しばしば kmeans と比較される手法です。 原著においてもこれらの手法を比較し可視化していま

    scikit-learn + DBSCAN によるクラスタリング - Qiita
  • pandas によるデータセットの加工 (1) - Qiita

    サンプルデータの抽出 統計解析においてはデータの前処理が欠かせません。まず計算機で扱えるようデータを読み込むわけですが、大きめのデータを扱う計算処理においてはそのターンアラウンドがしばしば問題になります。このようなときに採るべき策はいくつかあります。 データのサイズを減らす ボトルネックを特定し計算量の削減をする 計算機の性能を上げる ビッグデータなどと言われて久しいですが実際には標のサイズを大きく取る必要はありません。標抽出法によって有意なサンプルを抜きだしましょう。 多くのデータ集中処理では I/O がボトルネックになります。このとき必要なデータだけを読み込むようにする、もとのデータを適切に分割して入力サイズそのものを減らす、といったことを検討するのが良いでしょう。 サンプルデータのスライスと集計 スライシング pandas でデータを扱う場合、スライシングは簡単におこなえます。

    pandas によるデータセットの加工 (1) - Qiita
  • scikit-learn を使ってみる (1) - K 平均法によるクラスタリング - Qiita

    前回は scikit-learn に実装されている機械学習の手法をざっくりと書いてみたのですけれども、それなりに需要がありそうなので今日から scikit-learn を使った機械学習のサンプルコードを書きつつ、その手法の理解と実践に迫ってみたいと思います。 まずは以前にもやった K 平均法によってクラスタリングをする例を挙げていきます。 K 平均法はクラスタリングの中でも基的な手法で、シンプルで高速に動作しますし、入門にも最適です。動作についての説明は毎回おすすめしているのですがこのあたりがわかりやすいです。 クラスタリングする対象としてはやはり株価データを利用します。 株価のデータは 1. 無料で誰でも入手することができる 2. 企業の「業績」を示す指標となるリアルなデータである 3. 定量的なデータであるため分析しやすい といった特長があるため扱いやすいのです。 企業の業績と株価は

    scikit-learn を使ってみる (1) - K 平均法によるクラスタリング - Qiita