幸か不幸か、ビジネス系のデータの多くは時系列データです。売上データもホームーページのアクセスログもセンサーデータも時系列データです。 時系列データを手にしたとき、どのようなデータなのか見てみたい、ということは多々あります。 多くの場合、折れ線グラフを描き傾向を掴む、ということをやります。 折れ線グラフを眺めると、トレンド(上昇傾向や下降傾向)や季節性などが見て取れるケースがあります。 そこで、サクッとトレンドや季節性などを掴む手法がSTL分解(Seasonal Decomposition Of Time Series By Loess)です。 STL分解(Seasonal Decomposition Of Time Series By Loess)を実施することで、元データをトレンド、季節性、残差に分解することができます。 元データ = トレンド + 季節性 + 残差 STL分解(Seas
はじめに Pythonのライブラリ、NetworkXの使い方を、Qiitaの投稿に付けられたタグの関係グラフの作成を例にして説明します。 NetworkXを使うと、下に示すような、ノードとエッジで構成されるグラフを描くことができます。 ##実行環境 Windows 10 Python 3.5.2 (Anaconda) Jupyter notebook #元データの取得 Qiitaは、投稿を取得するAPIを公開しているので、簡単に投稿を取得することができます。 JSON形式で返ってくるデータを下記コードでPythonの辞書に変換します。 なお、非認証の場合、1リクエストごとに最大100記事、1時間ごとに60回の制限があるので、 今回は、100*60 = 6000 記事を対象とします。 import requests import json items = [] params = {"page
Pandas でデータを扱うことで、データ分析の前処理が格段に楽になります。 列データにおける NaN の処理を例に、Pandasの便利さの説明をしたいと思います。 NaNとはNaN(Not a Number) は浮動小数点型における異常な値のことを意味します。 わかりやすい例で言うと、0での割り算が該当します。これは実数では表せないため、 NaN になります。 Pandas において NaN は 値が欠損している 場合によく遭遇する表現です。 具体例で見ていきましょう。以下のようなサンプルデータ(sample.csv)を作成します。 ID,名前,年齢,性別,趣味 1,小林,20,男,野球観戦 2,田中,35,女,飲み会 3,佐藤,29,男 4,鈴木,44,女,編み物データを read_csv 関数で読み出して DataFrame とした後、表示してみます。 1import pandas
2020年新年最初の投稿です 色々とPython製のライブラリについて調べていたら、仕事でも使えそうなライブラリを見つけたので、今回はそれを試してみます。 地名から座標を割り出す今回はジオコーディングの一種でもある地名や住所から座標を割り出してくれるPython Geocoderというのを使っていきます。Geocoderというものは、多言語にもあるライブラリだそうです。 Geocoderの特徴は、複数のマップサービスのAPIを統一されたスキーマや文法などで代わりに呼び出してくれます。 約30個近くのマップサービスに対応しており、GeocoderからGoogleMap、OpenStreetMapとあらゆるマップサービスからマップの情報を引き出してくれます。 ちなみにGoogleMapなどはAPI Keyが必要ですが、API Keyを設定していなくても、API Key不要なOpenStreet
前のエントリーでは、PHPでGeoIPを使ってIPアドレスを解析した。 本エントリーでは、Pythonを使ったやり方をメモ。と、言ってもほぼPHPと同じw データベースのダウンロード 上記のエントリーと同様なので、上記のエントリーを参照のこと。 インストール インストールにはpipを使う。pipのインストールに関しては、pythonを使っている場合大抵インストールされていると思われるので省略する。 PHPと同様にGithubの公式ページが参考になる。 GeoIP2 Python APIのインストール $ pip install geoip2 これでインストールは完了。 使ってみる 以下のサイトを参考に、PythonでもIPアドレスから地域の情報を取得してみる。 サンプルコード import geoip2.database # データベースの読み込み reader = geoip2.data
ヒストグラムを作成するhist関数 基数の数を変更する (bins) ラベルを元にヒストグラムを作成する by 非数値データの頻度をヒストグラムで表示する まとめ 参考 Pandasにもヒストグラムを作成する関数hist()が存在します。この関数は値を表示するのではなく、ヒストグラムをmatplotlibを使ってプロットします。単純に頻度の数値データが欲しい場合はvalues_counts関数が便利な関数です。 本記事では ヒストグラムの作成の仕方 value_counts関数を使った非数値データの頻度の出力方法 について解説します。 今回扱うサンプルデータはKaggleのチュートリアルからとってきたものです。 Titanic - Kaggle ここのtrain.csvという名前のファイルを使います。 (ダウンロードするためにはユーザー登録が必要ですが簡単なものなのでしておくことをお勧めし
手軽にトピック分析を実行できるgensimを知ったので、gensimを使用して簡単な文章をトピック分析するチュートリアルを実行してみました。 トピック分析、LDA、gensimとは 詳しく理解してはいないので、簡単に言うと、 トピック分析とは、大量の文章からいくつかのトピックを分類して、与えられた文章がどのトピックに属するかを分類する手法 LDAとは、トピック分析の1種 gensimとは、トピック分析を行うことができるPython製のソフトウェア gensimを使ったトピック分析は、以下の手順で行えるようです。 文章を準備 文章を単語ごとに分割、調整 辞書を作成 コーパスを作成 LDAモデルを作成 分類したい文章をLDAモデルで分類 前提 Docker Python 2環境を作るのが面倒だったのでDockerを使っているだけです。 $ docker version Client: Vers
はじめに こんにちは、Speeeでデータサイエンティストをしている@To_Murakamiと申します。エンジニアではないのですが、コーディングを含めた分析例を発信しようと思い、企業のAdvent Calendarに参加させていただきました。 12月も暮れに差し掛かってきましたね。本日は、Word2Vec(ワードトゥベック)という自然言語処理を活用した分析例を紹介します。 このロジックを実装した目的は、ことばの表記ゆれ(類義語)発見器みたいなのを作ってみたいと思ったからです。なぜ、Word2Vecからことばの表記ゆれが分かるのでしょうか?仕組みの概要(下記)が分かると、理由を理解できます。 Word2Vecの仕組み(簡単に) Word2Vecとは言葉通り、単語をベクトル化したものです。ベクトル化した中身には当然数字が入ります。つまり、単語という言語データを数値化することができるのです! 数値
最近の自然言語処理では、単語の分散表現は当たり前のように使われています。 単語分散表現では、各単語が高次元ベクトル空間に配置され、加減乗除等の演算を行えるようになります。 これらのベクトルは、意味の近い単語に対しては同じようなベクトルになることがわかっています。 本記事では、単語分散表現のベクトルをクラスタリングし、意味が近い単語のクラスタを作ってみたいと思います。 これらのクラスタは、眺めて楽しむだけでなく、機械学習の素性として使うこともできます。 イメージ的には、以下のような感じで単語をクラスタにまとめます。 では、単語分散表現をクラスタリングして、単語のクラスタを作ってみましょう。 準備 まずは、作業用のディレクトリを作成しておきましょう。 また、必要に応じて Python の仮想環境も用意します。 以下のコマンドを実行することで、ディレクトリを用意します。 $ mkdir work
(pixabay.comより) 1.背景とか Random Forest[1]とは、ランダムさがもつ利点を活用し、大量に作った決定木を効率よく学習させるという機械学習手法の一種です。SVMなどの既存の手法に比べて、特徴量の重要度が学習とともに計算できること、学習が早いこと、過学習が起きにくいこと(追記注釈1)などの利点が挙げられます。Kinectの姿勢推定に使われているらしいです。 最近、Random Forestをカジュアルに使う例が多く(特にうちの研究室)、一部パラメータやら出力やらがわからない人も多いと思います。使い方はTJOさんの資料[2]を読んでもらえれば理解できると思うし、詳細は波部先生の資料[3]をよんでもらえればわかると思います。 それで、いろいろな日本語の資料をいくら読んでも、Random Forestがもつ特徴の1つである、特徴量の重要度の詳細に関してはほとんどノータッ
システムの構築、新しい技術の習得、PythonやDevOpsなどに情熱を注ぐソフトウェア開発者です。現在はチューリッヒを拠点とするビッグデータのスタートアップで働いており、データ分析およびデータ管理ソリューションのためのPythonの技術を磨いています。 1 はじめに Python は開発時間を短縮できるという点で一般的に評価の高い言語です。しかし、Pythonを使って効率よくデータ分析をするには、思わぬ落とし穴があります。動的かつオープンソースのシステムであるという特徴は、初めは開発を容易にしてくれますが、大規模システムの破綻の原因になり得ます。ライブラリが複雑で実行時間が遅く、データの完全性を考慮した設計になっていないので、開発時間の短縮どころか、すぐに時間を使い果たしてしまう可能性があるのです。 この記事ではPythonやビッグデータで作業をする時に、最も時間を無駄にしがちな事柄につ
Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article? # !/usr/bin/env python # -*- coding: utf-8 -*- # インポート import numpy as np import scipy as py import pandas as pd import itertools as it ''' 作成 ''' # リスト作成 list_value = [10,11,12] list_value Out[374]: [10, 11, 12] # タプル作成 tuple_value = (10,11,12) tuple_value Out[375]: (10
TruncatedSVD# class sklearn.decomposition.TruncatedSVD(n_components=2, *, algorithm='randomized', n_iter=5, n_oversamples=10, power_iteration_normalizer='auto', random_state=None, tol=0.0)[source]# Dimensionality reduction using truncated SVD (aka LSA). This transformer performs linear dimensionality reduction by means of truncated singular value decomposition (SVD). Contrary to PCA, this estimato
NMF# class sklearn.decomposition.NMF(n_components='auto', *, init=None, solver='cd', beta_loss='frobenius', tol=0.0001, max_iter=200, random_state=None, alpha_W=0.0, alpha_H='same', l1_ratio=0.0, verbose=0, shuffle=False)[source]# Non-Negative Matrix Factorization (NMF). Find two non-negative matrices, i.e. matrices with all non-negative elements, (W, H) whose product approximates the non-negative
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く