인공지능_기초

너무 많은 규칙이 존재하는경우 일일히 프로그래밍하는것은 매우 어렵다.머신러닝은 컴퓨터가 스스로 데이터를 이용하여 학습

용어정리

지도학습 : 정답을 알려줌

  • 가장 일반적인 문제

    비지도학습 : 정답을 스스로 학습함

훈련집합 : 훈련에 필요한 데이터들이 모여있는 집합

분류 와 회귀

  • 분류 : 두 개중 하나를 찾는 문제
  • 회귀 : 연속적(0~100)이며 예측에 관한 문제

TensorFlow

구글이 오픈 소스로 공개한 기계학습 라이브러리

지도학습 (Supervised Learning)

  1. 과거의 데이터를 준비한다.
    • 카페장사를 한다고 가정하여 온도와 판매량의 관계를 분석(원인, 결과)
     레모네이드 = pd.read_csv('lomonade.csv')
     독립 = 레모네이드[['온도]]
     종속 = 레모네이드[['판매량]]
        
     print(독립.shape, 종속.shape)
    
  2. 모델의 구조를 만든다.
    •  X = tf.keras.layers.Input(shape=[1]) # 독립변수의 갯수
       Y = tf.keras.layers.Dense(1)(X) # 종속변수의 갯수
       model = tf.keras.model.Model(X,Y)
       model.compile(loss= 'mse') # 최소평균오차
      
  3. 데이터로 모델을 학습(FIT)한다.
    •  model.fit(독립, 종속, epochs = 1000) #반복횟수
      
  4. 모델을 이용한다.
    • 값을 예측
       print("Predictions:", model.predict(p[[15]]))
      

데이터를 준비단계에서는 데이터를 독립변수와 종속변수로 나눠서 준비해야하며 이 갯수가 그 다음 모델의 구조를 만들때 필요하다 학습시에는 몇 회 반복할지를 정해준다.

Loss(손실)

model.fit(독립, 종속, epochs= 10)
# 10번 반복에서 학습하는 코드
# 위 코드에서 loss 값이 출력된다.
# (예측 - 결과)^2 의 평균 
# Loss 가 0에 가까울 수록 정확해진다.

음료 판매 예측


#### COLAB에서 실습#####
# github csv url: https://raw.githubusercontent.com/blackdew/tensorflow1/master/csv/lemonade.csv

# 필요한 라이브러리
import tensorflow as tf
import pandas as pd

# 데이터
file_path = 'https://raw.githubusercontent.com/blackdew/tensorflow1/master/csv/lemonade.csv'
data = pd.read_csv(file_path) 
data.head()
# 종속,독립 분리
독립 = data[['온도']]
종속 = data[['판매량']]
print(독립.shape, 종속.shape) # check 

# 모델생성
X = tf.keras.layers.Input(shape=1)
Y = tf.keras.layers.Dense(1)(X)
model = tf.keras.models.Model(X,Y)
model.compile(loss='mse')

# 모델 학습
model.fit(독립,종속, epoch = 100)
# Check Loss 
# 0에 가깝도록 epoch횟수를 증가
# verbose =0 옵션을 추가하면 화면출력을 끌 수 있다.
# epoch = 10으로 넣어서 마지막 loss값 확인

# 모델 이용
model.predict(독립)
model.predict([15]) # 예측사용

보스턴 집값 예측

  1. 과거의 데이터를 준비합니다.
    Boston = pd.read_csv('boston.csv')
    독립 = Boston[['crim','zn','indus', 'chas',
                 'nox', 'rm', 'age', 'dis',
                 'rad', 'tax', 'ptratio', 'b'
                 'lstat']]
    종속 = Boston[['medv']]
    print(독립.shape, 종속.shape)
    
  2. 모델의 구조를 만든다.
    X = tf.keras.layers.Input(shape=[13]) #독립변수 갯수 
    Y = tf.keras.layers.Dense(1)(X)  #종속변수 갯수 (1개의 출력)
    model = tf.keras.models.Model(X,Y)
    model.compile(loss= 'mse')
    
  3. 데이터로 모델을 학습한다.
    model.fit(독립,종속, epochs=1000)
    
  4. 모델 이용
    print("Predictions:", model.predict(독립[0:5]))
    

보스턴 집값 예측(실습)


# github csv url: https://raw.githubusercontent.com/blackdew/tensorflow1/master/csv/boston.csv

# Import Library
import tensorflow as tf
import pandas as pd

# 1.과거 데이터 준비
data_path = 'https://raw.githubusercontent.com/blackdew/tensorflow1/master/csv/boston.csv'
data = pd.read_csv(data_path)
data.head()
print(data.columns)

# 독립,종속 분리
독립 = data[['crim','zn','indus', 'chas',
                'nox', 'rm', 'age', 'dis',
                'rad', 'tax', 'ptratio', 'b',
                'lstat']]
종속 = data[['medv']]

print(독립.shape, 종속.shape)

# 2. 모델 구조
X = tf.keras.layers.Input(shape=[13])
Y = tf.keras.layers.Dense(1)(X)
model = tf.keras.models.Model(X,Y)
model.compile(loss='mse')

# 3. 모델 학습
model.fit(독립,종속, epochs =100)

# 4. 모델 이용
model.predict(독립[0:5]) # 잘라서 사용
종속[0:5]
# 예측값과 확인

#### 모델의 수식 확인
model.get_weights()

Commnets