スパムコメントがやってきた
こんな辺境の弱小ブログにまでちょっかい出してくるなんて、きっと無差別攻撃なんだろうな。
公式が頑張ってる
大事なこととして、公式が問題を認識しているという事です。がんばれ公式、超がんばれ。
何が書いてある?
書いてあるコメントが一個一個違うので、思ったよりも凝った作りでスパムコメントを投下する仕組みだと推測できる。こちらがサンプル。
With thanks! Quite a lot of write ups! cialis 5 mg schweiz il cialis quanto costa side effects for cialis http://XXXXXXXXXXX.com viagra vs cialis cialis 5 mg schweiz order a sample of cialis
まずは一行目は英語で「お前の記事良かったよ」的な事が書いてある。ここまではわかる。そしてそのあとに謎のURLを出してきてサイトに誘導するというのが手口。気になるのはこの後で、よくみると英語には見えない文字列が出てくる。例えば「schweiz 」これドイツ語で「スイス」。英語ではない。でも文節を見ると「 il cialis quanto costa」とか書いてあってイタリア語にも見えてくる。
他のスパムを使ってGoogle翻訳にかけるとギリシャ語判定されたりするのでいろいろな言語で書いてフックを作ってるんだろうなと、やはり手の込んだ仕組みだなと推測できる。けどこんな西欧の言語を複数持ち出したところで、こんな東洋のリージョンでは全く引っかからない。なのでどうせなら日本語も混ぜてほしいところ。
その暁には変な日本語になっているのを期待してる。
リンク先は
コメント文中にもバイアグラと書いてあるので見なくても分かるといえばわかるのですが、リンクを踏んだ勇者の報告によるとやはりその通販サイトという事でした。いい事無いと思いますので踏まないことをお勧めします。
対策は
公式が言っている通りコメントを承認制にしたりとか提案されています。こういうのはどうやっても相手のほうが一枚上なので、それぞれが思うとおりにやったらいいと思います。ここではノーガード戦法で通します。面倒なので、公式に頑張ってもらうスタイルです。
第52回スーパーボウル!
2月の頭ってあいついつも休むよな。そんな奴がいたらそいつはアメフトファンに違いない。そう!年に一度のお祭り!SuperBowlの日なんです!
ペイトリオッツVSイーグルス
今回の対戦はニューイングランド・ペイトリオッツ対フィラデルフィア・イーグルス。去年のSuperBowlで大逆転劇を見せたレジェンドQB、トムブレイディ率いるペイトリオッツは連覇を狙う。対してイーグルスはエースQBカーソンウェンツがシーズン終盤に故障し、控えのQBニックフォールズが先発で投げる事に。レジェンドQB対サブQBという、設定だけでも映画になりそうなカード。
トムブレイディの昔からのファンであることもそうだが、前回大会の大逆転劇もあって今回はペイトリオッツを応援することにした。ちょっと前にマクナブっていう俊足・強肩のQBがいて、そのマクナブ率いるイーグルスは好きだったのだが、悪いけどあまり今のチームには思い入れはないんですよね。
SuperBowlは両チームに対して中立的な場所で行われる為、今回はミネソタ・ヴァイキングスのホームで行われた。だがなぜがイーグルスファンが多く、ペイトリオッツにはブーイングの嵐が巻き起こる。トムブレイディへのリスペクトの裏返しなのか、入場から、キックオフから、何かとクラウドノイズが巻き起こる。繰り返すがここはイーグルスのホームではなくヴァイキングスのホームなのだ。
P!NKが国歌斉唱を行い、さあキックオフ!
前半戦
前半から両チームともに獲得ヤードをかなり取りながら殴り合いのゲームの様相だ。ディフェンスが機能していないのか、はたまたQBや戦術がすごいのか。見る分としては面白い、ハイスコアゲームが期待される展開となる。
そして、今回の試合の行く末を表すかのようなプレイが2Q終盤あたりに登場する。初めに動いたのはペイトリオッツ。QBをレシーバーにするというスペシャルプレイをかますがそのブレイディがキャッチ失敗。そしてその数プレイ後。今度はイーグルスのスペシャルプレイ。こうやるんだとばかりにQBのニックフォールズがレシーバーとなるスペシャルプレイを見せつけ、しかもそそのままタッチダウン!スペシャルプレイで裏をかこうとしたペイトリオッツに対して、イーグルスにスペシャルプレイで返された格好だ。試合を見てるうちそのリプレイが何度も繰り返される。
前半終了時点でイーグルス22-12ペイトリオッツ。去年の大逆転劇を知るペイトリオッツファンとしてはブレイディのマジックにいやでも期待してしまう。
ハーフタイムショー
SuperBowlのお楽しみといえばハーフタイムショー。これをリアルタイムで見るだけでも価値がある。今年はどうか?、、、おいおい、ジャスティン・ティンバーレイクって前にジャネットとやらかした野郎じゃないか!出演オファーが出るなんて、もう彼は許されたのか?と思いながら見ていたが、そういえばあの時のSuperBowlもペイトリオッツでQBはブレイディだったなと、改めてすごい選手だと感じる。というかこの事件自体、もう14年も前の話なのね。
後半戦
で、出たー!ペイトリオッツのQBブレイディーTEロブ・グロウコンスキーのゴールデンコンビによって一気にタッチダウンを取る。ドライブ自体も2分ちょっとと、なんでこんなに簡単に、、、とため息が漏れる。TEにこんだけ仕事をされたらWRもこのままでいいわけないよな!たのんだぞ!奮起したペイトリオッツのWR陣。WRアメンドーラが走り回りブレイディが続々とヒット。今回は両チームとにかくパスが出るし成功する。
3Q終了時点でイーグルス29ー26ペイトリオッツ。後半に入りじわじわと追い詰めてきたペイトリオッツは4Qで初めて逆転に成功。TDを決めたのはもちろんこの男。TEグロウコンスキ。頼りになるぜ!ということでこの時点でイーグルス32ー33ペイトリオッツ。これはキタ!さっすがブレイディ!奇跡は何度でも起きるんだよ!起こすんだよ!
このあたりでイーグルスQBニックフォールズもだんだんパスが定まらなくなるように見えてきたと思っていたら、元ペイトリオッツ現イーグルスのRBブラントがインサイドにアウトサイドにスルスルとペイトリオッツ陣営に入っていき、気が付いたらレッドゾーンへ。やはりパスが定まらないなんて事はなく、そのままパスプレイでタッチダウン。2PCを狙ったが失敗し、この時点でイーグルス38-33ペイトリオッツ。残り2分。1タッチダウンで勝負は決まる!ブレイディ・グロウコンスキのホットラインを使えば2分なんて長いくらいだ!!攻撃を始めるペイトリオッツ。もう一度夢を見させてくれ!
、、、ここでブレイディ、痛恨のQBサック。
ただのサックにとどまらずファンブルも犯してしまい、リカバーはイーグルス。ターンオーバー。その後のドライブでイーグルスはダメ押しのFGを決めてイーグルス41-33ペイトリオッツ。その瞬間ブレイディはベンチで大きくうなだれる。だが、彼らの目は死んでおらず、次の攻撃へ移る。残り時間1分。アメンドーラ、グロウコンスキとパスを投げるがあえなく時間切れ。イーグルスがSuperBowl制覇を決めた。
感想
スタッツはコチラ
2018-02-05 イーグルス vs ペイトリオッツ | NFL JAPAN.COM
両チーム合わせて1151ヤード、しかも獲得ヤード数で言えばペイトリオッツのほうが613ヤードと75ヤードも上回っている。そう、獲得ヤードで上回っているのにペイトリオッツは負けたのだ。そしてサック数。最後の最後のただの一回だ。パントも一回とまさに殴り合いと呼ぶにふさわしい試合だったといえる。
この試合ではWRアメンドーラがパスターゲットとなったが、俺たちは前回のSuperBowl制覇の立役者、エデルマンを知っている。だが、彼は故障してこの試合には出ていなかった。勝負事にタラ・レバを言ってしまってはダメなのはわかっているが、やはりこの舞台でエデルマンが見たかった。
レジェンドQBとシンデレラQB。この両者の対決はシンデレラに軍配が上がった。ロモが去り、兄ングも去り、キャムニュートンといった新しい時代のQBが台頭していく。一つの時代が終わり新しい時代になっていくのだろうかというのを感じさせるSuperBowlだったと思います。
今年も面白かった!来年も仕事さぼって見よう!
irisをMetabaseしてみる
irisをMetabaseでも愛でる
irisの準備
データベースの準備はちょっと前にやったやつを
データソースの設定
MetabaseAdminからデータソースを追加する。管理画面から「Add a database」をクリックして追加画面を表示する。
DBによって設定する内容が異なるが、MySQLの場合はデータベース名、ホスト、ポート、ユーザ、パスワードを設定したらよい。
無事にデータベースが登録されたのでExitAdmin
irisを可視化
それではデータを確認
いいぞ!
いいセンスだ!
えっ!?
どうも散布図が納得のいかない出来となりました。品種ごとに見分けたいので、数値を勝手につけてプロットしてみたが、付け焼刃なのでやっぱり納得はいかないし、やっぱり見にくい。今後の開発に期待するというよりも、まぁこんなものかなと割り切るのがいいのかと思う。
欲しかったもの
できたもの
分析がしたいのなら餅は餅屋です。これは分析ツールではなく可視化ツールです。
まとめ
総じて簡単にここまで表現できるのは良いツールだと思うので、ちょっとした進捗とか、確認しておきたいデータとかはこれで表現するのはアリですね。
Metabaseを触ってみる
乗るしかない!この(略
準備編
基本的には公式を見ながらやれば間違いない。公式にはDocker形式のものとjarを動かすだけとあとはAWSとかのクラウドで動かす方法が説明されている。今回はjarを動かすだけのヤツで試してみることにした。
javaの環境が無ければインストール
sudo apt install openjdk-8-jsk
- 本体
ここからmetabase.jarを落としてくる
- DataBase
管理用にデータベースが必要になるだが、今回はMySQLでやることにした。デフォルトはH2になる。MySqlコンソールに入ってデータベースを作成する。
mysql> create database metabase default character set utf8;
これでひとまず準備は完了。起動編へ
起動編
- 実行
早速実行したいところだが、管理用のDBがMySQLだと教えるために、起動用のスクリプトファイルを作成する事にした。MySQL以外のDBでも公式にはやり方は書いてある。
#!/bin/bash export MB_DB_TYPE=mysql export MB_DB_DBNAME=metabase export MB_DB_PORT=3306 export MB_DB_USER=youruser export MB_DB_PASS=yourpassword export MB_DB_HOST=localhost java -jar metabase.jar
で、作ったスクリプトファイルを実行すると、コンソールがダラララララと動いて、MySQLにテーブルを作りながらセットアップをやってくれる。
Please use the following url to setup your Metabase installation: http://localhost:3000/setup/
最後にこんな感じのメッセージが出るので、指示通りブラウザから http://localhost:3000/setup/へとアクセス。続いて設定編へ
設定編
ブラウザからリンクにアクセスすると初回時はこのような画面となる
管理者アカウントの設定、DBリソースの設定と簡単な項目の設定を済ませる。特に難しいことはないので、管理者設定を終わらせて続いて実行編へ
ExitAdminを押してユーザ画面へ行く
実行編
特に問題なければこのように表示されているはずだ
他のBIツールと同様に、クエリを作成してダッシュボードに乗っける。というのが基本的な流れだ。
- New Question
データソースに対して、クエリ(Question)を作成する。メイン作業場になるかと。
- Dashboards
作成したQuestionを複数配置して確認できるボードを一覧、編集ができる。
- Questions
保存したQuestionを一覧して確認。編集とかできる。
- Data Reference
利用可能なデータソースの確認。テーブル定義とか確認できる。
- Pulses
Slack連携とかメール連携とか通知系の機能。調べてない。
あとはチュートリアルが公式にあるので、そこを見てやってみたら軽く感覚はつかめる。ちなみにサンプルのデータソースは管理DB作成時に自動的に作成されている。
これでひとまずMetabaseを動かすことができた。
irisをMySQLで使えるようにする
とにかくirisが好きなんや
DDLとLOAD
- テーブル作成
CREATE TABLE iris ( id int AUTO_INCREMENT PRIMARY KEY, sepal_length FLOAT(3), sepal_width FLOAT(3), petal_length FLOAT(3), petal_width FLOAT(3), species VARCHAR(20) );
- データロード
と、その前にデータインポート用のディレクトリを確認して、そこにファイルを移動
変数の確認
mysql> show variables like 'secure_file%'; +------------------+--------------------------+ |Variable_name |Value | +------------------+--------------------------+ |secure_file_priv |/var/lib/mysql-files/ | +------------------+--------------------------+
ファイルの移動
$ sudo cp iris.csv /var/lib/mysql-files/
データロード
LOAD DATA INFILE '/var/lib/mysql-files/iris.csv' INTO TABLE iris FIELDS TERMINATED BY ',' ENCLOSED BY '"' LINES TERMINATED BY '\r\n' IGNORE 1 LINES (sepal_length, sepal_width, petal_length, petal_width, species);
これで無事俺たちのirisが登録されたので、思う存分に愛でる事ができるようになった。
seabornを使うと凡例が見づらくなる
ということでplotsする際のテクニックを軽く
凡例を描画する際に一言二言加える
seabornをmatplotlibと併せて使っているわけだが、凡例を描画すると背景に消えてしまう事がある。今回はそれを解決した。
まずはデータの準備。適当に連続した数字を。
x = np.arange(0, 10, 0.1) y1 = np.arange(0, 10, 0.1) y2 = np.arange(10, 0, -0.1)
これをseabornを使わずに描画
import matplotlib.pyplot as plt plt.plot(x, y1, label="legend_1") plt.plot(x, y2, linestyle="--", label="legend_2") plt.legend(loc="best") plt.show()
こうなる。凡例が見やすい。
seabornを使うと、、、
import matplotlib.pyplot as plt import seaborn as sns plt.plot(x, y1, label="legend_1") plt.plot(x, y2, linestyle="--", label="legend_2") plt.legend(loc="best") plt.show()
凡例が見にくい(個人差はあります)。
ということでlegendの指定にちょっと書き加える。
import matplotlib.pyplot as plt import seaborn as sns plt.plot(x, y1, label="legend_1") plt.plot(x, y2, linestyle="--", label="legend_2") plt.legend(loc="best", frameon=True, edgecolor="blue") plt.show()
こうなる。ちょっと見やすくなる(個人差はあります)。
だいたいは
plt.legend(frameon=True)
こうするだけでだいぶ見やすくなるわけだが、個人的には枠線があると見やすいと思うので、枠線の色も加えた。
他にもオプションがあるので、リンク先のAPIを参考に。
legend and legend_handler — Matplotlib 2.1.1 documentation
seabornは奥が深い
コード
pandasデータフレームをsklearnにぶち込む作法
せっかくirisがデータフレームで使えるようになったのに!!
pandasからnp.arrayにする
sklearnの引数はnp.arrayとなっているので、pandasのデータフレームからは直接使えない。ということでデータフレームからnp.arrayにする必要がある。
- 指定の列からnp.arrayに変換
df = sns.load_dataset('iris') data = np.array(df.iloc[:, 0:4]) #4列目までをnp.arrayにする
- 文字列の列を数値に変換しながらnp.arrayにする
target = np.array([0 if i == 'setosa' else 1 if i == 'versicolor' else 2 for i in data.species.values])
これでsklearnの分類器に渡せる
clf.fit(data, target)
思ったよりも簡潔なコードだけど、データフレームから直接使いたいというのが正直なところ