'drive_time': 40008.0, 'geo_data': [{'velocity': '0.7'}, {'velocity': '0.6'}, {'velocity': '0.0'}, {'velocity': '0.0'}, {'velocity': '0.0'}, {'velocity': '2.2'}, {'velocity': '4.2'}, {'velocity': '1.8'}, {'velocity': '9.0'}, {'velocity': '5.6'}, {'velocity': '3.9'}, {'velocity': '6.5'}, {'velocity': '10.5'}, {'velocity': '10.2'}, {'velocity': '6.6'}, {'velocity': '1.6'}, {'velocity': '2.7'}, {'velocity': '6.3'}], 'rent_id': 229}

이런 형태의 배열로 되어있음

{}, [] 형태로 {} 되어있으면 .key, .items 로 for문을 돌려서 값을 읽어올수 있으나

둘이 겹쳐져 있는 json 타입의 형태는 entry 로 해서 그 값들을 가지고 활용해야 함

import json
from pprint import pprint

with open('20190801.json', encoding='utf-8') as data_file:    
    data = json.load(data_file)

pprint(data[50])

print(data[0]['rent_id'])
print(data[0]['drive_time'])
float(data[0]['geo_data'][26]['velocity'])

rent_id=[]

for entry in data :
    line=[]
    for key in entry['geo_data'] :
        line.append(float(key['velocity']))
    rent_id.append(line)

print(rent_id)

import matplotlib.pyplot as plt

plt.plot(rent_id[0])
plt.show()

 

이후에는 이 읽은 데이터를 다시 파일로 변환해서 저장하고

그걸로 이미지를 합쳐서 그릴 수 있어야함

골빈해커의 3분 딥러닝에서 공부한 내용입니다.

#비지도학습 Autoencoder
#텐서플로, numpy, matplotlib의 라이브러리 임포트
import tensorflow as tf
import numpy as np
import matplotlib.pyplot as plt

#MNIST 모듈 임포트
from tensorflow.examples.tutorials.mnist import input_data
mnist = input_data.read_data_sets("MNIST_data/", one_hot=True)

#########
#옵셥설정#
#########

learning_rate = 0.01 #최적화 함수에서 사용할 학습률
training_epoch = 20  #전체 데이터를 학습할 총 횟수
batch_size = 100     #미니배치로 한번에 학습할 데이터(이미지)의 갯수
n_hidden = 256       #은닉층의 뉴런 개수
n_input = 28*28      #이미지 크기 28*28 = 784

#########
#모델구성#
#########

X = tf.placeholder(tf.float32, [None, n_input])

#인코더
W_encode = tf.Variable(tf.random_normal([n_input, n_hidden]))  #n_hidden개의 뉴런을 가진 은닉층 만듬
b_encode = tf.Variable(tf.random_normal([n_hidden])) 
encoder = tf.nn.sigmoid(tf.add(tf.matmul(X,W_encode),b_encode)) #sigmoid 활성화 함수 적용

#디코더 (n_input과 n_hidden을 인코더와 반대로 입력)
W_decode = tf.Variable(tf.random_normal([n_hidden, n_input]))
b_decode = tf.Variable(tf.random_normal([n_input]))
decoder = tf.nn.sigmoid(tf.add(tf.matmul(encoder,W_decode),b_decode))

#########
#모델학습#
#########

#손실함수(두 값의 거리차이) = X(평가하기 위한 실측값) - 디코더의 결과값
cost = tf.reduce_mean(tf.pow(X-decoder,2))

#최적화 함수
optimizer = tf.train.RMSPropOptimizer(learning_rate).minimize(cost)

#학습진행
init = tf.global_variables_initializer()
sess = tf.Session()
sess.run(init)

total_batch = int(mnist.train.num_examples / batch_size)

for epoch in range(training_epoch):
    total_cost = 0
    
    for i in range(total_batch):
        batch_xs, batch_ys = mnist.train.next_batch(batch_size)
        _, cost_val = sess.run([optimizer, cost], feed_dict={X:batch_xs})
        total_cost += cost_val
        
    print('Epoct:', '%04d' % (epoch + 1), 'Avg. cost = ', '{:.4f}'.format(total_cost/total_batch))

print('최적화 완료!')


#########
#결과확인#
#########

#10개의 확인 이미지 추출
sample_size = 10
samples = sess.run(decoder, feed_dict={X:mnist.test.images[:sample_size]})

fig, ax = plt.subplots(2, sample_size, figsize=(sample_size, 2))

for i in range(sample_size):
    ax[0][i].set_axis_off()
    ax[1][i].set_axis_off()
    ax[0][i].imshow(np.reshape(mnist.test.images[i], (28,28))) #imshow : 이미지 출력함수
    ax[1][i].imshow(np.reshape(samples[i], (28,28)))

plt.show()

 

tsv 파일이란,

csv파일과 비슷하지만 ,(쉼표)가 아닌 탭으로 뛰어진 파일이다.

쉼표를 사용해야만하는 데이터가 있으면 탭으로 뛰어서 보내는 것도 방법이기에!

아래와 같이 한다면 열수있음!

import pandas as pd
dataset = pd.read_csv("파일이름.tsv",delimiter='\t')
print(dataset)

 

1. image crop

from PIL import Image

area = (가로시작점, 세로시작점, 가로범위, 세로범위)

crop_image = img.crop(area)

im.save # 저장하기

 

2. opveCV 활용

import cv2

src=cv2.imread("Image/pawns.jpg", cv2.IMREAD_COLOR)

dst=src.copy()

dst=src[100:600, 200:700] %높이, 너비

 

3. trim 활용

import cv2 #cv2 임포트

def im_trim (img): #함수로 만든다

x = 845;

y = 325; #자르고 싶은 지점의 x좌표와 y좌표 지정

w = 180; h = 235; #x로부터 width, y로부터 height를 지정

img_trim = img[y:y+h, x:x+w] #trim한 결과를 img_trim에 담는다

cv2.imwrite('org_trim.jpg',img_trim) #org_trim.jpg 라는 이름으로 저장

return img_trim #필요에 따라 결과물을 리턴

org_image = cv2.imread('test.jpg') #test.jpg 라는 파일을 읽어온다

trim_image = im_trim(org_image) #trim_image 변수에 결과물을 넣는다

출처: https://pikabu.tistory.com/42 [피카부]

 

4. numpy 슬라이싱

import cv2 img = cv2.imread("lenna.png")

crop_img = img[200:400, 100:300] # Crop from x, y, w, h -> 100, 200, 300, 400

# NOTE: its img[y: y + h, x: x + w] and *not* img[x: x + w, y: y + h]

cv2.imshow("cropped", crop_img)

cv2.waitKey(0)

R만 사용하다 오랜만에 파이썬을 쓰니 CSV 읽는 방법을 순간 잊어버....렸던.... 바보 였던....

그래서 혹시 나만 모르는걸까봐 (부끄럽지만) 

누군가에게는 필요한 정보일지 몰라서 적어 놓기로 했다

원래 실수란 오답노트처럼 적어가면서 고쳐가면 좋은거니까 (긍정긍정 ㅋㅋ)


계속 다른 블로그나 글을 읽어봐도

아래와 같이 import csv 또는 import os, pd 만 하라고 나와있지


어디에 파일을 올려야 이게 제대로 읽히는지 경로는 어떻게 해야하는지가 안나와있어서 고생했다 10분간 ㅠㅠ


왜냐!! 너무 쉽고 기본이기 때문이겠지 ㅋㅋㅋㅋㅋ 하지만 난 10분간 이걸 고민했기 때문에

나와같은 고민을 가진 몇몇분들에게 알려드리기 위해 방법을 찾아냈다


짜잔 !!!!!!!!! 

형광펜으로 되어있는 곳에 위치한 [Upload] 클릭하여

내가 가지고 있는 CSV 파일을 이 곳에 위치해야한다. 그래야 사용가능하다는

R처럼 파일을 동일한 디렉토리에 올려놓으면 사용 가능하다는거! 


다음에 다시 잊지 않도록 저장해두고 기억해야지

오늘의 실수는 내일의 발전으로 ㅋㅋㅋ




import csv


f = open('fulldata.csv', 'r', encoding='UTF-8')

rdr = csv.reader(f)

for col in rdr:

    print(col)

f.close()


위의 코드값입니다. 이건 col 컬럼기준으로 나눠진거고 line으로 변경하시면 줄단위로 나옵니다 ^^ 

+ Recent posts