Python Machine learning
18. 딥러닝과 선형대수
state
2022. 9. 22. 03:28
PYTHON
import csv
raw = []
with open(" ./ ~~", 'r', encoding="UTF-8") as f:
rdr = csv.reader(f)
for line in rdr:
raw.append(line)
//FEATURE
import my_linear_algebra as mla
data = mla.deepcopy(raw)
X = []
for i in range(1, n+1):
row = []
for j in range(1, p):
row.append(data[i][j])
X.append(row)
// TARGET
y = []
for i in range(1, n+1):
val = int(data[i][0])
y.append(val)
// SCALE
X1 = mla.deepcopy(X)
n1 = len(X) 행 크기
p1 = len(X[0]) 열 크기
X_scale = []
for i in range(0,n1):
row = []
for j in range(0,p1):
val = float(X1[i][j])/255
row.append(val)
X_scale.append(row)
// TENSORFLOW LIBRARY를 이용한 손글씨 이미지 데이터 분류 (10000,28,28,1) 차원으로 변경
print(X_scale[0])
n=10000
w=28
h=28
c=1
X_rs = []
for i in range(0,n):
image = []
tmp_image = mla.deepcopy(X_scale[i])
for j in range(0,w):
row = []
for k in range(0,h):
pixel = []
for l in range(0,c):
val = tmp_image.pop(l)
pixel.append(val)
row.append(pixel)
image.append(row)
X_rs.append(image)
// IMAGE 데이터 확인
import matplotlib.pyplot as plt
plt.figure(figsize=(10,5))
for i in range(2*5):
plt.subplot(2, 5, i+1)
plt.imshow(X_rs[i], cmap='Greys')
plt.show()
// ONE HOT ENCODING : 0으로 구성된 영벡터에 오직 한 개의 1값만으로 반환
y_set = set(y)
n_category = len(y_set)
print(n_category)
y_onehot = []
for i in range(0,n):
row = []
for j in range(0, n_category):
if y[i] == j:
row.append(1)
else:
row.append(0)
y_onehot.append(row)
X = X_rs
y = y_onehot
// DEEPLEARNING
from sklearn.mmodel_selectoin import train_test_split
X_tn, X_te, y_tn, y_te = train_test_split(X, y, random_state = 0)
from tensorflow.keras.models import Sequential
from tensorflow.keras.models import Dense, Conv2D
from tensorflow.keras.models import MaxPool2D, Flatten
from tensorflow.keras.models import Dropout
n_class = len(y_tn[0])
model = Sequential()
model.add(Conv2D(32, kernel_size=(5,5), input_shape=(28,28,1),
padding = 'valid', activation='relu'))
model.add(MaxPool2D(pool_size=(2,2)))
model.add(Dropout(0.25))
model.add(Conv2D(32, kernel_size(3,3), padding='valid',
activation='relu'))
model.add(MaxPool2D(pool_size=(2,2)))
model.add(Dropout(0.25))
model.add(Flatten())
model.add(Dense(1024, activation='relu'))
model.add(Dropout(0.5))
model.add(Dense(n_class, activation='softmax'))
model.summary()
model.compile(loss='categorical_crossentropy',
optimizer='adam', metrics=['accurancy'])
hist = model.fit(X_tn, y_tn, epochs=3, batch_size=100)
//트레이닝 데이터 평가
print(model.evaluate(X_tn, y_tn)[1])
//테스트 데이터 평가
print(model.evaluation(X_te, y_te)[1])
-------------------------------------------------------------------------------------------------------------------------------------------------
NUMPY PANDAS
import pandas as pd
df= pd.read_csv("./ ~~ ")
df.head()
//FEATURE TARGET
X = df.iloc[:,1:].copy()
y = df.iloc[:,0].copy()
X = X.to_numpy()
X = X.astype('float32')/255
import numpy as np
X = np.reshape(X, (X.shape[0], 28, 28, 1))
X.shape
// IMAGE DATA
import matplotlib.pyplot as plt
plt.figure(figsize=(10,5))
for in range(2*5):
plt.subplot(2,5, i+1)
plt.imshow(X[i].reshape((28, 28)), cmap='Greys')
plt.show()
// ONE HOT ENCODING
from tensorflow.keras.utils import to_categorical
y = to_categorical(y)
// DEEPLEARNING
from sklearn.model_selection import train_test_split
X_tn, X_te, y_tn,y_te=train_test_split(X,y,random_state=0)
from tensorflow.keras.models import Sequential
from tensorflow.keras.models import Dense, Conv2D
from tensorflow.keras.models import MaxPool2D, Flatten
from tensorflow.keras.models import Dropout
n_class = len(y_tn[0])
model = Sequential()
model.add(Conv2D(32, kernel_size = (5,5), input_shape=(28,28,1),
paddig='valid', activation='relu'))
model.add(MaxPool2D(pool_size=(2,2)))
model.add(Dropout(0.25))
model.add(Conv2D(32, kernel_size=(3,3), padding='valid', activation='relu'))
model.add(Dropout(0.5))
model.add(Dense(n_class, ac)
model.summary()
model.compile(loss='categorical_corssentropy',optimizer='adam', metrics=['accuracy'])
hist=model.fit(X_tn, y_tn, epochs=3, batch_size=100)
print(model.evaluate(X_tn, y_tn)[1])
print(model.evaluate(X_te, y_te)[1])