2장은 분류법에 대한 소개 정도를 하는 챕터이다.


(1) 홀드 아웃 : 하나는 모델을 훈련시키고 다른 하나는 테스트에 사용

(2) 교차 검증(cross-validation) : 

- 단일 잔류 : 극단적인 교차 검증의 형태로 하나의 예를 제외한 모든 데이터로 모델을 학습하고, 이 모델이 남은 하나의 예를 잘 분류하는지 보는 것. 100배 더 가중된 일을 해야함

- x중첩(x - fold) 교차 검증 : x는 작은 숫자로 예를 들면 5 정도이다. 5개의 중첩 교차 검증을 수행하고자 전체 데이터를 다섯 그룹으로 나눈다. 즉 전체 데이터의 20% 정도를 남겨둔다.

(3) 최근접 이웃 분류

- 먼저 데이터 셋을 나누어 두고 새로운 데이터가 들어오면 이 데이터와 가장 가까운 데이터셋 몇개를 찾아 대충 어느 범주에 들어 있는지 찾는다..

- k최근접 이웃 분류 : 가장 가까운 하나의 점이 아닌 k개 만큼 가까운 점들을 고려함. 일반적으로 k는 작지만 데이터셋이 매우 크다면 큰 숫자로 할 수도 있다.



신고
Posted by 공놀이나하여보세

아래에 자세한 코드가 있음

출처 : http://stackoverflow.com/questions/25351488/intermittent-python-thread-error-main-thread-is-not-in-main-loop


from Tkinter import *
import tkFont
import os
import glob
import time
import threading
import Image 
import Queue


def update_temp(queue):
    """ Read the temp data. This runs in a background thread. """
    while True:
        #   28-000005c6ba08
        i = "28-000005c6ba08"
        base_dir = '/sys/bus/w1/devices/'
        device_folder = glob.glob(base_dir + i)[0]
        device_file = device_folder + '/w1_slave'

        tempread=round(read_temp(),1)

        # Pass the temp back to the main thread.
        queue.put(tempread)
        time.sleep(5)

class Gui(object):
    def __init__(self, queue):
        self.queue = queue

        #Make the window
        self.root = Tk() 
        self.root.wm_title("Home Management System")
        self.root.minsize(1440,1000)

        self.equipTemp = StringVar()   
        self.equipTemp1 = StringVar()
        self.equipTemp2 = StringVar()       

        self.customFont = tkFont.Font(family="Helvetica", size=16)

        #   1st floor Image
        img = Image.open("HOUSE-PLANS-01.png") 
        photo = ImageTk.PhotoImage(img)

        Label1=Label(self.root, image=photo)
        Label1.place(x=100, y=100)

        #   2nd floor
        img2 = Image.open("HOUSE-PLANS-02.png")
        photo2 = ImageTk.PhotoImage(img2)

        Label1=Label(self.root, image=photo2)
        Label1.place(x=600, y=100)

        #   Basement image
        img3 = Image.open("HOUSE-PLANS-03.png")
        photo3 = ImageTk.PhotoImage(img3)

        Label1=Label(self.root, image=photo3)
        Label1.place(x=100, y=500)

        #   Attic Image
        img4 = Image.open("HOUSE-PLANS-04.png")
        photo4 = ImageTk.PhotoImage(img4)

        Label1=Label(self.root, image=photo4)
        Label1.place(x=600, y=500)

        #   House Isometric Image
        img5 = Image.open("house-iso.png")
        photo5 = ImageTk.PhotoImage(img5)

        Label1=Label(self.root, image=photo5)
        Label1.place(x=1080, y=130)

        #Garage Temp Label
        Label2=Label(self.root, textvariable=self.equipTemp, width=6, justify=RIGHT, font=self.customFont)
        Label2.place(x=315, y=265)

        print "start monitoring and updating the GUI"

        # Schedule read_queue to run in the main thread in one second.
        self.root.after(1000, self.read_queue)

    def read_queue(self):
        """ Check for updated temp data"""
        try:
            temp = self.queue.get_nowait()
            self.equipTemp.set(temp)
        except Queue.Empty:
            # It's ok if there's no data to read.
            # We'll just check again later.
            pass
        # Schedule read_queue again in one second.
        self.root.after(1000, self.read_queue)

if __name__ == "__main__":
    queue = Queue.Queue()
    # Start background thread to get temp data
    t = threading.Thread(target=update_temp, args=(queue,))
    t.start()
    print "starting app"
    # Build GUI object
    gui = Gui(queue)
    # Start mainloop
    gui.root.mainloop()


신고
Posted by 공놀이나하여보세

제이펍의 '라즈베리파이 시작하기' 라는 책에 라즈베리파이로 아두이노 구동을 위한 내용이 잘 정리 되어 있습니다.


책의 내용을 다 옮기긴 어렵겠지만 기본적인 것에 대해 말씀드려볼까 합니다.

저는 처음에 둘을 연결하려면 뭔가 선을 따줘야 할거라고 생각했습니다.

물론 제대로 된 통신을 하려면 SPI통신을 이용해야할 거라고 생각합니다.(아직 해보진 않았습니다만..)

하지만, 책을 보니 그냥 시리얼 통신을 이용했더군요.

게다가 시리얼 통신을 위해서 점퍼선을 연결할 필요도 없습니다.

그냥 USB케이블 하나를 연결하면 됩니다.



저는 귀찮아서 샤오미 배터리를 전원으로 쓰고 usb wifi동글로 무선 연결을 해두고 맥북에서 원격 접속으로 작업을 합니다.

여튼 이렇게 선 하나만 연결합니다.



sudo apt-get install arduino 

arduino IDE를 다운 받습니다.

마지막으로 IDE에 uart 출력을 c로 코딩합니다.

-> 버튼을 누르면 알아서 컴파일이 되고 아두이노로 다운로드하고 실행이 됩니다.


라즈베리파이에서 serial 입력을 받아 print하는 코드를 python으로 짭니다.

그리고 실행하면 위의 사진 처럼 아두이노가 보내는 데이터를 출력해줍니다.


간단하네요 ㅋㅋ


자세한 내용은 책을 참조하시거나 인터넷을 뒤져 보시길..


신고
Posted by 공놀이나하여보세

삼성전자 갤6와 갤6 엣지에서 무선충전을 내장했다고 발표를 했습니다.


제가 LG 옵티머스 LTE가 출시되었을 때부터 무선 충전을 이용했고

현재 넥서스5, 넥서스7 2013과 모토360에서도 함께 무선 충전을 이용하고 있는 입장에서 

무선 충전의 장단점에 대해 말씀 드리겠습니다.

제가 가지고 있는 무선 충전기는 총 6개입니다.


무선 충전이 편하다고 생각하고 충전기도 많이 구매를 했으나, 

무선 충전을 사용하면서 몇가지의 심각한 불편한 점들이 있었습니다.


첫 째, 충전 효율이 낮다.

충전 효율이 높아졌다고 하지만 아무래도 선을 꽂는 것에 비해 늦을 수 밖에 없습니다.


둘 째, 폰을 사용하고 있는 동안은 충전을 할 수 없다.

대부분 폰을 편하게 사용하고 놓아두는 목적으로 사용하게 되는데, 

폰을 자주 사용하는 사람들은 사실 폰을 손에서 잘 놓지 않습니다.

그래서 무선 충전을 사용하다 보면 오히려 실제로 무선 충전기에 폰을 놓지 않을 때가 많습니다.


셋 째, 무선 충전기에 폰을 정확하게 놓지 않으면 충전이 되지 않는다.

충전을 편하게 하려고 무선 충전을 사용하게 되는데 

무선 충전기에 따라서 그냥 선을 꽂는 것 만큼

무선 충전을 위해 폰을 제대로 놓는 것도 힘들다고 느낄 때도 있습니다.


하지만, 이러한 불편한 점에도 불구하고 분명히 편리한 점들이 있습니다.

아무래도 충전 케이블을 찾아서 꽂는 것보다는 그냥 충전기에 올려두는 것이 편합니다.


그래서 앞으로는 더 잘 사용하기 위해서 어떻게 이용하면 좋을지 말씀드려 볼까 합니다.


첫 째, 폰을 자주 사용해야할 때는 무선 충전을 이용하지 말아야 한다.

앞에서도 말했지만 폰을 자주 사용하는 경우에는 그냥 충전기를 연결하는 것이 좋습니다.


둘 째, 자동차나 카페 같은 곳에서 사용하라.

자동차라는 공간은 특수한 공간입니다.

운전자는 운전중에는 당연히 폰을 사용할 수 없습니다. 

그렇기 때문에 폰은 차에 가만히 그리고 꽤 오랫동안 놔두는 경우가 많습니다.

따라서 차에 무선 충전기를 둔다면 운전자는 지저분하게 충전 케이블을 둘 필요도 없고,

힘들에 케이블을 찾아서 폰에 꽂을 필요 없이 특정한 위치에 두기만 하면 됩니다.

이미 많은 차들이 무선 충전기를 기본 내장할 예정이라고 합니다.


또한, 미국의 스타벅스에서는 카페 테이블이 무선 충전기가 내장되어 있다고 합니다.

카페에서 충전기를 들고 다니고 충전기를 아답터에 꽂고 하는 건 여간 힘든 일이 아닙니다.

하지만 카페에서 무선 충전이 지원이 된다면 

그냥 커피를 마시며 테이블에 올려 두기만 하면 충전이 되니 편리합니다.

아마 우리나라에서도 조만간 무선 충전이 지원되는 테이블들이 많이 보급되지 않을까 생각이 듭니다.


셋 째, 바닥에 눞여 놓는 무선 충전기를 사지 말고 거치형 충전기를 구매하라


이건 LG전자에서 나온 거치형 무선 충전기입니다.

이게 편한게 아무 생각 없이 그냥 폰을 올려두면 되기 때문에 매우 편리합니다.

폰 제조사들이 무료로 주는 충전기들은 공짜라 좋긴 하지만

폰을 올려 두고 충전이 잘 되는 위치를 찾아야 해서 조금은 불편한 점이 있습니다.


마지막으로 테블릿이나 스마트워치의 무선 충전 기능을 사용하라

제가 넥서스7 2013을 평소 집에서는 전자 액자로 사용하고 있는데

위에 거치형 무선 충전기에 옆으로 눞여두면 지저분하게 선을 꽂을 필요 없이 

깔끔하게 액자로 사용할 수가 있습니다.

그리고 모토 360의 경우에도 무선 충전을 지원하기 때문에, 

(모토360 배터리가 워낙 짧아서 하루를 안가는 문제가 있기도 해서 

자주 충전을 해 줘야 합니다.)

불편하게 충전 거치대를 들고 다니지 않고 표준 충전기만 여러 곳에 있으면 

아무데서나 충전을 할 수 있어서 편리합니다.


LG전자에서 무선 충전을 3년 전부터 지원을 하고 있었는데, 

늦었지만 삼성전자에서 무선 충전을 기본 지원하는 것은 분명히 환영할 일입니다.

앞으로, 카페나 식당 그리고 많은 곳에서 무선 충전을 지원해 준다면

폰이나 스마트워치 등등이 나도 모르는 사이에 충전이 되는 

그런 날들이 곧 오지 않을까 하는 생각을 해 봅니다. 

신고
Posted by 공놀이나하여보세

1. 설치

sudo apt-get install git openjdk-7-jdk


2. Clone

git clone https://github.com/.../... .git


3. commit(내가 수정한 것 보내기)

git commit -m ".. "

git push


4.pull(최신 소스 받기)

git pull

 


잘 정리된 사이트

http://syaku.tistory.com/245

신고

'Tool > Github' 카테고리의 다른 글

Github(깃허브) 간단 사용법  (0) 2015.03.25
Posted by 공놀이나하여보세

자동차에 제스쳐 인식에 대한 요구가 점점 더 많아질 것 같습니다.

아무래도 사용자 인식을 하려면 카메라가 필요해질텐데 이 카메라로 얼굴인식 뿐만 아니라 제스쳐 인식도 하길 바라는 것 같네요.


예전에 '영광의 레이서'라는 일본 에니메이션에서 나왔던 자동차의 인공지능과 대화도 하고 내 건강 상태나 심리 상태도 체크 받는 시대가 머지 않아 보입니다.


출처 : http://www.engadget.com/2014/06/25/ford-and-intel-project-mobii-connected-car-cameras/?utm_source=Feed_Classic_Full&utm_medium=feed&utm_campaign=Engadget&?ncid=rss_full&utm_content=gravity_organic_sitefeed&cps=gravity_1677_-401343390477724242

신고
Posted by 공놀이나하여보세

한동안 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 공놀이나하여보세