콘텐츠로 바로가기

now0930 일지

이런저런 생각

  • 홈
  • 비공개
  • 강좌
  • 잔여 작업 조회
  • 위치

tensorflow로 gps 좌표를 Kmean 방법으로 분류하기

tensorflow kmean으로 gps 분류 연습 예제, 2일차

내가 참조한 예제에서 원래 제작자는 임의의 샘플을 만들고, 그 중에서 한 개를 중심으로 선택하였다. 나는 데이터를 가지고 있어, 임의의 샘플을 만들 필요가 없다. 이에 따라 내가 가진 여러 개의 데이터 중, 임의 한 점을 중심으로 선택해야 했다. 내가 가진 예제는 이 부분이 없어, 예제를 이해하고, 새로 작성하는데 시간이 오래 걸렸다. 여러 삽질끝에 대략 아래와 같이 했다.
1일차에는 그룹을 설정하지 않았는데, 이렇게 되면 의미가 없다. 이를 수정하기 위해서 gps 좌표를 요일별로 모은 다음 출력으로 내보냈다. 요일별 모은 데이터에서 두 개의 요일을 선택했고, 여기에서 아무점이나  중심으로 선택했다. 일단 sql에서 요일별로 gps 값을 다시 출력하여 아래와 같은 값을 얻었다.

     latitude  longitude  updated
0     37.3700    126.935        6
1     37.3698    126.935        6
2     37.3698    126.935        6
3     37.3697    126.935        6
4     37.3697    126.935        6
79    37.0344    126.773        5
80    37.0344    126.773        5
81    37.0344    126.773        5
82    37.0343    126.773        5
83    37.0343    126.773        5
235   37.0325    126.773        4
236   37.0325    126.773        4
237   37.0325    126.773        4
238   37.0325    126.773        4
239   37.0325    126.773        4
401   37.0344    126.773        3
402   37.0344    126.773        3
403   37.0344    126.773        3
404   37.0343    126.773        3
405   37.0343    126.773        3
544   37.0344    126.773        2
545   37.0344    126.773        2
546   37.0344    126.773        2
547   37.0344    126.773        2
548   37.3687    126.935        2
695   37.0343    126.773        1
696   37.0344    126.773        1
697   37.0343    126.773        1
698   37.0343    126.773        1
699   37.0343    126.773        1
900   37.3696    126.935        7
901   37.3695    126.935        7
902   37.3695    126.935        7
903   37.3716    126.935        7
904   37.3716    126.935        7

pandas에서 dataFrame을 groupby로 정렬하면 python이 데이터 형식을 변경해 버린다. 요일로 선택한 데이터를 dataFrame으로 사용하기 위해서 아래와 같이 했다. append 할 경우, 새로운 dataFrame을 만들어야지, 기존 dataFrame에 넣으면 붙지 않는다.

ipdGroupbyUpdated = ipd.groupby('updated')
print ipdGroupbyUpdated.head()

#updated에서 1일차 날짜, 3일차 날짜를 구해서 별도의 dataframe을 설정..
#pd.show_versions()
print ipdGroupbyUpdated.get_group(1)
#print type(ipdGroupbyUpdated.get_group(1))
ipdSliced=ipdGroupbyUpdated.get_group(1)
print "1일차 데이터"
print ipdSliced.head()
print type(ipdSliced)

ipdSliced1=ipdGroupbyUpdated.get_group(7)
print "3일차 데이터"
print ipdSliced1.head()
print type(ipdSliced1)

찾아보면 더 쉬운 방법이 있겠지만, 여기까지 하는데도 충분히 힘들었다.

두 개 요일로 선택한 좌표를 그림을 그리기 위해서, 아래과 같이 함수를 정의하고, dataFrame을 인자로 넘겨 주었다. 굳이 함수로 정의한 이유는 원래의 예제가 함수로 되어 있었기 때문이다.

    def plot_clusters(df_ipd, centroids):
    print("plot_clusters was called")
    import matplotlib
    matplotlib.use('Agg')
    import matplotlib.pyplot as plt 

    for key, val in df_ipd.groupby('updated'):
        tmp_centoid=df_ipd[df_ipd.updated==key].sample()
        #print "tmp_centoid 출력\n"
        #print tmp_centoid[['longitude','latitude']]
        #print tmp_centoid[['longitude']]

        plt.scatter(val['longitude'], val['latitude'], label=key)
        plt.plot(tmp_centoid[['longitude']],tmp_centoid[['latitude']], markersize=35, marker="x", color='k', mew=10) 
        plt.plot(tmp_centoid[['longitude']],tmp_centoid[['latitude']], markersize=30, marker="x", color='m', mew=5)

for문이 groupby의 기준인 날짜기준으로 key값을 변경하면서 루프를 만든다. dataFrame에서 임의의 점을 찾기 위해 tmp_centoid[‘longitude’]와 같은 방식을 선택했다. 마지막에 있는 marker관련 2개의 줄은 X의 색을 칠하는 부분이다. 필요 없다고 판단하여 한 줄만 사용하니 색이 안칠해 졌다.
대략 아래와 같은 그림을 얻을 수 있다..

전에 데이터와 달리 위도/경도의 축을 바꿨다.

이 글 공유하기:

  • Tweet
발행일 2016-12-27글쓴이 이대원
카테고리 tensorflow 태그 gps, kmean, tensorflow

댓글 남기기응답 취소

이 사이트는 Akismet을 사용하여 스팸을 줄입니다. 댓글 데이터가 어떻게 처리되는지 알아보세요.

글 내비게이션

이전 글

phpmyadmin에 https 적용하기

다음 글

mp3태그로 plexmedia server 정보 업데이트

2025 5월
일 월 화 수 목 금 토
 123
45678910
11121314151617
18192021222324
25262728293031
4월    

최신 글

  • common mode, differential mode 2025-05-11
  • signal conditioner, 신호 처리기 2025-05-10
  • strain gage 2025-05-09
  • 칼만 필터 2025-05-01
  • positioner(I/P) 2025-04-26

카테고리

  • 산업계측제어기술사
  • 삶 자국
    • 책과 영화
    • 투자
  • 생활코딩
    • LEGO
    • ROS
    • tensorflow
  • 전기기사
  • 피아노 악보

메타

  • 로그인
  • 엔트리 피드
  • 댓글 피드
  • WordPress.org

페이지

  • 소개
  • 잔여 작업 조회
    • 작업 추가
    • 작업의 사진 조회
    • 작업 수정 페이지
  • 사진
    • GPS 입력된 사진
    • 사진 조회
  • 위치
    • 하기 휴가 방문지
    • 해외 출장

태그

android bash c docker driver FSM gps java kernel LEGO linux mysql network program opcua open62541 plc programmers python raspberry reinforcementLearning ros state space system program tensorflow transfer function 경제 미국 민수 삼국지 세계사 실기 에너지 역사 유전자 일본 임베디드 리눅스 전기기사 조선 중국 채윤 코딩 테스트 통계 한국사 한국어

팔로우하세요

  • Facebook
now0930 일지
WordPress로 제작.
 

댓글 로드중...