u++の備忘録

TECHNOLOGY::python

KaggleのWinner solutionにもなった「K近傍を用いた特徴量抽出」のPython実装

今回は、KaggleのWinner solutionにもなった「K近傍を用いた特徴量抽出」を紹介します。Rでの実装は公開されていますが、Pythonでの実装は確認できなかったので、自前のPython実装も公開しています。github.com アルゴリズムの概要 Pythonでの例 可視化のた…

matplotlib.pyplot.histとseaborn.distplotの違い

seaborn.distplotの公式ドキュメントには「matplotlib.pyplot.histを使っている」と記載がある。 This function combines the matplotlib hist function (with automatic calculation of a good default bin size) with the seaborn kdeplot() and rugplot()…

二部グラフの最大マッチング問題|Python実装

参考にした実装 ina17.hatenablog.jp 改良点 setのエラーの回避 setでは .items() が使えないので回避した 条件分岐の追加 パッケージの都合で(3, 9)の組み合わせが(9,3)の順で出力される場合が考慮されていなかったので修正した Python実装 import networkx…

安定結婚問題|ゲール-シャプレイ (Gale-Shapley) アルゴリズムのPython実装

概要 安定結婚問題 - Wikipedia 参考にした実装 cielan.hateblo.jp 改良点 アルゴリズム修正 とある男がプロポーズする際に、好みの女からプロポーズするように修正した 引数の追加 男4人・女3人など、男女の数が同一でないパターンにも対応できるようにした…

【Pandas】欠損値を、欠損していない値からランダム抽出して補完する

あまりこういう欠損値補完はしない気もするけど、業務にて要望があった。調べても、これくらいしか情報が出てこなかったので、自分用メモ。もっと良い書き方がある気がする。stackoverflow.com target_column_name = list(df.columns[df.isnull().any(0)]) f…

【書評】『前処理大全』はNot Awesomeな局所解に気付かせてくれる本

前処理大全[データ分析のためのSQL/R/Python実践テクニック] 本橋智光 著,株式会社ホクソエム 監修 定価(本体3,000円+税) 技術評論社 gihyo.jp どんな本? データサイエンスの現場で遭遇する様々なトピック(抽出・集約・結合など)を題材に、R・Pytho…

決定株分類器のPython実装

『イラストで学ぶ機械学習』のp.93-96を読み、p.96のMATLABサンプルコードを参考に、Pythonで実装した。bookclub.kodansha.co.jp # -*- coding: utf-8 -*- import numpy as np import matplotlib.pyplot as plt CLASS_NUM = 2 N = 50 np.random.seed(seed = …

Googleの「CNNで糖尿病性網膜症を判定する」研究の論文紹介

はじめに 某所で、下記でまとめた論文について紹介をしてきた。upura.hatenablog.com 所感 Googleの論文ではあるが、掲載誌が情報系ではなく米医師会による医学系のものであるため、数式が一つも出てこない。むしろ、Deep Learningアルゴリズムを医療適用す…

RBFカーネルのハイパーパラメータは何物か?

はじめに RBFカーネルとは? RBFカーネルを用いたSVM 上の画像を生成したPythonコード おわりに (技術的なことに限らず)質問募集 はじめに 今回の記事は、下記の質問に答えるものです。 RBFカーネルとは? RBFカーネル(Radial basis function kernel)は下…

【Python&遊戯王】文章類似度の計算手法”Doc2vec”は「コンマイ語」にも通用するのか

はじめに 要するにやること 本記事では 遊戯王カードの効果テキストを基に Doc2vecという文章単位の類似度を計算するアルゴリズムを使って 類似したカードを探すコードを実装してみます 遊戯王カードの効果テキストは、あまりの複雑さや特殊な解釈のために「…

【Python, sklearn】モデル名の表示

documentation読んでも上手く見つけられず、他人のコードを読み漁って発見したのでメモ。 from sklearn.linear_model import LogisticRegression # ロジスティック回帰 model = LogisticRegression() clf = model.fit(X_train,y_train) print(clf.__class__.…

PythonでRFM分析(任意のクラスタ数にK-meansクラスタリング)

RFM分析とは www.albert2005.co.jp www.albert2005.co.jp やったこと RFMの3特徴量で各ユーザのデータを取得 F, Mについては分布を考慮しlog10を取る データの可視化 3次元散布図 K-meansクラスタリング クラスタ数をGlobal変数に 自動で色分け サンプル 想…

「スタバなう」ツイートの画像は本当にスタバか、CNNで判定してみた

はじめに Twitterで1日に一度くらいは「スタバなう」という投稿を目にする気がします。ただし大抵はキラキラ女子大生などを揶揄しており、ラーメンなどの画像とともに投稿されることが多いです。今回は、画像分類に秀でたConvolutional Neural Network (CNN)…

べき分布の対数を取る(ヒストグラムで可視化)

はじめに べき分布の対数を取ると、ヒストグラムの形がどのように変わるか見てみた。やってみた後に気付いたが、数式的に当たり前の結果。github.com Jupyter Notebook # 参考:https://qiita.com/tibigame/items/fa746573fbaf4666bc33 import numpy as np i…

Windowsにpython-mecab導入(2017年11月)

自分用メモmac版はこちら Macにpython-mecab導入(2017年10月) - u++の備忘録 端末 Windows 10 Python環境 Python 3.6.2 | Anaconda インストール方法 pipで辞書などを丸ごと導入できるようにしてくださったものを利用する。qiita.com 事前インストール landi…

『画像認識』(機械学習プロフェッショナルシリーズ)第5章まとめ

某所にて、『画像認識』(機械学習プロフェッショナルシリーズ)の勉強会(輪読形式)があり、第5章「分類」を担当しました。参考書の内容に加え、『パターン認識と機械学習 上』の内容も盛り込み、包括的に「分類」を扱いました。www.kspub.co.jp下記の記事…

【遊戯王デュエルリンクス】修正されたスキル「バランス」で50回戦った初期手札の分布 スクリーンショットからPythonで自動集計

11月6日のアップデートで、スキル「バランス」に一定のランダム性が付与されたそうです。どの程度のランダム性が付与されたかを調べるため、初期手札の分布を集計しました。 使用デッキ モンスター10枚・魔法5枚・罠5枚デッキで、スキルは「バランス」です。…

【Python&遊戯王デュエルリンクス】スクリーンショットから初期手札の「バランス」を自動取得するスクリプト

11月6日のアップデートで、スキル「バランス」に一定のランダム性が付与されたそうです。どの程度のランダム性が付与されたかを調べるため現在、モンスター10枚・魔法5枚・罠5枚デッキで「バランス」を使ってデュエルを始めた際の初期手札のスクリーンショッ…

kmeansのinertiaとは何物か

暇だったのでkmeansのdocumentationを読んでいたら、今まで曖昧な理解だった"inertia"という語についてまとまった言及があったので、自分用メモ。2.3. Clustering — scikit-learn 0.19.1 documentation inertiaとは kmeansの最適化において最小化すべき指標…

人工知能(AI)にミス東大2017の結果を予想させてみる

はじめに 昨日、某所で「画像認識」を題材にしたハッカソンに参加しました。秋の到来→学園祭シーズン→学園祭といえばミスコン という思考でアイデアを考えた結果、下記の記事を参考にすれば比較的手軽に実装ができそうだと思い、タイトルのようなテーマで取…

【10月27日Version2対応】Pythonで活性化関数Swishを書く

以下の記事の続きです。 upura.hatenablog.com10月27日にVersion2が公開されていたので、ブログも対応して修正します。Figure4に当たります。 #!/usr/bin/env python3 # -*- coding: utf-8 -*- import numpy as np import matplotlib.pyplot as plt beta = […

強化学習Q-learningで、ダチョウ倶楽部の「熱湯風呂」ができるAIを育成してみた

出典:ORICON NewsAlphaGo Zeroで話題になった強化学習の復習として、Q-learningで、ダチョウ倶楽部の「熱湯風呂」ができるAIを育成してみました。 目的 "押すなよ"を与えられた際には押さず(stay)、"絶対に押すなよ"を与えられた際には押す(push)ように育成…

Facebookの時系列解析ライブラリ「Prophet」で日経平均株価の終値を予測

データは、以下の記事と同様に取得しました(2007年〜2017年9月8日)。 upura.hatenablog.com今回は下記の記事に沿って、デフォルト設定で処理してみました。 d.hatena.ne.jp #!/usr/bin/env python3 # -*- coding: utf-8 -*- import pandas as pd from matp…

python-mecab+sklearnを用いて、文章を分かち書きしてTF-IDFでベクトル化する

#!/usr/bin/env python3 # -*- coding: utf-8 -*- import MeCab from sklearn.feature_extraction.text import TfidfVectorizer # Initial settings vectorizer = TfidfVectorizer(use_idf=True, token_pattern=u'(?u)\\b\\w+\\b') # Global variables docs …

Macにpython-mecab導入(2017年10月)

自分用メモWindows版はこちら Windowsにpython-mecab導入(2017年11月) - u++の備忘録 端末 macOS Sierra, version 10.12.6 Python環境 Python 3.6.2 | Anaconda ※下記サイトに沿って構築 qiita.com python-mecab導入 mecab本体のインストール brew install m…

Pythonで活性化関数Swishを書く

※ 10月27日にVersion2が出ていたので、続編書きました。 upura.hatenablog.com追記以上 ーーーGoogle Brainが10月16日に公開した、深層のニューラルネットワークの画像分類・機械翻訳タスクでReLUを上回る性能を示したという活性化関数「Swish」をPythonで描…

「日本人クラス」を作って、Pythonのクラスの使い方を復習

Pythonのクラスの使い方を忘れかけていたので、下記ページを参考に「日本人クラス」を作ってみました。www.sejuku.net #!/usr/bin/env python3 # -*- coding: utf-8 -*- class Japanese(): def __init__(self, name, sex, age): self.name = name self.sex =…

カーネル密度推定による分類方法をPythonで可視化

『画像認識』(機械学習プロフェッショナルシリーズ)*1の第5章pp.143-144に載っていた、カーネル密度推定による分類方法を可視化。 data1(青)は0を中心とした正規分布の乱数、data2(黄)は3を中心とした正規分布の乱数。カーネル密度推定により確率密度…

PythonのリストをExcelで開いても文字化けしないcsv形式で書き出す

encodingで'utf-8-sig'を指定する。BOM(Byte order mark)付きのエンコーダである。 with open('output.csv', 'w', encoding='utf-8-sig') as f: writer = csv.writer(f, lineterminator='\n') writer.writerows(output) # output: 書き出したいリスト(多次…

【遊戯王デュエルリンクス】メテブラオートの初期手札で融合できる確率をPythonで計算 最適なデッキレシピの推定

遊戯王デュエルリンクス*1におけるレベル上げ*2などで「メテブラオート」*3を使っていますが、スキル「バランス」*4がないキャラクターだと、少なからず手札事故で融合できないまま敗北することがあります。今回は、ランダムで配布される初期手札で融合でき…