인공지능_기초
너무 많은 규칙이 존재하는경우 일일히 프로그래밍하는것은 매우 어렵다.머신러닝은 컴퓨터가 스스로 데이터를 이용하여 학습
용어정리
지도학습 : 정답을 알려줌
- 가장 일반적인 문제
비지도학습 : 정답을 스스로 학습함
훈련집합 : 훈련에 필요한 데이터들이 모여있는 집합
분류 와 회귀
- 분류 : 두 개중 하나를 찾는 문제
- 회귀 : 연속적(0~100)이며 예측에 관한 문제
TensorFlow
구글이 오픈 소스로 공개한 기계학습 라이브러리
지도학습 (Supervised Learning)
- 과거의 데이터를 준비한다.
- 카페장사를 한다고 가정하여 온도와 판매량의 관계를 분석(원인, 결과)
레모네이드 = pd.read_csv('lomonade.csv') 독립 = 레모네이드[['온도]] 종속 = 레모네이드[['판매량]] print(독립.shape, 종속.shape)
- 모델의 구조를 만든다.
-
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') # 최소평균오차
-
- 데이터로 모델을 학습(FIT)한다.
-
model.fit(독립, 종속, epochs = 1000) #반복횟수
-
- 모델을 이용한다.
- 값을 예측
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]) # 예측사용
보스턴 집값 예측
- 과거의 데이터를 준비합니다.
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)
- 모델의 구조를 만든다.
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')
- 데이터로 모델을 학습한다.
model.fit(독립,종속, epochs=1000)
- 모델 이용
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()