超☆非効率的に線形回帰

 

今夜はクリスマスということなので、i-control(プレートリーダー)を使って得たデータの線形回帰分析用のpython スクリプトをアップしようと思う。

↓生データ

Screenshot 2016-12-24 14.05.36.png

↓スクリプト

Screenshot 2016-12-24 14.06.06.png

Santaclaus is coming to town(脅迫状)

工夫したらもっと良くなると思う。

あと、線形回帰程度ならtensorflow使わないほうが効率的。

Advertisements

ML using Tensorflow supported by keras(MNIST)

In [1]: import tensorflow as tf

In [2]: from keras.layers import Dropout
Using TensorFlow backend.

In [3]: from keras import backend as K

In [4]: from keras.layers import Dense

In [5]: from keras.objectives import categorical_crossentropy

In [6]: from tensorflow.examples.tutorials.mnist import input_data

まずは名前空間に必要なモジュールを例のごとくインポートしていく。

In [7]: sess = tf.Session()

In [8]: K.set_session(sess)

tensorflowのセッションスタート、さらにkerasにおいてもセッションを開始する。

In [9]: img = tf.placeholder(tf.float32,shape=(None,784))

In [10]: labels = tf.placeholder(tf.float32, shape=(None, 10))

続いて画像データ・ラベルを格納するためのプレースホルダを設定し

In [11]: x = Dense(128, activation=’relu’)(img)

In [12]: x = Dropout(0.5)(x)

In [13]: x = Dense(128, activation=’relu’)(x)

In [14]: x = Dropout(0.5)(x)

In [15]: preds = Dense(10, activation=’softmax’)(x)

kerasにより、中間層の活性化関数がrelu,出力層直前の活性化関数がsoftmax関数である多層CNNを構築する。

In [16]: loss = tf.reduce_mean(categorical_crossentropy(labels, preds))

トレーニングセットのラベルと、CNNが出力する判定結果との交差エントロピーの誤差関数を定義し、

In [17]: mnist_data = input_data.read_data_sets(‘MNIST_data’, one_hot=True)

MNISTのデータセットをone hotベクトル形式でダウンロードする。

In [18]: train_step = tf.train.GradientDescentOptimizer(0.5).minimize(loss) 

ついで最急降下法によって定義した誤差関数を最適化し、

In [19]: with sess.as_default():
….: for i in range(100):
….: batch = mnist_data.train.next_batch(50)
….: train_step.run(feed_dict={img: batch[0],
….: labels: batch[1],
….: K.learning_phase(): 1})

セッションのデフォルト値を上のように定める。

batch[0]は画像データ(vector)、batch[1]はデータラベル(int)である。(多分)

K.learning_phaseを1として、CNNがトレーニング段階であることを指定する。

In [21]: from keras.metrics import categorical_accuracy as accuracy

In [22]: acc_value = accuracy(labels, preds)

kerasよりaccuracy()関数を呼び出し、未知データの真のデータラベルがpreds(predictions)と一致している比率を計算しうるオブジェクトを生成。

In [24]: with sess.as_default():
….: print acc_value.eval(feed_dict={img: mnist_data.test.images,
….: labels: mnist_data.test.labels,
….: K.learning_phase(): 0})

最後にテスティングセットをimg,labelsに設定してセッション開始。

結果

0.8526

プロネットサーファーへの道

# coding:utf-8
import google
import os
from time import sleep
from selenium import webdriver
from requests_oauthlib import OAuth1Session
import json
import settings

twitter = OAuth1Session(settings.CONSUMER_KEY, settings.CONSUMER_SECRET, settings.ACCESS_TOKEN, settings.ACCESS_TOKEN_SECRET)

params = {}
req = twitter.get(“https://api.twitter.com/1.1/statuses/home_timeline.json”, params = params)

timeline = json.loads(req.text)

for tweet in timeline:
term = str(tweet[“text”].encode(“utf-8”))[:10]
f = google.search(term, lang = ‘ja’,num = 2,stop = 1)
F = google.search(term, lang = ‘en’,num = 2,stop = 1)

#print(‘Quick search URL result bellow\n’)
list = [url for url in f]
list2 = [url for url in F]
# print(url)

driver = webdriver.Chrome()
driver.get(list[0])
driver.set_window_position(0,0)
driver.set_window_size(1000,500)

river = webdriver.Chrome()
river.get(list[1])
river.set_window_position(1000,510)
river.set_window_size(1000,500)

iver = webdriver.Chrome()
iver.get(list2[0])
iver.set_window_position(0,510)
iver.set_window_size(1000,500)

ver = webdriver.Chrome()
ver.get(list2[1])
ver.set_window_position(1000,0)
ver.set_window_size(1000,500)

sleep(30)
driver.quit()
river.quit()
iver.quit()
ver.quit()

相変わらず適当ですがスニペットをどうぞ