iMind Developers Blog

iMind開発者ブログ

chart.jsの円グラフの中に値を表示する

概要 chart.jsで作った円グラフのグラフ内にパーセンテージを表示するようにする。 完成図 バージョン情報 chart.js 2.8.0 chartjs-plugin-datalabels 0.6.0 通常の円グラフ まずは最低限のコードで円グラフを生成。 <html> <head> <link rel="stylesheet" type="text/css" href="https://cdnjs.cloudflare.com/ajax/libs/Chart.js/2.8.0/Chart.min.css"/> </link></head></html>

PySparkでDataFrameのカラム名をrename

概要 PySparkでSELECTしたカラムの名前を変更する方法を確認する。 バージョン情報 Spark 2.4.3 サンプルデータ カラムfoo, bar, bazの3つを持つtmp_exampleテーブルを用意。 import pandas as pd import numpy as np np.random.seed(0) # 0〜100までの値が…

TFRecordの読み書き

概要 TensorFlowでTFRecordの読み書きをする。 バージョン情報 tensorflow==1.13.1 TFRecordとは 機械学習をする際に学習データがメモリに載せきれるようなサイズでない場合は、ストレージに置いておいて頻繁に読み込む必要がある。 TFRecordはその手の処理…

Pythonのcontextlibでwithに渡せる処理を定義する

概要 Pythonのwith構文で自動でリソースがcloseされる系の処理を、contextlibを利用して定義してみる。 バージョン情報 Python 3.7.3 contextlib2について contextlibは古いバージョンでは入っていないこともあるので、そうしたバージョンでも使えるようにco…

コンソールでCtrl+矢印キーを押した際に「;5c」や「;5d」になってしまう場合

概要 sshした端末上でCtrl + 矢印キーで1単語分移動をさせようとしたら「;5c」や「;5d」に変換されてしまい、移動ができなかった。 ~/.inputrcを編集してこれが可能なようにする。 バージョン情報 xfce4-terminal 0.8.7.4 記述内容 ~/.inputrc にこう書けば…

Spark SQLのヒント文でINSERT OVERWRITE時のファイル数の制限

概要 Spark SQLでSELECTした値をINSERT OVERWRITEしようとした際にファイルが細かくsplitされてHDFSの容量をムダに喰ってしまうことがある。 Spark SQLではrepartitionヒント文を使うことで分割するファイル数を指定することができる。 バージョン情報 Spark…

PySparkでUDFを書く

概要 PySparkはUDF/UDAFが手軽に書けて便利。 バージョン情報 Python 3.7.3 Spark 2.4.3 サンプルデータ カンマ区切りの文字列が入ったカラムを用意して、それをsplitしたり戻したりといった処理をudfで実行してみる。 サンプルデータとしてA, B, Cの3つのカ…

t-SNEによる高次元データの可視化

概要 t-SNEとPCAでMNISTの手書き文字やファッション画像を2〜3次元に圧縮して可視化してみる。 バージョン情報 scikit-learn==0.21.2 Keras==2.2.4 (fashion_mnistのデータセットで利用) 手書き文字 - t-SNE - 2次元 sklearn.datasetsのdigitsを使って2次元…

PySparkでRDDからDataFrame変換時に型を指定する

概要 PySparkで整形したrddをtoDFしようとしたら下記のようなエラーが起きて怒られた。 ValueError: Some of types cannot be determined by the first 100 rows, please try again with sampling データを確認すると、処理結果の上位がNoneになっていて型の…

scikit-learnのPCAを使う

概要 PCAを使う用事があったのでscikit-learnを利用する。 バージョン情報 scikit-learn==0.21.2 Python 3.7.3 サンプルデータ ランダムにユーザーにアイテムを割り振るサンプルデータを生成してみる。 要件は下記。 ユーザー数は1万 アイテム数は3000 1ユー…