3月中旬に「カラー図解 RaspberryPiで学ぶ機械学習(ブルーバックス)」 が出るらしい。
メモ
Raspberry Pi3で、価格.com の最安値をスクレイピングし、 LINE で通知
価格.com で、HP Spectre x360 の価格を引っこ抜いてきて、LINE へ通知させる。
前半は、BeautifulSoup を使って、価格を部分をスクレイピング。
スクレイピングで、抜き出したい情報を成形しようとヘタな書き方になっているが、とりあえず価格のみを出せた。
後半は、LINE の LINE Notify を使って、価格情報を通知。
LINE Notify
https://notify-bot.line.me/ja/
ログインするには、予めLINEアプリの「設定」で、アカウント>メールアドレス が[登録完了]になっている必要がある。
headersの Bearer の後ろの半角スペースが必要。
通知文は、payloadにまとめてあるが、msg 部分 と スクレイピングしてきた価格部分
IFTTTを使ってみて、連携していくことも考えたい。
前半は、BeautifulSoup を使って、価格を部分をスクレイピング。
スクレイピングで、抜き出したい情報を成形しようとヘタな書き方になっているが、とりあえず価格のみを出せた。
# pull out "price" from 価格.com
from bs4 import BeautifulSoup
import urllib as req
url="http://kakaku.com/item/J0000024058"
res=req.urlopen(url)
soup=BeautifulSoup(res, "html.parser")
price=soup.select_one(".colorprice")
price=price.encode('utf_8')
price=price.split('<span>')
price=price[1].split('</span>')
後半は、LINE の LINE Notify を使って、価格情報を通知。
LINE Notify
https://notify-bot.line.me/ja/
ログインするには、予めLINEアプリの「設定」で、アカウント>メールアドレス が[登録完了]になっている必要がある。
headersの Bearer の後ろの半角スペースが必要。
通知文は、payloadにまとめてあるが、msg 部分 と スクレイピングしてきた価格部分
取り敢えず、これでやりたかったことはできた。今は簡単にできてしまう。# Notification to LINE
import requests
token="XXXXXXXXXXXXXXXXXXXXXXXXX"
url="https://notify-api.line.me/api/notify"
msg="HP Specre x360: "
payload={"message": msg + price[0]}
headers={"Authorization": "Bearer " + token}
line_notify=requests.post(url, headers=headers, params=payload)
IFTTTを使ってみて、連携していくことも考えたい。
Raspberry Pi3で、株価データをスクレイピング、そしてグラフ化
株価をスクレイピングして、グラフ表示する。 いろいろググって、やっと収まった。
プログラムを2つに分けて
(1)データ取得編
Yahoo financeから「安川電機:6506」の2016/4/1-2017/5/1 の株価をGet
(2)グラフ化編
CSVに落としたデータを成形してグラフ化
(1)データ取得編
stockDataGet.py
最初のSSL 2行は、Yahoo Webでの SSLでつまずいたので入れた。
(2)グラフ化編
つぎに、入手した株価データをグラフ化する
プログラムを2つに分けて
(1)データ取得編
Yahoo financeから「安川電機:6506」の2016/4/1-2017/5/1 の株価をGet
(2)グラフ化編
CSVに落としたデータを成形してグラフ化
(1)データ取得編
stockDataGet.py
最初のSSL 2行は、Yahoo Webでの SSLでつまずいたので入れた。
# -*- coding: utf-8 -*-import sslssl._create_default_https_context = ssl._create_unverified_context
from bs4 import BeautifulSoupimport urllib2import timeimport numpy as npimport pandas as pd
page_num = 90 #適当に多めのページ数stock_temp = []
# Code# 6506.T : yasukawa
for i in range(page_num): url = "https://info.finance.yahoo.co.jp/history/?code=6506.T&sy=2016&sm=4&sd=1&ey=2017&em=5&ed=1&tm=d&p=" + str(i+1)
html = urllib2.urlopen(url) soup = BeautifulSoup(html,"lxml")
table = soup.find_all("table",{"class":"boardFin yjSt marB6"})[0] stock_extract = [value.get_text() for value in table.find_all("td")] stock_temp.extend(stock_extract)
time.sleep(0.4)
stock_temp = np.array(stock_temp)
stock = stock_temp.reshape(int(len(stock_temp)/7), 7) #取得データは7項目stock = pd.DataFrame(stock[:,1:8],index=stock[:,0])#stock = pd.DataFrame(stock[:,1:8],columns=["date","start","high","low","end","volumns","adjusted"], index=stock[:,0])
# 取得した株価データのカンマ , を外す作業。ほんとに必要?
for i in range(6): stock.ix[:,i] = stock.ix[:,i].astype(str) stock.ix[:,i] = stock.ix[:,i].str.replace(",","").astype(float)
# Save to csv file.stock.to_csv('stock_yasukawa.csv',encoding='UTF-8')
(2)グラフ化編
つぎに、入手した株価データをグラフ化する
stockAnalyse.py
# -*- coding: utf-8 -*-
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import matplotlib.finance as mpf
from matplotlib.dates import date2num
fig = plt.figure()ax = plt.subplot()
# indexとして使う日付を、matplotlib.finance.candlestick_ohlc関数で使えるようにtype変換する
# 日本語がなければ、pandas.read_csv の parse_dates で変換できたそうだ。
# Japanese date (string) -> Timestamp datefmt='%Y年%m月%d日'my_parser=lambda date: pd.datetime.strptime(date,fmt)df=pd.read_csv('stock_yasukawa.csv',index_col=0,parse_dates=0,date_parser=my_parser)df=df.sort_index(ascending=True)
# mpf.candlestick_ohlc use "datetime"xdate = [x.date() for x in df.index] # Timestamp -> datetimeohlc = np.vstack((date2num(xdate),df.values.T)).Tmpf.candlestick_ohlc(ax,ohlc,width=0.7,colorup='g',colordown='r')
ax.grid()ax.set_xlim(df.index[0].date(),df.index[-1].date()) # range of X-axisfig.autofmt_xdate()
RaspberryPi3 をファイルサーバ(samba)に
Raspberry Pi3 で、NHKラジオ英語を定期的に録音して、ノートPC(Windows10)から聞く方法の備忘録。
RaspberryPi3
sambaをインストールして、とりあえず設定を。
printerは使わないので、[global] に printing = bsd を入れる(?)
共有するフォルダ [/home/pi/REC] は、Windwos で [homes] で見える
piアカウントで、sambaにアクセスするために。
cronに入れる シェルプログラムは以下からもらってきた。
らじるらじるをrtmpdumpで録音する(8放送局対応)おまけで
https://gist.github.com/riocampos/5656450
crontab 設定。いつも迷う。
項目は、左から「分」「時」「日」「月」「曜日」
ノートPC
エクスプローラ > PC で右クリック > ネットワークドライブの割り当て
ドライブ():Z:
フォルダー:\\RASPBERRYPI\homes
□ 別の資格情報を使用して接続する ←チェックする
これでノートPC側から Raspberrypi3側に保存してある mp3 ファイルが聞ける。
RaspberryPi3
sambaをインストールして、とりあえず設定を。
printerは使わないので、[global] に printing = bsd を入れる(?)
共有するフォルダ [/home/pi/REC] は、Windwos で [homes] で見える
最後の touch は、/var/log/samba/log.smbd にエラー吐いたので。$ sudo apt-get update
$ sudo apt-get upgrade
$ sudo apt-get install samba
$ cd /etc/samba
$ sudo cp smb.conf smb.conf_org
$ sudo vi smb.conf
[global]
printing = bsd
[homes]
browseable = yes
path = /home/pi/REC
read only = no
create mask = 0664
directory mask = 0775
$ sudo touch /etc/printcap
piアカウントで、sambaにアクセスするために。
$ sudo smbpasswd -a pi
New SMB password: ←RaspPi3の pi アカウントのパスワードを。
Retype new SMB password:
Added user pi.
cronに入れる シェルプログラムは以下からもらってきた。
らじるらじるをrtmpdumpで録音する(8放送局対応)おまけで
https://gist.github.com/riocampos/5656450
crontab 設定。いつも迷う。
項目は、左から「分」「時」「日」「月」「曜日」
$ crontab -e
:
10 09 * * 1,2,3,4,5 ~/bin/rec_nhk.sh NHK2 5 ~/REC enjoy_english
30 16 * * 7 ~/bin/rec_nhk.sh NHK2 75 ~/REC conversation
ノートPC
エクスプローラ > PC で右クリック > ネットワークドライブの割り当て
ドライブ():Z:
フォルダー:\\RASPBERRYPI\homes
□ 別の資格情報を使用して接続する ←チェックする
これでノートPC側から Raspberrypi3側に保存してある mp3 ファイルが聞ける。
Amazon Go の仕組みを知るには
Amazonが、2014年に出願した特許がそのヒントになる。
特許 US 20150012396 A1
Transitioning items from a materials handling facility
特許 US 20150012396 A1
Transitioning items from a materials handling facility
Tensorflow インストール
Ubuntu(Vmplayer 上の GuestOS) に Tensorflowを入れてみる。
$ uname -a
Linux ubuntu 3.13.0-24-generic #47-Ubuntu SMP Fri May 2 23:30:00 UTC 2014 x86_64 x86_64 x86_64 GNU/Linux
$
# $ python —version
Python 2.7.6
# virtualenv による環境準備
$ pip install virtualenv ← エラーになった
Could not find any downloads that satisfy the requirement vertualenv
$sudo apt-get install python-virtualenv
$ mkdir ~/tensorflow
$ virtualenv -—system-site-packages ~/tensorflow
$ cd ~/tensorflow
$ source bin/activate
# TensorFlowのインストール
(tensorflow)$ sudo pip install --upgrade https://storage.googleapis.com/tensorflow/linux/cpu/tensorflow-0.8.0-cp27-none-linux_x86_64.whl
# お約束の Hello world! を
(tensorflow)$ python
Python 2.7.6 (default, Jun 22 2015, 17:58:13)
[GCC 4.8.2] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>>
>>> import tensorflow as tf
>>> hello=tf.constant('Hello, Tensorflow!')
>>> sess=tf.Session()
>>> print sess.run(hello)
Hello, Tensorflow!
>>> a=tf.constant(5)
>>> b=tf.constant(17)
>>> print sess.run(a+b)
22
>>>
Codecademy で Python プログラミングを学ぶ
ずいぶんと間があいてしまった。
そもそも自分にプログラミング能力が無いことを反省し、基本的なことを勉強しようと思った。
今の時代、ネットで、しかも無料でできる。
Codecademy では、いくつかのプログラム言語を Web画面上でプログラム演習を進めていくことで順序だてて学習できる。
https://www.codecademy.com/
このサイトの Python を勉強している。いまのところ 80%まで進んでいる。
そもそも自分にプログラミング能力が無いことを反省し、基本的なことを勉強しようと思った。
今の時代、ネットで、しかも無料でできる。
Codecademy では、いくつかのプログラム言語を Web画面上でプログラム演習を進めていくことで順序だてて学習できる。
https://www.codecademy.com/
このサイトの Python を勉強している。いまのところ 80%まで進んでいる。