콘텐츠로 바로가기

now0930 일지

이런저런 생각

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

linear approxmation

python으로 데이터를 근사 함수로 바꾸는 명령이 있다. polyfit. 대박이다!

Python 3.5.2 (default, Jul 10 2019, 11:58:48) 
[GCC 5.4.0 20160609] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import numpy as np
>>> x=np.arange(0,4)
>>> y=np.array([0,1,1.9,3.1])
>>> np.polyfit(x,y,1)
array([ 1.02, -0.03])
>>> np.polyfit(x,y,2)
array([0.05, 0.87, 0.02])

인터넷에서 구한 sine 데이터로 근사 함수를 구해봐야 겠다.

#_*_ coding: utf-8 _*_
import matplotlib
matplotlib.use('Agg')

import numpy as np
from sklearn.preprocessing import PolynomialFeatures

import csv 
import tensorflow as tf
import matplotlib.pyplot as plt 
import pandas as pd

from keras.models import Sequential
from keras.layers import Dense
from keras.layers import Dropout
from keras.callbacks import ModelCheckpoint

print ("Package Loaded")
print ("데이터로 함수 근사하기")

ipd = pd.read_csv("./sine.csv")
print (ipd.head())
print (ipd.shape)

#column 선택.
time=ipd.iloc[:,0].array
sineValue=ipd.iloc[:,1].array
#print(type(time))
#print(time)
#print(time)
#print(sineValue)
approxFunc = np.polyfit(time,sineValue,6, full=False)
print(approxFunc)

처음에 5,000개를 모두 시키니 애가 이상한 짓을 한다. 사인 웨이브 크기가 1이고 0.001 단위로 쪼갰다. 파랑색 선이 내가 예상한 그림인데 애가 작고 너무 티 안나게 그렸다. 오차를 줄이려 노력하다 보니 아무것도 아닌 그래프를 그렸다.

이번에는 앞에 몇 개 잘랐다.

tf-docker /home/tensorflow/tutorial/ItnSensor > cat sine.csv
0,0.841470985
0.001,0.873736397
0.002,0.90255357
0.003,0.927808777
0.004,0.949402346
0.005,0.967249058
0.006,0.98127848
0.007,0.991435244
0.008,0.997679266
0.009,0.999985904
0.01,0.998346054
0.011,0.992766189
0.012,0.983268329
0.013,0.969889958
0.014,0.952683874
0.015,0.931717983
0.016,0.907075026
0.017,0.878852258
0.018,0.847161063
0.019,0.812126509
0.02,0.773886863
0.021,0.73259304
0.022,0.688408006
0.023,0.64150614
0.024,0.592072543
0.025,0.540302306
0.026,0.486399742
0.027,0.430577581
0.028,0.373056127
0.029,0.314062391
0.03,0.253829194
0.031,0.192594249
0.032,0.130599223

이렇게 하면 좀 비슷하게 그린다. 입력으로 준 수치가 (0.032, 0.1305..)에서 끊어져 애는 끝까지 아래로 간다고 생각하나 보다.

특정 부분을 보고 특징을 뽑아내야 하는데, 그냥 인공지능 하나 만들어서 하는게 낫다. 에러, 정확도가 얼마인지도 모르겠다.

이 글 공유하기:

  • Tweet
발행일 2019-12-24글쓴이 이대원
카테고리 생활코딩 태그 linear approximation, python, 근사함수

댓글 남기기응답 취소

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

글 내비게이션

이전 글

노트북 대용 PC 조립

다음 글

경기 융합과학교육원

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로 제작.
 

댓글 로드중...