기본 콘텐츠로 건너뛰기

3월, 2023의 게시물 표시

Python 인공신경망 추천 시스템(회귀)

예제 # 인공신경망을 이용한 추천 시스템 # - 순차형(Sequential) 신경망 생성법 # - 함수형(Functional) 신경망 생성법 # - 지금까지 나온 추천 방식 중에서 가장 좋은 성능 # - Regression 방식으로 분석가능 # - 영화의 평점 정보(userid, movieid, rating) # - 이용자는 영화에 대한 취향이 모두 다르다 # - 영화는 다양한 장르가 혼합되어 있다 # - 이용자는 자신의 취향에 맞는 영화에 높은 rating을 제시함 # - 어떤 이용자에게 어떤 장르의 영화를 추천할 것인가? # __call__() 함수를 가진 클래스는 파이썬 함수 callable(클래스)를 사용하면 True를 반환한다 from tensorflow.keras.models import Sequential, Model from tensorflow.keras.layers import Dense, Embedding, Input input = Input(shape=(1,)) # 함수형 신경망 생성법 hidden1 = Dense(2, activation='relu')(input) # Dense(2, activation='relu')__call__() hidden2 = Dense(2, activation='relu')(hidden1) # callable.object callable(Dense) # __call__ 함수가 있으면 True, 없으면 False # Using Functional API from keras.models import Sequential from keras.layers import * model = Sequential() model.add(Input(shape=(3,))) # Input tensor model.add(Dense(4)) # hidden layer 1 model.add(Dense(units=4)) # hidden layer 2 model.add(Dense(units=1)) # ou

Python CNN(Convolutional Neural Network) 예제

예제 import tensorflow as tf from tensorflow.keras.models import Sequential from tensorflow.keras.layers import Dense, Conv2D, MaxPoolling2D import numpy as pd img_width = 225 img_height = 225 batch_size = 10 epochs = 50 num_classes = 2 # 파일에 저장된 이미지를 학습용 데이터로 로드한다 train_ds = tf.keras.preprocessing.image_dataset_from_directory(     'images',seed=123,image_size=(img_height,img_width),batch_size=batch_size ) # Found 20 files belonging to 2 classes. class_names = train_ds.class_names # ['bottle', 'cup'] model = Sequential([     tf.keras.layers.experimental.preprocessing.Rescaling(1.0/255),     Conv2D(32,3,activation='relu'), # 총 필터의 갯수 32, 필터의 사이즈 3x3, 활성화 함수 relu 음수는 0 양수는 그대로     MaxPooling2D(),     Conv2D(32,3,activation='relu'),     MaxPooling2D(),     Conv2D(32,3,activation='relu'),     MaxPooling2D(),     Flatten(),     Dense(128, activation='relu'),     Dense(num_classes, activation='softmax') ]) model.compile(loss='

CNN (Convolutional Neural Network : 합성곱신경망)

CNN (Convolutional Neural Network) - 합성곱 신경망 - 곱해서 합하는 기능(내적, Dot Product) - 이미지 분류에 탁월한 성능 - 마지막에는 결국 Dense(전결합층)을 이용하여 이미지의 특성을 학습 - 이미지 내의 픽셀로부터 특징을 추출한다 - 이미지는 픽셀로 구성됨 - 픽셀은 색상을 표현(RGB) - Red(0~255) - 24 x 24 -> 3 x 24 x 24 x n - 이미지 데이터와 내부에서 무작위로 생성한 필터(이미지)와의 내적 - 특징 : 다른 데에는 없는 고유의 성질 - 필터 중에서 어떤 것이 특징을 추출하는데 도움이 되는가? 합성곱->Max-Pooling(특징 강화)->flatten(1차원화)->Dense(학습)

Python Tensorflow Softmax

Softmax  : 다중분류 예제 # softmax : 다중분류 # 분류 클래스 수만큼의 값이 산출됨 # 산출된 값을 합하면 1이 됨 #!pip install tensorflow import tensorflow as tf from tensorflow.keras.models import Sequential from tensorflow.keras.layers import Dense np.random.seed(0) tf.random.set_seed(3) from sklearn.model_selection import train_test_split import pandas as pd df = pd.read_csv('housing.csv',delim_whitespace=True,header=None) 0 1 2 3 4 5 6 7 8 9 10 11 12 13 0 0.00632 18.0 2.31 0 0.538 6.575 65.2 4.0900 1 296.0 15.3 396.90 4.98 24.0 1 0.02731 0.0 7.07 0 0.469 6.421 78.9 4.9671 2 242.0 17.8 396.90 9.14 21.6 2 0.02729 0.0 7.07 0 0.469 7.185 61.1 4.9671 2 242.0 17.8 392.83 4.03 34.7 3 0.03237 0.0 2.18 0 0.458 6.998 45.8 6.0622 3 222.0 18.7 394.63 2.94 33.4 4 0.06905 0.0 2.18 0 0.458 7.147 54.2 6.0622 3 222.0 18.7 396.90 5.33 36.2 ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... 501 0.06263 0.0 11.93 0 0.573 6.593 69.1 2.4786 1 273.0 21.0 391.99 9.67 22.4 502 0.04527 0.0 11.93 0 0.573 6.120 76.7 2.2875 1 273.

자격증

정보관리기술사,  컴퓨터시스템응용기술사,  전자계산기조직응용기사,  정보처리기사,  정보보안기사,  빅데이터분석기사,  사무자동화산업기사,  정보처리산업기사,  정보보안산업기사

Python 인공신경망 예제

활성함수(Activation) 계단함수(Step Function) : 0과 1로만 내보난다 예제 import numpy as np def step_function(x):     return np.array(x > 0, dtype=int) x = np.arange(-5,6,0.1) res = step_function(x) import matplotlib.pyplot as plt plt.plot(x,res) plt.show() Sigmoid Function 예제 # h(x) = 1 / (1 + exp(-x)) : exp = 2.718281828... def sigmoid(x):     return 1 / (1 + np.exp(-x)) x = np.arange(-5.0,5.0,0.1) y = sigmoid(x) plt.figure(figsize=(3,2)) plt.plot(x,y) plt.ylim(-0.1,1.1) plt.show() 예제 # 계단함수와 시그모이드 함수의 출력값을 한개의 차트에 그려서 비교해보세요 plt.figure(figsize=(5,2)) x = np.arange(-10,10,0.1) y = step_function(x) y2 = sigmoid(x) plt.plot(x,y,'r--',label='step function') plt.plot(x,y2,label='sigmoid') plt.legend() plt.show() ReLU(Rectified Linear Unit) : x <= 0, -> 0, x > 0 -> x 예제 def relu(x):     return np.maximum(0,x) # arg1, arg2를 비교하여 큰 값 리턴 arr = np.arange(-10,11,1) y = relu(arr) plt.figure(figsize=(5,2)) plt.plot(arr,y) plt.show() Softmax : 다중분류 예제 # softmax : 다중분류 # 분류

인공신경망

뉴런(Neuron) 활성 함수(Activation) 활성화와 비활성화를 결정한다 직선의 방정식 aX + b = y 곡선의 방정식 W1X1 + W2X2 + W3X3 + ... + b(Bias) = y 손실함수(Loss Function) 추정과 실제의 차이를 계산하는 함수 고차함수로 계산함 Label : 아주 많아짐 Prediction : 추정(실제값과 추정값을 비교해서 최적의 값을 찾아냄) MSE(각각의 에러의 제곱의 평균,Mean Square Error) : 회귀 MAE Binary_CrossEntropy :  Categorical_CrossEntropy 확률적 경사하강법(SGD : Stochastic Gradiant Descendent) 가중치를 올려서 기울기 0(최적의 가중치)을 찾는 방법 최적화(Optimizer) : 학습률을 조정하는 것 학습률을 최적화 해준다 SGD(Stochastic Gradient Descent, 확률적 경사하강법) Adam : 가장 좋은 옵티마이저 오차 역전파(Backpropagation) 과적합, 과소적합 순정파, 역전파

Python SQLAlchemy Pandas

예제 from sqlalchemy.engine import create_engine import pandas as pd  oracle ='oracle+cx_oracle://scott:TIGER@localhost:1521/?service_name=XE' engine = create_engine(oracle) engine df_post = pd.read_sql_query("SELECT * FROM post", engine) df_post

Python Flask SQL 연동하기

설치 !pip install flask_sqlalchemy !pip install cx_Oracle 예제 %%writefile crud.py from flask import Flask from flask_sqlalchemy import SQLAlchemy from flask import request from flask import jsonify app = Flask(__name__) app.config['JSON_AS_ASCII'] = False oracle ='oracle+cx_oracle://scott:TIGER@localhost:1521/?service_name=XE' app.config['SQLALCHEMY_DATABASE_URI'] = oracle db = SQLAlchemy(app) class Post(db.Model):     id = db.Column(db.Integer, primary_key=True)     title = db.Column(db.String(80),nullable=False)     content = db.Column(db.Text,nullable=False)          def to_json(self):         return {             'id':self.id,'title':self.title,'content':self.content         } @app.route('/add',methods=['POST']) def add_post():     jsdata = request.get_json()     post = Post(id=jsdata['id'],title=jsdata['title'],content=jsdata['content'])     db.session.add(post)     db.session.commit()     print(&

Python EzenFinal

#!pip install openai import openai def chatGPT(prompt):     openai.api_key = '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'     response = openai.Completion.create(         model="text-davinci-003",         prompt = prompt+"\nA:",         temperature=0.5,         max_tokens=1024,         top_p=1,         frequency_penalty=0.0,         presence_penalty=0.0,         stop=["\n"]     )          return response.choices[0].text.strip() weight = 75 goal_weight = 68 gender = '남' chatGPT(f"몸무게 : {weight}, 목표 체중 : {goal_weight}kg, 성별 : {gender}인 사람에게 하루 식단을 추천해주고 각 시단의 칼로리도 알려줘.?")

Python Sklearn, 외부 정보 지도학습 후 정밀도 구하기

%%writefile app3.py from flask import Flask app = Flask(__name__) ####################################### from sklearn.linear_model import LogisticRegression from sklearn.model_selection import train_test_split from sklearn.metrics import accuracy_score import pandas as pd url = "https://raw.githubusercontent.com/jbrownlee/Datasets/master/pima-indians-diabetes.data.csv" names = ['preg', 'plas', 'pres', 'skin', 'test', 'mass', 'pedi', 'age', 'class'] dataframe = pd.read_csv(url, names=names) array = dataframe.values # array([[],...]) X = array[:,0:8] # 0 ~ 7번 열 y = array[:,8] # 8번 열 # Split data into train and test sets X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42) # Create logistic regression object clf = LogisticRegression(max_iter=1000) # Train the model using the training sets clf.fit(X_train, y_train) # Predict the labels of test set y_pred = clf.predict(X_t

Spring-Python 예제

예제1 %%writefile app.py #app.py from flask import Flask app = Flask(__name__) # 한글 깨짐 방지 app.config['JSON_AS_ASCII'] = False print('Flask running~') @app.route('/') def index():     return '<h1>Hello World</h1>' @app.route('/json') def json():     import json     data = {}     data['empno'] = 31     data['ename'] = 'Smith'     data['phone'] = '010-2547-8459'     js_str = json.dumps(data)     return js_str @app.route('/login',methods=['GET','POST']) def login():     from flask import request     if request.method == 'GET':         userid = request.args.get('userid')         pwd = request.args.get('pwd')         import json         result = {}         if (userid == 'smith' and pwd == '1234'):             result['result'] = '로그인 성공'         else:             result['result'] = '로그인 실패'         return json