せつめい
この記事は常にトップに表示されます。
主に次のようなことについて書いています
- ハンドメイド
- プログラミング
- 育児
Pythonでスクレイピング
Pythonによるスクレイピング&機械学習 開発テクニック BeautifulSoup,scikit-learn,TensorFlowを使ってみよう
- 作者: クジラ飛行机
- 出版社/メーカー: ソシム
- 発売日: 2016/12/06
- メディア: 単行本
- この商品を含むブログ (4件) を見る
これで、画像の収集をやってみる。
第7章で、牛丼画像を、フォト蔵からスクレイピングする例があるので収集。
はまったところ
import ssl
ssl._create_default_https_context = ssl._create_unverified_context
- マルチバイト文字エラー
- このおまじないが必要らしい。
続・Selenium Grid設定メモ
どうも、LINUX上のFirefoxはうまくいかない、というコメントがいくつかあるみたいなので環境を変えてみる
- node
- hub
- Mac OS X (前回と同じ)
nodeの立ち上げ
java -jar selenium-server-standalone-2.48.2.jar -role node -hub http://192.168.0.1x:4444/grid/register -Dwebdriver.chrome.driver=.\chromedriver.exe
hubがちゃんと認識してるっぽい
Registered a node http://192.168.0.xx:5555
macからテストスクリプトを実行(Windows, Chromeを指定)
→実行された!
環境確認用のアドレスにアクセスした時に、下記のアドレスにでる画面で、
Linuxの環境は「failed: Operation timed out」って画面にでるんだよなあ
なんかうまく登録できていなかったということかな。
まあLINUXでブラウザバリエーションテストなんかしないからいいか、、、、^^;
Selenium Grid 設定メモ
ホスト:MacBook Air (w/z FireFox 44)
ゲスト:Oracle LINUX (w/z FireFox 17)
ゲストOSのネットワークをブリッジ接続とする。
(NATだと、ホストと繋がらないらしい)
ホスト側のhub立ち上げ
ホスト側の、node.jsonの設定
{
"capabilities":
[
{
"platform": "MAC",
"browserName": "firefox",
"maxInstances": 2,
"version": "44.0",
"seleniumProtocol": "WebDriver"
}
],
"configuration":
{
"hub": "http://localhost:4444/grid/register"
}
}
~
ホスト側の、nodeの起動
java -jar selenium-server-standalone-2.53.0.jar -role node -hub http://localhost:4444/grid/register -nodeConfig node.json
この状態で、
DesiredCapabilities capability = DesiredCapabilities.chrome();
capability.setBrowserName("firefox");
capability.setPlatform(org.openqa.selenium.Platform.MAC);
capability.setVersion("44.0");
driver = new RemoteWebDriver(new URL("http://192.168.9x.1:5555/wd/hub"), capability);driver.get("http://www.google.com");
とりあえずGoogle先生を開くことができた
つぎに、VirtualBoxの中
調べてでてくる書き方では常に、下記のエラー
Caused by: org.openqa.grid.common.exception.GridException: Error forwarding the new session Error forwarding the request Connect to 192.168.12x.1:5555
configurationを少しいじってみる
{
"capabilities":
[
{
"browserName": "firefox",
"maxInstances": 1,
"version": "17.0",
"seleniumProtocol": "WebDriver"
}
],
"configuration":
{
"hub": "http://192.168.0.1x:4444/grid/register", //hubのURL
"remoteHost": "http://192.168.0.2x:5558",
"url": "http://192.168.0.2x:5558",
"host": "http://192.168.0.2x"
}
}
この動画*1を参考に、
設定を真似みたら、
org.openqa.selenium.remote.UnreachableBrowserException: Could not start a new session. Possible causes are invalid address of the remote server or browser start-up failure.
どうやら届いたようだ。ちょっと進化した感じ。
つぎはゲストOSの中にブラウザパスを設定してみる予定。
Developer Summit 2016で感銘を受けた、 Mikasaをインストールしてみる
- まあ無理だったんだけれども、、、、
- さくさく書いてある通りにインストール
- 実行した時に、次のようなエラーが出る。
replicated to only 0 peer(s) instead of 1 peers
ググってみたら、こんな記述が。
The warning in your case means that incoming data from stream are not replicated at all. The reason for that may be that you run the app with just one instance of Spark worker or running in local mode. Try to start more Spark workers and see if the warning is gone.
ワーカーノードをもっと作って、ということらしい。
「EC2へのSpark導入とiPython Notebookの連携」ではまったところをメモ
EC2へのSpark導入とiPythonNotebookの連携
- python3ではwithあたりでアラートが出た(virtualenvで、source bin/activateしてから実行できた)
- keyファイルの位置をパスで書けない ( ~/xxxx.pemに置いていたけど、コマンドを打つファイルの直下に移動)
- ユーザを作ったリージョンを間違えた( us-eastに作ったのに、コマンド通りのus-westで実行してしまった)
↓これが良さそう
http://qiita.com/grgrjnjn/items/8ca33b64ea0406e12938
- 起動したけどアクセス不可となったが、セキュリティグループでポートを解放すればできた。
タイタニックをネタにRの使い方を学ぶ(その3)
判別分析をしてみます。
数値型に変える必要があるようですので型変換をします。
titanic$Sex <- ifelse(titanic$Sex=="male", "0",titanic$Sex)
おっと、この指定だとcharacter型のようでした
> mode(data3$Sex)
charactor
型変換はこうやってするようです。
titanic$Sex = as.numeric(titanic$Sex)
ほかにも、Sex="female", Embarked列も変換しています。
もともと数値でデータが入っていたら変換する必要はなさそう。
あと、NA列があるとダメなようですので排除します。
data_rm_na <- na.omit(data)
判別分析のコマンドはこれ
rlt1_1 <- lda(data, grouping)
data ・・・・・もとのデータから、判別元としたいデータを抜き出す
grouping ・・・もとのデータから、判別結果を抜き出す
加工したデータから、dataとgroupingを作ります。
grouping <- as.matrix(subset(titanic_rm_na, Survived == 0 | Survived == 1, select=1))
data <- subset(titanic, Survived == 0 | Survived ==1, select=c(3,5:8,10,12))
転置が必要のようです。
t(grouping)
やっとデータができたので判別分析
>rlt1-1 <- lda(data, grouping)
>rlt1_2 <-predict(rlt1_1)
> head(rlt1_2$x, 3)
LD1
1 -1.2909017
2 2.1018931
3 0.8351778> head(rlt1_2$posterior, 3)
0 1
1 0.94216346 0.05783654
2 0.05411463 0.94588537
3 0.32060872 0.67939128> head(rlt1_2$class, 3)
[1] 0 1 1
Levels: 0 1
どのくらい正確に判別できるんだろうか、、、、
> table(grouping2, rlt1_2$class)
grouping2 0 1
0 363 61
1 84 206
> (61+84)*100/(363+206+61+84)
[1] 20.30812
20%くらい間違ってる
テスト用のデータではやっていないけど、訓練用データでこの正確さだと、
決定木の76%とどっちが勝つんだろう、、、、
テスト用のデータにもNA値はあるし、、、、
判別に使う変数を変えてみるとまた違うかもしれませんね。