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])