タグ

ブックマーク / sucrose.hatenablog.com (15)

  • jqコマンドでJSONをCSVに変換する - 唯物是真 @Scaled_Wurm

    jq 前に以下のニコニコ動画のデータセットの記事でも使いましたが、jqコマンドはJSONを変形したり一部を抽出したりするのにとても便利なコマンドです ニコニコ動画のデータセットが公開されたらしい - 唯物是真 @Scaled_Wurm マニュアルを見ると、条件に応じた処理とか最大値を求めるとか意外と複雑な機能も使うことができます jq Manual 軽量JSONパーサー『jq』のドキュメント:『jq Manual』をざっくり日語訳してみました | Developers.IO また以下のサイトでオンライン上で試せます jq play JSONをCSVに変換 JSONをCSVに直したい時があって使い方を調べたのでメモしておきます 単純な例 まずは単純に以下のようなJSONをCSVに変換します {"key1": 1, "key2": 2} 方法1 - 文字列展開 文字列中の\()の中身は展開さ

    jqコマンドでJSONをCSVに変換する - 唯物是真 @Scaled_Wurm
  • 特徴量(素性)を作るときのメモ + scikit-learnにちょっと触る - 唯物是真 @Scaled_Wurm

    機械学習のデータとして特徴量を作るときの注意点や悩むことなどをメモっておきました。 間違いなどが含まれているかもしれません。 基的な内容ですので調べればもっと適切なやり方があると思います。 カテゴリカル・データ カテゴリカル・データというのは、いくつかの限られた種類の値をとり、その大小関係に意味が無いものです。 質的データとか名義尺度とか呼ばれることもあります。 例えば都道府県のデータを考えた時に、北海道と沖縄は違う値ですが、その大小関係は定義できません。 (もちろん北海道と沖縄に面積的な大小関係などはありますが、欲しい情報ではないとします) カテゴリカル・データを特徴量にするときにはカテゴリーごとにその特徴であるかどうかの二値にするとよいと言われています 以下に例を示します。それぞれの列がデータごとの特徴量を表していると考えてください 北海道:1 沖縄:0 東京:0 北海道:0 沖縄:

    特徴量(素性)を作るときのメモ + scikit-learnにちょっと触る - 唯物是真 @Scaled_Wurm
  • 進捗ありません - 修士4年間の振り返り - 唯物是真 @Scaled_Wurm

    そういえば修士論文や発表が終わっていたので報告代わりに書いておきます 役に立つ内容だったりポジティブな内容だったりはしないただの記録なので注意 できるだけマイルドな内容にしたつもりです 一応書いておくと2010年に大学院に修士として入って、2回修士論文を出せずに留年して、今回に至ります。 私がいた研究室はポジティブな結果が出ないとダメ的な雰囲気が強いのですが、結局研究はダメで修士4年目なのでお情けで出させてもらった感じが強いです…… 修士論文以外に論文も書いていないので、研究的にはほとんどアウトプットが出せなかった4年間でした。 精神的につらい感じの研究室生活で何度もやめようかと思いましたが、いろんな人に励ましていただいたり手伝ったりしていただきました 感謝しています、ありがとうございました 先生方とも全然会話できない感じになっていました。 ほとんど何も進んでいない→進んでないから話すこと

    進捗ありません - 修士4年間の振り返り - 唯物是真 @Scaled_Wurm
  • pyqueryでHTMLからデータを抽出 - 唯物是真 @Scaled_Wurm

    pyqueryはjQueryと同様にHTMLの操作ができるPython用のライブラリです。 PythonHTMLからのデータ抽出といえばBeautiful Soupの名前をよく見かけますが、jQueryを知っている人にはこっちの方が使いやすいと思います。 内部的にはlxmlを使用しているので以下の記事などでlxmlの使い方にも軽く目を通しておいたほうがいいかもしれません。 Python(lxml)でhtmlを処理する まとめ - Gentleちゃれんじ Tips "pip install pyquery"などでインストールできると思います 動かすにはlxmlが必要になります。入ってない場合にはそちらもインストールが必要かもしれません。 Python 3でも動くらしいです 使い方の簡単な例 PyQueryクラスにHTMLの文字列やURLを与えれば、jQuery風のオブジェクトとして利用でき

    pyqueryでHTMLからデータを抽出 - 唯物是真 @Scaled_Wurm
  • 大量のテキストからランダムに少数の行を抽出したい - Reservoir Sampling - 唯物是真 @Scaled_Wurm

    前に以下のような記事を書きましたが、大量のテキストではうまくいかなかったので新たに書きました ファイルからランダムにN行取り出す(shufコマンド) - 唯物是真 @Scaled_Wurm 上の記事ではテキストをランダムに\(k\)行取り出したい時"shuf -n k"コマンドでランダムにシャッフルした\(k\)行を取り出していました ところが非常に大きなテキストファイルに対して上のコマンドを実行すると、一度にデータを全部メモリに読み込み始めているのか、すごい勢いでメモリを消費していきました(sort -Rでも) そこでメモリをあまり使わずにランダムに\(k\)行取り出す方法について調べました まず基的な非復元抽出のアルゴリズムは以下の記事の発展手法とか追記のあたりの話がわかりやすいと思います 非復元抽出の高速かつ実装が簡単な方法を考える - 睡眠不足?! この記事の話も一度全部の要素を

    大量のテキストからランダムに少数の行を抽出したい - Reservoir Sampling - 唯物是真 @Scaled_Wurm
  • 統計的仮説検定がよくわからない - 唯物是真 @Scaled_Wurm

    下の記事が話題になっていたので読んで、「そういえば自分は統計的仮説検定がよくわかってないなぁ」と思ったのでなんとなく書いた A/Bテストのガイドライン:仮説検定はいらない(Request for Comments|ご意見求む) - 廿TT 自分の理解 とりあえず自分の曖昧な理解をつらつらと書いておく 間違ってたら指摘いただけると嬉しい 統計的仮説検定は(帰無)仮説がある有意水準のもとで間違っている(棄却できる、p値が有意水準以下になる)かどうかを統計的に判定する手法 正確には求めたい(対立)仮説の反対を帰無仮説とする まず有意水準とかp値の意味が難しい 有意水準は真である帰無仮説を誤って棄却する確率で、p値は得られたデータ以上に極端なデータが帰無仮説において得られる確率らしい 有意水準が表しているのが検定が間違える確率じゃないっぽいのもわかりづらい いわゆる特異度を1から引いた的なものって

    統計的仮説検定がよくわからない - 唯物是真 @Scaled_Wurm
  • 集合とかベクトルの類似度の計算のメモ - 唯物是真 @Scaled_Wurm

    Pythonで実装する類似度計算 - Screaming Loud #1283. 共起性の計算法 ↑この辺りの記事を見て、集合とかベクトルの類似度の計算の記事を下書きのまま放置していたことを思い出したので書き上げた。 類似度の計算のコードを書いたのでそれを載せるだけにしようかと思ったのですが、知っている人にしか伝わりそうにないので自然言語処理でよく使う話の概要だけでも書いときます。 導入 自然言語処理の分野では単語の意味を比較するときに、ある単語の周り(文脈)に出てきた単語のベクトル(文脈ベクトル)の類似度を計算することがある。 これは「ある単語の意味はその周囲に出現する単語によって特徴づけられている」という仮説に基づいていて、文脈ベクトルが似ていれば似たような意味、似たような状況で使われる単語が多いということが言えるからである。 Distributional semantics - Wi

  • Twitterの投稿時間で類似度を計算してみた - 確率分布の類似度 - 唯物是真 @Scaled_Wurm

    以前集合やベクトルの類似度の記事を書いたんですが、確率分布の類似度には触れていなかったのでついでに書きました ツイート時間分布の類似度を求める 今回はツイート時間ごとの頻度を正規化して、確率分布とみなして類似度を計算してみます 私のアカウント(以下mainと表記)に対して、私のもう一つのアカウント(以下subと表記)+私がリプライを送ってる数が多い(以下friendと表記)上位5人と比較します subがfriendよりも似た結果になることを期待しています 以下にツイート時間の分布(main + sub + friend 5人)を載せました ある程度似ていますが、人によってそこそこ形が違っていて、特に午前中の投稿時間の差は特徴的に見えます またfriend1の一人だけは大きく違った傾向を示しています 以下ではこれらが定量的にどれぐらい異なるのか類似度を計算して比較していきます グラフを描くの

    Twitterの投稿時間で類似度を計算してみた - 確率分布の類似度 - 唯物是真 @Scaled_Wurm
  • 論文紹介 “Representing Topics Using Images” (NAACL 2013) - 唯物是真 @Scaled_Wurm

    “Representing Topics Using Images", Nikolaos Aletras and Mark Stevenson 研究室で論文紹介したので適当に以下に資料を貼っておく。 論文を読んだ後で気づいたけど、NAACL 2013はまだやっていないので、preprintバージョン(?)っぽい。 何故か研究室での論文紹介は、資料が英語で口頭説明が日語なので、以下では日語の説明を加えておいた。 英語が間違っている部分があると思いますが、コメントで指摘なりスルーするなりしてください。 スライドはこうした方がいいとかもあったらぜひ。 後から読むと説明の流れが変かな?ってところもありますね。 論文中の図表ってどの程度載せていいんでしょうか……? やっぱりまったく載せないほうがいいんですかね。 論文紹介 概要 自然言語処理ではトピックモデルというものがよく用いられている。 トピ

    論文紹介 “Representing Topics Using Images” (NAACL 2013) - 唯物是真 @Scaled_Wurm
  • Python用のトピックモデルのライブラリgensim の使い方(主に日本語のテキストの読み込み) - 唯物是真 @Scaled_Wurm

    gensimは前に以下の記事でも使ったPython用のトピックモデルなどの機能があるライブラリです。 小説家になろうランキングをトピックモデルで解析(gensim) - 唯物是真 @Scaled_Wurm 以前紹介した以下の論文でもgensimが使われていました 論文紹介 “Representing Topics Using Images” (NAACL 2013) - 唯物是真 @Scaled_Wurm deep learningで話題になったword2vecの機能も取り入れてたりして面白いライブラリです Radim Řehůřek : Deep learning with word2vec and gensim 入力の作り方がすこしわかりにくいかなぁと思ったので、メモっておきます。 コーパスの作り方 以下の公式の例で説明します この例ではリスト内のそれぞれの要素が1つの文書となります

    Python用のトピックモデルのライブラリgensim の使い方(主に日本語のテキストの読み込み) - 唯物是真 @Scaled_Wurm
  • LIBSVMとかLIBLINEARとかのメモ - 唯物是真 @Scaled_Wurm

    LIBSVM -- A Library for Support Vector MachinesとかLIBLINEAR -- A Library for Large Linear Classificationを使って二値分類の問題で遊んでいました。 その時にすぐにわからなかったことのメモ。 Accuracy以外の尺度を出力する 普通LIBSVMやLIBLINEARを使ってクロスバリデーションをするとAccuracyが出力されますが、二値分類においてはその他の尺度PrecisionやRecall、F値やAUCなどが見たい時があります。 LibSVMのcross validationオプションでprecision/recallを出力する - 睡眠不足?! こちらの記事ではLIBSVMでPrecisionやRecall、F値を出力させるパッチが公開されています。 簡単に適用できてわかりやすいです。

    LIBSVMとかLIBLINEARとかのメモ - 唯物是真 @Scaled_Wurm
  • Lossy Countingを実装してみた - 省メモリな頻度計測 - 唯物是真 @Scaled_Wurm

    大規模データで頻度を数えると、欲しいのはよく登場するアイテムの情報なのに、ほとんど出現しないアイテムの種類数が非常に多くて、それらがメモリを大量に必要としてしまうという問題がある これに対してアイテムの種類数の最大値に制限を加えたり、頻度に誤差を許すなどの条件のもとで、省メモリに頻度計測を行う方法がいくつも提案されている これらについては以下の記事が詳しい 大規模データで単語の数を数える - ny23の日記 今回はそういった手法の一つであるLossy Countingを実装した 日語では上記の記事と以下の記事が詳しい [を] 誤り許容カウント法(lossy count method)のサンプルプログラム [O] イプシロン劣シノプス性を保持した頻度カウント lossy countingアルゴリズム - 機械学習の「朱鷺の杜Wiki」 元論文はこちら。年を見ると結構前なので、現在ではもっと

  • pythonの機械学習ライブラリscikit-learnの紹介 - 唯物是真 @Scaled_Wurm

    scikit-learn(sklearn)の日語の入門記事があんまりないなーと思って書きました。 どちらかっていうとよく使う機能の紹介的な感じです。 英語が読める方は公式のチュートリアルがおすすめです。 scikit-learnとは? scikit-learnはオープンソースの機械学習ライブラリで、分類や回帰、クラスタリングなどの機能が実装されています。 また様々な評価尺度やクロスバリデーション、パラメータのグリッドサーチなどの痒いところに手が届く機能もあります。 インストール scikit-learnの他にもnumpyとかscipyとかが必要です。 Windows 64 bit版の人は以下のURLに色々なインストーラーがおいてあるのでおすすめ Python Extension Packages for Windows - Christoph Gohlke その他の人は以下のURLを見て

    pythonの機械学習ライブラリscikit-learnの紹介 - 唯物是真 @Scaled_Wurm
  • 小説家になろうのランキングをトピックモデルで解析(gensim) - 唯物是真 @Scaled_Wurm

    小説家になろうというWeb小説投稿サイトがあります。 いわゆるライトノベル的な作品が多いのですが、近年書籍化される作品が多く出ていて注目を集めています。 続々と「小説家になろう」から書籍化作品が登場! - フラン☆Skin はてな支店 小説を読もう! || 小説ランキング[累計]の上位100件を解析して、どんな作品が多いのか調べてみました。 解析手法 トピックモデルというものを用います。 これは文書が何のトピックを含むかを推定してくれるモデルで、他にもトピックの代表的な単語などもわかります。 Pythonでトピックモデルを使えるライブラリの一つであるgensim: Topic modelling for humansを使います。 gensim gensimはLDAやLSIなど複数のトピックモデルを実装しています。 今回はLDA(Latent Dirichlet Allocation)という

    小説家になろうのランキングをトピックモデルで解析(gensim) - 唯物是真 @Scaled_Wurm
  • CrowdSolving第1回コンペに参加しました 5/43位 - 唯物是真 @Scaled_Wurm

    CrowdSolving | データ分析・予測モデル作成のコンペサイトのコンペが終わったので、結果とかアプローチとか書いときます 以前書いた記事↓ CrowdSolvingに参加中 - あるいは機械学習関連のメモ - 唯物是真 @Scaled_Wurm タスク コンテンツ販売サービスの会員離脱予測 | CrowdSolving タスクはユーザーの退会予測となっています。 ユーザーの一週間の行動(イベントタイプと日時のペア)が与えられた時に、一か月後ユーザーが退会するかどうかを予測します。 順位 順位 最終結果は5位でした。 ちなみに最終日の暫定順位が3位で、一番よかった時が2位でした。 結構順位が下がってるので過学習っぽいですね。 過学習の恐怖,またはいかにして私は1分間でランキングを50位も落としたか(要約) - 糞ネット弁慶 アプローチ 基的に10分割交差検定の結果を見ながらモデルや

    CrowdSolving第1回コンペに参加しました 5/43位 - 唯物是真 @Scaled_Wurm
  • 1