北野坂備忘録

主にインストールやプログラミングのメモを載せています。

CentOS上のEclipseにプラグインを一気にインストールしようとして失敗

 CentOS6.7のEclipse(Helios)に下記の3プラグインを一気にインストールしようとするがエラーを起こして止まる。

・Marketplace Client
Eclipse Java EE Developer Tools
Eclipse Web Development Tools

"インストール・ダウンロード2" 中に内部エラーが発生しました。
Comparison method violates its general contract!

インストールする項目の収集中にエラーが発生しました
セッション・コンテキスト:(プロファイル=PlatformProfile、フェーズ=org.eclipse.equinox.internal.p2.engine.phases.Collect、オペランド=、アクション=)。
アーティファクトのダウンロード中に問題が発生しました: osgi.bundle,org.eclipse.wst.command.env,1.0.409.v201004211805.
MD5 ハッシュは期待されたものではありません。期待: 84614d6c0969a44318eecdc5f0dc313e で 790c9c5660db33a19040b7bafd284cc3 を検出。

 何度も失敗するので原因を調べようと、
1.Eclipse Java EE Developer Tools
2.Eclipse Web Development Tools
3.Marketplace Client

 の順に一つずつインストールすると……
 正常に終了しやがった!

 なんでさ なんでさ ななななんでさ
(士郎ラップ)

【結論】
 Eclipseプラグインのインストールは個別に行うこと。

python3.5をpython3のデフォルト設定にしたらUbuntuで「端末」が起動しなくなった件

 ぐへえ、という感じ。

 Ubuntu15.04で、apt-getでpython3.5をインストールしたのち、python3.5をpython3のデフォルトに設定しました。

cd /usr/bin
sudo rm python3
sudo ln -s python3.5 python3

 再起動したら「端末」が起動しない!?
 Launcherを押しても、アプリケーションから呼び出しても、ショートカットを押しても起動しない。
 慌てず騒がず Ctrl+Alt+F1キー でコンソールモードに移行してターミナルを起動。
 何が起きているのか追いかけていきます。

DISPLAY=:0.0 gnome-terminal

 したらエラーが出て、

Traceback (most recent call Last):
  File "/usr/bin/gnome-terminal", line 9, in <module>
    from gi.repository import Glib, Gio
  File "/usr/lib/python3/dist-packages/gi/__init__.py", line 42, in <module>
    from . import _gi
ImportError: cannot import name '_gi'

 は? と思って/usr/bin/gnome-terminalを見に行ったら一行目が

#!/usr/bin/python3

 お前python3のスクリプトなんかい!
 だいたいオチが見えてきたので、python3のデフォルトをpython3.4に戻します。

cd /usr/bin
sudo rm python3
sudo ln -s python3.4 python3

 再起動したら「端末」が起動するようになりました。
 一連のスクリプトがPython3.4用に作られていて、Python3.5では動かないものと思われます。UbuntuでPython3がこんなにシステムに密着しているとは思いませんでした。

 調べてみたらaskubuntuに同じネタが載ってた。
terminal won't launch after install python 3.5
askubuntu.com
 いやー焦りました。
 じゃけんUbuntuでpython3.5使いたいときはanacondaで仮想環境使いましょうね~。

gensimのshow_topicsオプション(メモ)

Python用のトピックモデルライブラリgensimのshow_topicsメソッド内で用いられるオプションについて。

昔はこうだった

lda.show_topics(topics=10, topn=10):

今はこう

lda.show_topics(num_topics=10, num_words=10)

 いま上のように書くと「そんなオプションは知らん!」とすげなくされる。

MeCabのparseToNodeのひどいバグ

 pythonからMeCabのparseToNodeを使うと表層形(surface)がおかしい。printでも出てこないし型の判別すらできない。
 頭を抱えながらpython-mecabの再インストールなどさんざんやってからこちらのサイトにたどりつく。
www.trifields.jp
(以下引用)

MeCabのバージョン0.996で、この方法によりPython3からMeCabのparseToNode関数を使うと、最初のsurface(表層形)が表示されないというバグがある。
(中略)
このバグの最も簡単な回避策は、parseToNode関数を呼び出す前に、一度、parse関数を呼び出すことで回避することができる。

 なんじゃそりゃあ! という感じですがなんとか動きだしました。ありがとうございます。

『Python機械学習プログラミング』


Python機械学習プログラミング 達人データサイエンティストによる理論と実践 (impress top gear)

 なにかこう「一面コードだらけ」という本かなーと想像していたんですが、理論や描画の話も多く前処理にも章を割いています。本のアオリに「絶妙なバランスで『理論と実践』を展開」と書いてありますが偽りナシです。
 しかしscikit-learnを使い始めるとコードがRと似てきますね。numpy.cov()とかnumpy.dot()とかも機械学習やってなかったら一生使わなかったと思います。
 内容としてはパーセプトロンから始まってニューラルネットワークのTheano, Kerasで終わるというふうに幅広い技術をカバーしています。特にTheano, Kerasを扱っているのが今風ですね。これはもう立派な教科書です。とりあえずコイツを使ってコードを書かせて、理論面は他の教科書でもう少し勉強する、と。写経するだけでもかなりレベルアップできるでしょう。
 「今からこの本で機械学習を勉強する」というひとはかなりお得ですね。名著だと思います。

「下丸子のコネクショニスト」さんの「CaffeでMNISTを学習した経過をプロットしてみた」を試す

「下丸子のコネクショニスト」さんの


iamrobotandproud.hatenablog.com
を試す。

 なにかおかしいと思ったら、

事前に用意されたプログラムに誤植があるため、下記のように訂正した。

plot_log.gnuplot.exampleの42, 43行目を

set xlabel "Training loss"
set ylabel "Training iterations"

から

set ylabel "Training loss"
set xlabel "Training iterations"

に変更した。

 の部分がすでに修正されていました。

 あと、

実は、parse_log.shは現行バージョンのCaffeが出力するログ形式に完全に対応している訳ではなく、mnist.log.testにIterationのデータが出力されていない。

そこで今回は仕方なく、テスト時のプロットには学習時間を横軸に用いることにした。

 の部分も今ではIterationのデータが出力されているので話が合わない。

 ので、末尾に追加する部分を以下のように変更しました。

# Test accuracy vs. training time
set ylabel "Test accuracy"
set xlabel "Iteration"
plot "mnist.log.test" using 1:3 title "mnist"

 ありがとうございました。大変参考になりました。