アドベントカレンダーを終えて
アドベントカレンダー25日目です。
アドベントカレンダーを終えて
今年もなんとかアドベントカレンダーを完走することができました。
一人でアドベントカレンダーを書くことには、メリットとデメリットがあると思います。
メリットとしては、毎日ブログを書くことで、アウトプットの習慣を作ることができることや、ブログのために勉強をするという動機を作れるということだと思います。
デメリットとしては、毎日書かなくてはいけないということで、内容が薄めになりやすいところ、複数人で書かないのであまり楽しみがないということがあります。
今年は昨年に比べてとても忙しかったので、駆け込みでブログを書くような日々が続きました。このような状況なのであまりいい記事もかけていません。
しかしながら、アドベントカレンダーをやるのとやらないのだと、やってよかったと思います。
そして、来年は今年より忙しいことが見込めるので、一人アドベントカレンダーをやるかは不明です。どちらかといえば何かのアドベントカレンダーに参加したいという気持ちが今はあります。
今年もあと一週間ですが、来年も頑張っていきたいと思います。
scikit-learnのNaive Bayes使ってみた
アドベントカレンダー24日目です。
今日はscikit-learnでNaive Bayesを使ってみたいと思います。
adventar.org
Naive Bayesについて
今回はGaussian Naive Bayesを使います。
GaussianNB implements the Gaussian Naive Bayes algorithm for classification. The likelihood of the features is assumed to be Gaussian
https://scikit-learn.org/stable/modules/naive_bayes.html#gaussian-naive-bayes
The parameters and are estimated using maximum likelihood.
詳しくはよくわかりませんが、使うだけならSVMと同じように簡単です。
学習と分類
とりあえず必要なものをインポートします。
ちょっと種類が多いのは、混同行列を出したりしたからです。
import itertools from collections import Counter import numpy as np import matplotlib.pyplot as plt from sklearn import datasets from sklearn.naive_bayes import GaussianNB from sklearn.model_selection import train_test_split from sklearn.metrics import classification_report from sklearn.metrics import confusion_matrix
今回はデータセットにdigitを使います。
digits.dataでデータが、digits.targetでラベルが取得できます。
digits = datasets.load_digits() data = digits.data target = digits.target
データを学習用とテスト用に分けて学習を始めます。
(X_train, X_test, y_train, y_test) = train_test_split(data, target) gnb = GaussianNB() clf = gnb.fit(X_train, y_train)
あとは分類してみましょう。
y_pred = clf.predict(X_test) np.mean(y_test == y_pred) Out[19]: 0.8577777777777778
使用したコード及び、classification_reportとconfusion matrixはこちらに載せておきます。
まとめ
今回はNaive Bayesを使ってみましたが、非常にお手軽でした。
scikit-learnにはほかのNaive Bayesもあるので、試してみてください。
通学時間で勉強する
アドベントカレンダー23日目です。
今日は通学時間での勉強について書いていきたいと思います。
通学時間の勉強
- 英語の勉強
英語の勉強は通学時間でとても手軽にできますね。
一番簡単なのは、単語学習アプリなんかをやることです。
個人的に好きな単語学習アプリは「mikan」か「スタディサプリ英単語」です。
eitangosapuri.jp
mikanはシンプルに使いやすく、TOEIC対策や、大学受験対策もできます。
スタディサプリ英単語は、単語力で競ったり、苦手な単語を学びなおすときに使いやすいと思いました。
単語の勉強以外では、スタディサプリENGLISHが使いやすいと思いました。
文法自体の勉強や、リスニングの勉強もできますが、月3000円とあまり安くないので少し悩みどころです。 - 動向を学ぶ
通学時間はなんとなく記事を読んだりするのが好きな人は、自分の専門の動向を学ぶのがいいかも知れません。個人的には動向を学ぶ際には、Twitterかはてなブックマークを使っています。
Twitterでは、最新の動向を発信する人をフォローしていて、その人のRTする記事を読んだりしています。
はてなブックマークは「機械学習」など好きな分野について検索するか、テクノロジー分野などで気に入った記事を読むなどの運用が楽かなと思います。 - アウトプットする
ブログを書いたりするのが好きな人はアウトプットをしたりするのがいいかも知れません。今現在自分も文章力をアップさせるという意味合いを込めてアウトプットしていますが、何かしら学んだことをメモにしておくと、誰かの助けになったり、後で自分自身が忘れたときに確認することもできます。
また、精力的にアウトプットを行っていることは、就活や転職などにおいてプラスになると思います。
まとめ
ソシャゲをしたり、動画を見たりするのもいいですが、家に帰って自由時間を削るのが嫌な人は通学時間に勉強するのもいいかなと思いました。
kaggle-apiを使ってdownload, submitを行う
アドベントカレンダー22日目です。
今日はkaggle-apiの使い方を書いていきたいと思います。
adventar.org
リモートで出力されたcsvをいちいちダウンロードしてsubmitするのは面倒ですよね。 コンペのファイルをダウンロードするのも面倒ですね。
そういうときはkaggle-apiが便利です。
** インストール
インストールもお手軽にpipでできます。
pip install kaggle
セットアップ
使用前にtokenを設定する必要があります。
kaggleのサイトを開き、アカウント設定を開きます。http://kaggle.com/
ダウンロードしたjsonを決まった位置に配置します。
~/.kaggle/kaggle.json
権限を設定します。
chmod 600 ~/.kaggle/kaggle.json
使い方
データをダウンロードする
quoraコンペの例ではこのようになります。
`kaggle competitions download -c quora-insincere-questions-classification
これを打ち込むだけで、デフォルトの位置にダウンロードされます。
submitする
提出するファイルを-fの後に指定し、提出する際のメッセージを-m以降で設定できます。
kaggle competitions submit -c ga-customer-revenue-prediction -f submission.csv -m "Message"
まとめ
毎回submitする際にCSVをダウンロードしたりしなくてすむので、ぜひ使ってみてください。
画像を圧縮するサービス「Squoosh」を使う
アドベントカレンダー21日目です。
今日は画像を圧縮するサービスSquooshを使ってみたいと思います。
Squooshとは
お手軽に、ブラウザのみで、画像を圧縮してくれるサービスです。
このブログでも、一眼レフの紹介記事を書いた時には使用しています。
使い方
トップページはこんな感じです。
まず、画像をドラッグ&ドロップするか、画像選択します。
画像選択した後の画面はこんなです。
特に設定をせずに圧縮するだけなら、右下のボタンを押すと圧縮できます。
元の容量が、左下に出ている17MBに対し、圧縮した後のサイズは右下に出ている通りの3.19MBです。81%の容量削減に成功しています。
マウスホイールを動かすことで、画像の拡大縮小が可能です。
そして、真ん中のバーを動かすことで、圧縮前と圧縮後の比較ができます。
画像を確認しながら圧縮できるのも便利なところですね。
わずかにノイズが増えているのが見えると思います。
そこまで大きな変化はなしに容量が81%も削減できているのはすごいと思います。
リサイズ機能や、色の減衰機能もあります。
Resizeにチェックをつけると、サイズやアスペクト比の維持の設定に加えて、リサイズ方式まで指定できます。
colorsの数値を下げるとわずかに容量を圧縮できます。
Show advanced settingsを押すことで、より詳細な設定ができます。
ほとんどの機能は使わないかと思いますが、個人的にはSmoothingは使うかもしれないと思います。
以下の画像はSmoothingを最大にしたものですが、ノイズが減っているかわりにやや塗りつぶしたような感じが見受けられます。これも容量の削減につながるのでお好みでどうぞ。
一番誰もが調整する部分として考えられるのは、Qualityです。
これを下げることで容量を大きく下げることができますが、あまり下げるとノイズが大きく乗ってしまいます。
例えば、今回の画像ではQualityを23まで下げることで、リサイズなしに容量は1MBを切ることができました。
まとめ
今回は画像を圧縮するサービスを使ってみました。
画像をアップロードするときにサイズ制限がある場合や、大きさに制限があるときにぜひ使ってみてください。
Googleスプレッドシートでテキストを分割する
アドベントカレンダー20日目です。
今日は、Googleスプレッドシートで列ごとにテキストを分割する方法を書いていきたいと思います。
テキストを分割する
昨日作成した、
scikit-learnのclassification_reportでlabelを設定する - 深層学習とその他
classification_reportをgoogleスプレッドシートに張り付けて、表を作るとします。その時に、テキストが同じセルにまとまってしまうということが起こりました。
テキストを分割するには、データからテキストを列に分割するを選択します。
すると何を基準に区切るかを設定する画面が出ます。
今回の場合はスペースですね。
こんな感じになりました。
何故か幅が大きく空いてますが、正しく分割できましたね。
また、複数行を同時に分割することもできます。
分割した結果はこんな感じです。
きれいに分割できましたね。
まとめ
scikit-learnのclassification_reportでlabelを設定する
アドベントカレンダー19日目です。
今日はclassification_reportでラベルを設定する方法を書いていきたいと思います。
adventar.org
ラベルの設定の仕方
scikit-learnのドキュメントはこちらです。
sklearn.metrics.classification_report — scikit-learn 0.20.2 documentation
classification_reportにラベルと予測結果を渡すことで、表を出力してくれます。
その際にラベルを設定しようとして少してこずったので書いていきます。
classification_reportの引数は以下の通りです。
classification_report(y_true, y_pred, labels=None, target_names=None, sample_weight=None, digits=2, output_dict=False)
https://scikit-learn.org/stable/modules/generated/sklearn.metrics.classification_report.html#sklearn.metrics.classification_report
これを見たときに、labelsにラベルを渡せばいいのかと思ったのですが、エラーを吐いてだめでした。
実際には、target_namesに渡す必要があったみたいです。
print(classification_report(label, pred, target_names=["a", "b", "c", "d", "e", "f", "g", "h", "i"]))
precision recall f1-score support a 0.16 0.63 0.26 104 b 0.71 0.66 0.69 671 c 0.02 0.48 0.04 29 d 0.96 0.72 0.82 7205 e 0.13 0.61 0.21 102 f 0.49 0.55 0.52 796 g 0.56 0.84 0.67 277 h 0.02 0.57 0.04 7 i 0.09 0.60 0.15 10 avg / total 0.87 0.70 0.77 9201
まとめ
これでclassification_reportをより見やすくすることができますね。
日本語を使用すると表がずれやすいので気を付けてください。