한동안 Foursquare를 많이 사용하고 회사에서도 Mayor를 힘겹게 획득했는데 갑자기 Foursquare에서 체크인 기능을 빼고 이런 저런 이상한 기능을 넣어서 왜 삽질하나 하고 있었는데 트위터에 위치 정보를 제공하는 군요.


일단 Foursquare의 정확한 정보들을 사용한다는 데에는 참 좋은 생각인 것 같습니다만 지금은 트위터도 잘 안쓰고 있어서 저에겐 별로 와 닿지가 않네요.


여튼 Foursquare가 삽질을 끝내고 있는 것 같아 다행입니다.

참고로 체크인 기능은 Swarm이라는 앱으로 따로 분리 시키고 Mayor대신에 왕관을 획득하게 했는데 도대체 왜 이렇게 한 건지 궁금합니다~!!!


출처 : http://www.engadget.com/2015/03/23/twitter-taps-foursquare-for-location-based-features/#continued

Posted by 공놀이나하여보세


안드로이드에 신체활동 감지 기능이 추가되었습니다.


폰을 잠금으로 해두고 쓰시는 분들이 많을텐데요. 

폰을 사용하다 보면 자주 비밀번호를 입력하는 것이 귀찮습니다.

아이폰의 경우 지문인식으로 한방에 해결이 되니 그나마 편하긴 하지만 이것도 자꾸 신경이 쓰이긴 합니다.

안드로이드에서 새로 나온 이 기능은 한번 폰을 unlock시킨 후 몸에 지니고 있으면 그것을 인지해서 폰이 잠금이 되지 않도록 하는 기능입니다. 

폰을 들고 있거나 주머니에 넣고 있는 경우는 폰이 unlock되 상태가 유지되고 폰을 테이블 같은 곳에 놓은 경우에만 lock이 된다고 합니다


아이폰은 지문인식으로 깔끔하게 해결하긴 했지만 만 폰을 몸에서 뗐다가 다시 집었을 때만 언락을 해도 되게한 이 기능 자체도 마음에 드네요~^^


저는 넥서스5 5.0.1에서 테스트 해 보았습니다.


출처 : http://www.androidauthority.com/on-body-detection-lollipop-smart-unlock-595999/



Posted by 공놀이나하여보세

드디어 마지막 장

1. 베이지안 분류기

(1) 감독형 기법이므로 학습되어야 함

(2) 분류기는 보아온 모든 특성과 특성이 특정 분류에 연계될 숫자 확률을 추적하여 학습된다.

(3) 특정 분류에 관한 문서가 주어진 단어를 가질 확률을 생성한다.

(4) 장단점

A. 장점 

- 큰 데이터 세트를 학습하고 질의하는 속도가 매우 빠르다. 증분 학습이 필요한 경우에 특히 장점이 있다. 

- 실제로 학습한 것에 대한 해석이 다소 단순하다. 각 특성의 확률이 저장되었기 때문에 언제나 데이터베이스를 살펴볼 수 있다.

B. 단점

- 특성의 조합에 기반을 두어 변화하는 출력을 다룰 수 없다.


2. 의사결정 분류기

(1) 학습하기 : 가능한 되적의 방법으로 각 단계에서 데이터를 분리할 속성들을 선택하면서 트리를 만든다.

(2) 장단점

A. 장점

- 학습 모델을 해석하기 쉽다.

- 중요한 요인들을 트리의 상단에 올려놓는다.

- 변수의 상호 작용을 쉽게 다룰 수 있다.

B. 단점

- 회귀트리는 최저 변위를 가지는 평균값으로 데이터를 분할하지만 만일 데이터가 복잡하다면 트리는 정확한 의사결정을 하기 위해 아주 거대해져야 한다.

- 증분 학습을 지원하지 않는다.


3. 신경망

(1) 신경망은 분류와 숫자 예측 문제에 모두 적용할 수 있다.

(2) 분류기

- 가장 높은 숫자를 가진 링크를 사용자가 클릭할 만한 것으로 예측해 모든 링크마다 숫자를 제공

(3) 다층 퍼셉트론망

(4) 장단점

A. 장점

- 복잡한 비선형 함수도 처리할 수 있고 입력들 간의 의존관계도 밝힐 수 있다.

- 증분학습도 가능하며 필요한 공간도 적다.

B. 단점

- 수백 노드와 수천 시냅스를 가질 수 있어 네트워크가 제공한 해답을 어떻게 만들었는지 판단하기 불가능하다.

- 특정 문제에 대한 학습 속도와 네트워크 크기를 선택할 결정적인 규칙이 없다.


4. 지지벡터머신

(1) 대부분의 데이터를 깨끗이 분리하는 선을 찾는다.

(2) 커널 트릭

- 데이터를 다른 축으로 변환하여 선형으로 구분이 되지 않는 걸 선형으로 구분할 수 있게 도와 준다.

(3) LIBSIM 사용하기

(4) 장단점

- 가용할 데이터가 많은 문제에 좀 더 잘 적용된다. 블랙박스 기법이다. 고차원 공간으로 변환하기 때문에 분류하는 방법을 이해하기 어렵다.

A. 장점

- 아주 강력한 분류기. 더 정확하고 더 잘 동작함

B. 단점

- 최적 커널 함수와 이 함수의 인자들이 모든 데이터 세트마다 약간씩 달라 매번 이들을 찾아야 한다.


워낙에 요약된 내용들이라 블로그에 정리할 필요가 없는 것 같아 이만 줄인다.


- django : lastframework 

- tasty pi


Posted by 공놀이나하여보세

출처 : http://www.rasplay.org/?p=5996

아래 파일을 수정하면 끝

sudo nano /etc/network/interfaces

auto lo

iface lo inet loopback
iface eth0 inet dhcp

allow-hotplug wlan0
auto wlan0

iface wlan0 inet dhcp
wpa-ssid “ssid”
wpa-psk “password”

Posted by 공놀이나하여보세

출처 : http://josephmr.com/realtime-arduino-sensor-monitoring-with-matplotlib/


import matplotlib.pyplot as plt
import matplotlib.animation as anim
from collections import deque
import random
 
MAX_X = 100 #width of graph
MAX_Y = 1000 #height of graph
 
# intialize line to horizontal line on 0
line = deque([0.0]*MAX_X, maxlen=MAX_X)
 
def update(fn, l2d):
#simulate data from serial within +-5 of last datapoint
dy = random.randint(-5, 5)
#add new point to deque
line.append(line[MAX_X-1]+dy)
# set the l2d to the new line coords
# args are ([x-coords], [y-coords])
l2d.set_data(range(-MAX_X/2, MAX_X/2), line)
 
fig = plt.figure()
# make the axes revolve around [0,0] at the center
# instead of the x-axis being 0 - +100, make it -50 - +50
# ditto for y-axis -512 - +512
a = plt.axes(xlim=(-(MAX_X/2),MAX_X/2), ylim=(-(MAX_Y/2),MAX_Y/2))
# plot an empty line and keep a reference to the line2d instance
l1, = a.plot([], [])
ani = anim.FuncAnimation(fig, update, fargs=(l1,), interval=50)
 
 
plt.show()


Posted by 공놀이나하여보세

출처 : http://hilpisch.com/rpi/02_data_analytics.html


sudo apt-get install python-pip python-dev build-essential
sudo pip install numpy --upgrade
sudo pip install pandas
sudo easy_install -U distribute
sudo apt-get install libpng-dev libjpeg8-dev libfreetype6-dev
sudo pip install matplotlib
sudo pip install numexpr
sudo pip install cython
sudo apt-get install libhdf5-serial-dev
sudo pip install tables


Posted by 공놀이나하여보세

1. Genetic Programming

가장 좋은 걸 찾은 후 진화할 때는 단순히 복사와 변경이 있다.

두가지 방법의 진화가 있다.

간단한 방법은 mutation(돌연변이) - 랜덤하게 조금만 변경

crossover - 일부를 가장 좋은 프로그램과 교체함


2. 유전자 프로그래밍과 유전자 알고리즘의 차이

(1) 유전자 알고리즘은 정해진 알고리즘의 파라미터만 찾음

(2) 유전자 프로그래밍은 알고리즘과 파라미터 둘 다를 찾음


예)

1. 테스트할 함수를 만들고 그에 대한 입력과 아웃풋 값을 테스트셋으로 200개 정도 저장한다.

2. 유전자 알고리즘을 이용하여 입력과 아웃풋이 정확히 일치하는 함수를 찾아내야 한다.

3. 임의로 함수를 몇개 만든 후 같은 입력을 주고 아웃풋을 테스트셋의 아웃풋과 비교하여 성능을 측정한다.

4. 유전자 알고리즘을 통해 돌연변이, 교배등을 통해 함수들을 만들고 아웃풋과의 비교값이 가장 작은 것을 찾는다.

5. 차이가 0이 되면 제대로 된 함수를 찾은 것이다.

6. 함수안에 쓸데 없는 공식도 들어갈 수 있으니 제거하는게 필요하다. 예) 0 + 0

Posted by 공놀이나하여보세

7.GUI

(1) hello world

from Tkinter import *

root = Tk()

Label(root, text='Hello World').pack()

root.mainloop()


Tkinter인데 tkinter로 했다가 고생함


(2) 온도 변환기


Posted by 공놀이나하여보세

아래 블로그 참고

http://blog.bitify.co.uk/2013/11/interfacing-raspberry-pi-and-mpu-6050.html


1. sudo raspi-config 를 통해 i2c enable 설정



2. sudo vi /etc/modules 

아래 두 줄 추가 후 재부팅

i2c-bcm2708
i2c-dev



3. 하드웨어 선 연결

라즈베리파이의 pin1, 3, 5, 6을 센서의 VCC, SDA, SCL, GND에 아래와 같이 연결

  • Pin 1 - 3.3V connect to VCC
  • Pin 3 - SDA connect to SDA
  • Pin 5 - SCL connect to SCL
  • Pin 6 - Ground connect to GND

4. 테스트를 위한 파일 다운 및 테스트
sudo apt-get install i2c-tools

- 테스트

sudo i2cdetect -y 0 (라즈베리파이1버전) or
sudo i2cdetect -y 1 (라즈베리파이2)
- 아래와 같이 나오는 것 확인
     0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f
00:          -- -- -- -- -- -- -- -- -- -- -- -- --
10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
60: -- -- -- -- -- -- -- -- 68 -- -- -- -- -- -- --
70: -- -- -- -- -- -- -- --


5. 파이썬으로 i2c접근을 위해 아래 파일 다운로드

sudo apt-get install python-smbus 


6. 소스 코드

mpu6050.py로 아래 파일 저장


#!/usr/bin/python

import smbus

import math


# Power management registers


power_mgmt_1 = 0x6b


power_mgmt_2 = 0x6c

def read_byte(adr):

    return bus.read_byte_data(address, adr)

def read_word(adr):

    high = bus.read_byte_data(address, adr)

    low = bus.read_byte_data(address, adr+1)

    val = (high << 8) + low

    return val


def read_word_2c(adr):

    val = read_word(adr)

    if (val >= 0x8000):

        return -((65535 - val) + 1)

    else:

        return val


def dist(a,b):

    return math.sqrt((a*a)+(b*b))


def get_y_rotation(x,y,z):

    radians = math.atan2(x, dist(y,z))

    return -math.degrees(radians)


def get_x_rotation(x,y,z):

    radians = math.atan2(y, dist(x,z))

    return math.degrees(radians)


bus = smbus.SMBus(0) # or bus = smbus.SMBus(1) for Revision 2 boards

address = 0x68       # This is the address value read via the i2cdetect command


# Now wake the 6050 up as it starts in sleep mode

bus.write_byte_data(address, power_mgmt_1, 0)

print "gyro data"

print "---------"

gyro_xout = read_word_2c(0x43)

gyro_yout = read_word_2c(0x45)

gyro_zout = read_word_2c(0x47)

print "gyro_xout: ", gyro_xout, " scaled: ", (gyro_xout / 131)

print "gyro_yout: ", gyro_yout, " scaled: ", (gyro_yout / 131)

print "gyro_zout: ", gyro_zout, " scaled: ", (gyro_zout / 131)

 

print

print "accelerometer data"

print "------------------"

 

accel_xout = read_word_2c(0x3b)

accel_yout = read_word_2c(0x3d)

accel_zout = read_word_2c(0x3f)


accel_xout_scaled = accel_xout / 16384.0

accel_yout_scaled = accel_yout / 16384.0


accel_zout_scaled = accel_zout / 16384.0

print "accel_xout: ", accel_xout, " scaled: ", accel_xout_scaled

print "accel_yout: ", accel_yout, " scaled: ", accel_yout_scaled

print "accel_zout: ", accel_zout, " scaled: ", accel_zout_scaled

print "x rotation: " , get_x_rotation(accel_xout_scaled, accel_yout_scaled, accel_zout_scaled)

print "y rotation: " , get_y_rotation(accel_xout_scaled, accel_yout_scaled, accel_zout_scaled)


7. 테스트
python mpu6050.py



Posted by 공놀이나하여보세

아래 사이트 7page


http://www.slideshare.net/MoamBae/raspberry-pi-35150708

Posted by 공놀이나하여보세