1. 파이썬 pip를 활용하여 numpy와 pandas 라이브러리를 설치한다.
- pip install numpy (python -m pip install numpy)
- pip install pandas
- pip install sqlalchemy
2. 파이썬을 활용하여 fish csv 파일을 로드한다.
bream_length = pd.read_csv("bream_length.csv").to_numpy().flatten()
bream_weight = pd.read_csv("bream_weight.csv").to_numpy().flatten()
smelt_length = pd.read_csv("smelt_length.csv").to_numpy().flatten()
smelt_weight = pd.read_csv("smelt_weight.csv").to_numpy().flatten()
3. 로드한 도미와 빙어 데이터를 x축은 length, y축은 weight로 하여 matplot으로 시각화한다.
plt.scatter(bream_length, bream_weight)
plt.scatter(smelt_length, smelt_weight)
plt.show()
4. 도미와 빙어 데이터를 1차원 배열 length, weight로 합친 뒤 2차원 배열로 만들고 shape을 확인할 수 있다.
[ [길이, 무게], [길이, 무게], ... ]
도미와 빙어를 구분할 수 있게 도미를 찾는 타겟 데이터를 만든다.
도미, 빙어 데이터 length, weight 끼리 합치기
fish_length = np.concatenate((bream_length, smelt_length))
fish_weight = np.concatenate((bream_weight, smelt_weight))
fish_data = np.column_stack((fish_length, fish_weight))
print(fish_data)
5. 도미 – 1, 빙어 – 0 으로 구분!!
print(bream_length.shape)
print(smelt_length.shape)
fish_target = np.concatenate((np.ones(35), np.zeros(14)))
print(fish_target)
6. shuffle을 이용하여 데이터를 섞는다.
- 인덱스 만들기
indexes = np.arange(49)
- 인덱스 기반으로 셔플하기
np.random.shuffle(indexes)
print(indexes)
- 실제데이터를 인덱스로 섞기
fish_data = fish_data[indexes]
fish_target = fish_target[indexes]
print(fish_data)
print(fish_target)
7. 테스트 데이터와 훈련 데이터로 구분한다.
- 훈련 데이터와 검증(테스트) 데이터로 나누기 : Cross-Validation (80:20 → 39개, 10개)
train_data = fish_data[:39]
train_target = fish_target[:39]
test_data = fish_data[39:]
test_target = fish_data[39:]
8. 훈련 데이터를 x축은 length, y축은 weight로 하여 matplot으로 시각화한다.
plt.scatter(train_data[:, 0], train_data[:, 1])
plt.show()
9. train_target, train_length, train_weight 형태로 pandas에 저장한 뒤 MariaDB로 저장한다.(테이블명 train)
- pandas 로 변환하기
train_target = train_target.reshape(39, 1)
train = np.hstack((train_data, train_target))
train_dataFrame = pd.DataFrame(
train, columns=["train_length", "train_weight", "train_target"])
- MariaDB에 저장
engine = db.create_engine("mariadb+mariadbconnector://python:python1234@127.0.0.1:3306/pythondb")
train_dataFrame.to_sql("train",engine, index=False,if_exists="replace")
- DB 조회
SELECT * FROM train;
10. test_target, test_length, test_weight 형태로 pandas에 저장한 뒤 MariaDB로 저장한다.(테이블명 test)
- pandas 로 변환하기
test_target = test_target.reshape(10, 1)
test = np.hstack((test_data, test_target))
test_dataFrame = pd.DataFrame(
test, columns=["test_length", "test_weight", "test_target"])
- MariaDB에 저장
engine = db.create_engine("mariadb+mariadbconnector://python:python1234@127.0.0.1:3306/pythondb")
test_dataFrame.to_sql("test",engine, index=False,if_exists="replace")
- DB 조회
SELECT * FROM test;
<전체 코드>
# 1. 라이브러리 설치
import numpy as np
import pandas as pd
import sqlalchemy as db
import matplotlib.pyplot as plt
# 2. CSV 로드하기
bream_length = pd.read_csv("bream_length.csv").to_numpy().flatten()
bream_weight = pd.read_csv("bream_weight.csv").to_numpy().flatten()
smelt_length = pd.read_csv("smelt_length.csv").to_numpy().flatten()
smelt_weight = pd.read_csv("smelt_weight.csv").to_numpy().flatten()
# print(bream_length)
# 3. CSV 데이터 시각화하기
plt.scatter(bream_length, bream_weight)
plt.scatter(smelt_length, smelt_weight)
# plt.show()
# 4. 도미, 빙어 데이터 length, weight 끼리 합치기
fish_length = np.concatenate((bream_length, smelt_length))
fish_weight = np.concatenate((bream_weight, smelt_weight))
fish_data = np.column_stack((fish_length, fish_weight))
# print(fish_data)
# 5. 타겟 데이터 만들기
# print(bream_length.shape)
# print(smelt_length.shape)
fish_target = np.concatenate((np.ones(35), np.zeros(14)))
# print(fish_target)
# 6. 데이터 셔플하기 (샘플링 편향 막기)
indexes = np.arange(49)
np.random.shuffle(indexes)
# print(indexes)
fish_data = fish_data[indexes]
fish_target = fish_target[indexes]
# print(fish_data)
# print(fish_target)
# 7. 훈련 데이터와 검증(테스트) 데이터로 나누기 (80:20) (39개, 10개)
train_data = fish_data[:39]
train_target = fish_target[:39]
test_data = fish_data[39:]
test_target = fish_data[39:]
# 8. 훈련 데이터 시각화 하기
plt.scatter(train_data[:, 0], train_data[:, 1])
# plt.show()
# 9. 데이터를 판다스로 변환하기
# (1) train
train_target = train_target.reshape(39, 1)
train = np.hstack((train_data, train_target))
train_dataFrame = pd.DataFrame(
train, columns=["train_length", "train_weight", "train_target"])
# (2) test
test_target = test_target.reshape(10, 1)
test = np.hstack((test_data, test_target))
test_dataFrame = pd.DataFrame(
test, columns=["test_length", "test_weight", "test_target"])
# 10 . DB에 insert 하기
engine = db.create_engine("mariadb+mariadbconnector://python:python1234@127.0.0.1:3306/pythondb")
train_dataFrame.to_sql("train",engine, index=False,if_exists="replace")
test_dataFrame.to_sql("test",engine, index=False,if_exists="replace")
'Study > 연습' 카테고리의 다른 글
여기어때 홈페이지 크롤링 연습 (1) | 2021.11.15 |
---|---|
Python - 공공API 테스트 (0) | 2021.10.25 |
빅데이터 저장 시스템 출력 - 기사 제목 출력 (0) | 2021.09.29 |