출처: https://astrocosmos.tistory.com/202 [ASTROCOSMOS:티스토리] 하나둘셋넷 :: 하나둘셋넷
728x90

DX 의 중요성

 나이키와 포드를 예시로 성공적인 DX를 이루어내는 데에 중요한 요인을 배울 수 있었다.
 나이키는 고객 중심으로 서비스를 기획하며 코로나 시기에도 높은 실적을 기록했다.
 포드는 기술 성장을 위해 많은 돈을 들여 다양한 스타트업을 인수하고 "포드 스마트 모빌리티"를 설립했다.
 하지만, 각 사업부가 독립적으로 일이 진행되면서 기술과 업무가 통합되지 않았고다. 이에 따라 포드 스마트 모빌리티는 기계의 변속기 이상, 안정성 등의 문제가 반복되는 모습을 보여주었다.
 

클라우드 이론 및 AWS 경험

 
 수업 때 클라우드 이론을 배운 뒤, AWS를 통해 실습을 진행하며 VPC, Subnet, 인터넷 게이트웨이, 보안그룹 등을 다루어 보니 클라우드 개념에 대한 이해도를 높이는 데에 도움이 되었다.
 수업에서 받은 계정은 금요일 수업 종료와 동시에 삭제되어 아쉬움이 있었고, AWS 홈페이지를 뒤져보며 무료로 연습을 해볼 방법이 있는지 알아보고 있다.
 

 

돌아오는 주에는 6차 미니 프로젝트 진행

 돌아오는 주 3일 동안은 미니 프로젝트를 진행하게되었다.
 현재까지 미프를 진행해온 결과, 여러 번 같은 조가 된 에이블러들을 볼 수 있었다.
 현재 우리 조 상황은 조원들이 온다면 수요일에 많이 올 것으로 예상되고, 나도 상황을 보면서 대면 교육장을 갈지 결정하려고 한다.

 

SQL 스터디원 모집

 
회사 채용 공고들을 보면서 느낀 결과, SQL은 많은 직무에서 우대 받을 수 있는 역량임을 볼 수 있었고, DX 과정에서는 SQL 수업을 따로 진행하지 않기 때문에 이를 꾸준히 공부하고자 직접 스터디원들을 모집했다.
 

 
 하고 싶은 일이 생겼을 때는 망설이지 않는 스타일이기에 바로 KT 에이블러들 단체 카톡방에 말을 했고, DX 에이블러 스터티그룹원 모집 게시판에도 글을 올렸다.
 이 부분에 비슷한 고민이 있는 사람들이 있어서였는지 생각보다 빠르게 스터디원들을 구하고 마감할 수 있었다.
 

 

스터디에서 활용할 프로그래머스 SQL 고득점 Kit

 

728x90
728x90

Python] 가상환경 만들기, jupyter 설치, kernel 연결

파이썬 버전도 지정하여 가상환경을 생성하고 싶으면 두 번째 줄에 있는 코드를 사용하면 된다.

conda create -n name
conda create -n name_38 python=3.8

 

 

가상환경 목록 확인하기

conda env list

 

가상환경 활성화, 비활성화, 삭제

conda activate name_38
conda deactivate
conda env remove -n name_38

 

 

가상환경에 jupyter notebook 설치, kernel 연결

conda activate name_38
pip install jupyter notebook
python -m ipykernel install --user --name name_38 --display-name "name_38"

 

 

가상환경에 jupyter notebook 설치, kernel 연결

conda list

 

가상환경에 pip show 라이브러리

pip show tensorflow

 

conda search 라이브러리

conda search 라이브러리

 

 

라이브러리 삭제

pip uninstall 라이브러리
728x90

'Python - 기초 설정' 카테고리의 다른 글

Python] 버전 변경  (0) 2023.11.14
728x90

버전 변경

python -V
conda search python
conda install python=x.x.x

 

 

728x90
728x90

기본 차트 그리기 plt.plot(1차원 값)

 

 

# 차트 그리기
plt.plot(data['Temp'])

# 화면에 보여주기
plt.show()

 

x축, y축 지정하고 그래프 그리기

 

import pandas as pd
import matplotlib.pyplot as plt
plt.rc('font', family = 'Malgun Gothic')
plt.rcParams['font.family']

plt.plot(df['timestamp'], df['price(원/kg)])
plt.xticks(rotation=70)

plt.ylabel('price(원/kg)')
plt.show()

 

# 방법 2
plt.plot('Date', 'Temp', data = data)
plt.show()

 

 

시각화 axhline

train.groupby('hour').mean()['hour_bef_temperature'].plot()
plt.axhline(train.groupby('hour').mean()['hour_bef_temperature'].mean())

 

차트 꾸미기

plt.plot(data['Date'], data['Ozone'])

plt.xticks(rotation = 30)       # x축 값 꾸미기 : 방향을 30도 틀어서
plt.xlabel('Date')              # x축 이름 지정
plt.ylabel('Ozone')             # y축 이름 지정
plt.title('Daily Airquality')   # 타이틀

plt.show()

 

 

라인스타일 조정

 

plt.plot(data['Date'], data['Ozone']
         ,color='green'                # 칼러
         , linestyle='dotted'          # 라인스타일
         , marker='o')                 # 값 마커(모양)

plt.xlabel('Date') 
plt.ylabel('Ozone')
plt.title('Daily Airquality')
plt.xticks(rotation=45)

plt.show()

 

 

그래프 겹쳐서 그리기

 

# 첫번째 그래프
plt.plot(data['Date'], data['Ozone'], color='green', linestyle='dotted', marker='o')
# 두번째 그래프
plt.plot(data['Date'], data['Temp'], color='r', linestyle='-', marker='s')

plt.xlabel('Date') 
plt.ylabel('Ozone')
plt.title('Daily Airquality')
plt.xticks(rotation=45)

# 위 그래프와 설정 한꺼번에 보여주기
plt.show()

 

 

범례, 그리드 추가

 

plt.plot(data['Date'], data['Ozone'], label = 'Ozone')  # label = : 범례추가를 위한 레이블값
plt.plot(data['Date'], data['Temp'], label = 'Temp')

plt.legend(loc = 'upper right')    # 레이블 표시하기. loc = : 위치
plt.grid()
plt.xticks(rotation=45)
plt.show()

 

 

여러 개 차트 그리기, 방식 2

 

data.plot(x = 'Date', y = ['Temp','Ozone']
          , title = 'Daily Airquality')
plt.grid()
plt.show()

 

 

축 범위 조정

 

plt.plot(data['Ozone'])

# plt.ylim(0, 100)
# plt.xlim(0, 10)
plt.grid()
plt.show()

 

 

그래프 수직선, 수평선 추가

 

plt.plot(data['Ozone'])

plt.axhline(40, color = 'grey', linestyle = '--')
plt.axvline(10, color = 'red', linestyle = '--')
plt.show()

 

 

 

그래프에 텍스트 추가

 

plt.plot(data['Ozone'])

plt.axhline(40, color = 'grey', linestyle = '--')
plt.axvline(10, color = 'red', linestyle = '--')

plt.text(5, 41, '40')
plt.text(10.1, 20, '10')

plt.show()

 

 

여러 그래프 나눠서 그리기

 

plt.figure(figsize = (12,8))
plt.subplot(3,1,1)
plt.plot('Date', 'Temp', data = data)
plt.grid()

plt.subplot(3,1,2)
plt.plot('Date', 'Wind', data = data)

plt.subplot(3,1,3)
plt.plot('Date', 'Ozone', data = data)
plt.grid()
plt.ylabel('Ozone')

plt.tight_layout() # 그래프간 간격을 적절히 맞추기
plt.show()

 

 

 

 

하나의 데이터프레임에서 여러 개의 차트 그리기

 

# 남녀 인구 변화
plt.plot(pop_test[['male','female']])
plt.show()

 

728x90
728x90

한글 입력, 경고문구 무시, 경로, 목록

import matplotlib.pyplot as plt

plt.rc('font', family = 'Malgun Gothic')
plt.rcParams['font.family']

 

import warnings
warnings.filterwarnings(action='ignore')

 

import os
os.getcwd()
os.listdir()

 

728x90
728x90

house price 예측하기

 

라이브러리 불러오기

import pandas as pd

 

데이터 읽기

df = pd.read_csv('kc_houseprice.csv')
display(df.columns)
df.head()

 

컬럼 이름과 데이터 정보를 확인하였다.

 

df.info()

현재 데이터에서 date는 object 타입이다.

 

# 현재 date의 데이터만 object 타입임을 확인할 수 있다.

 

데이터 전처리

# 위에서 date 열을 보면 20141209T~~~~ 형식으로 되어있어서 활용하기 어렵다.

# 따라서 분석에 유효한 앞에 4글자만 가져오도록 한다.

# 이후에는 float 타입으로 변환

버릴 데이터를 찾아보자

df['date'] = df.loc[:,'date'].str[:4]
df['date'] = df.loc['date'].astype(float)
display(df.info())
display(df)

데이터에서 object 형이 없음을 확인했다.
문제 조건에 따라서 sqft_living15, sqft_lot15 열을 삭제하였고 확인

 

타겟 데이터 분리

target = 'price'
x = df.drop(['sqft_living15', 'sqft_lot15' ,target], axis = 1)
y = df[target]

display(x)
display(x.columns)
display(y)

 

훈련용 데이터 분리하기

from sklearn.model_selection import train_test_split

x_train, x_test, y_train, y_test = train_test_split(x, y, test_size = 0.2, random_state = 2023)

 

데이터 스케일링

from sklearn.preprocessing import MinMaxScaler
scaler = MinMaxScaler()
x_train = scaler.fit_transform(x_train)
x_val = scaler.transform(x_val)

 

모델 설계

nfeatures = x_train.shape[1]

from keras.backend import clear_session
clear_session()

from keras.layers import Dense, Dropout
from keras.models import Sequential

model_DNN = Sequential()
model_DNN.add(Dense(18, input_shape = (nfeatures, ), activation = 'relu') )
model_DNN.add(Dropout(0.3) )
model_DNN.add(Dense(4, activation = 'relu'))
model_DNN.add(Dense(1) )

model_DNN.summary()

 

Param # 

출력 노드 * ( 입력노드 + 1 ) = Param

 

18 * ( 입력차원 + 1 ) = 18 * 19 = 342

4 * ( 입력차원 + 1 ) = 4 * 19 = 76

1 * ( 입력차원 + 1 ) = 1 * 5 = 5

 

따라서, 342 + 76 + 5 = 423

Total params : 423과 일치한다.

 

모델 컴파일 및 학습

from keras.optimizers import Adam

model_DNN.compile(optimizer = Adam(learning_rate = 0.01), loss = 'mse')
hist = model_DNN.fit(x_train, y_train, epochs = 50, validation_split = 0.2).history

 

 

검증

from sklearn.metrics import *

pred = model_DNN.predict(x_val)

print(mean_squared_error(y_val, pred, squared = False) ) # RMSE
print(mean_absolute_error(y_val, pred)

 

 

 

728x90
728x90

내용

  • 방화벽 활성화/접근권한 부여
  • 백신 clamav 설치, 검사, 감염 파일 이동/삭제

방화벽 활성화

sudo ufw enable

 

활성화 확인

sudo ufw status

 

UFW 상태 확인

sudo ufw status verbose

 

Putty를 통해 접속이 되는지 확인한다. 에러 메시지가 출력된다.

 

방화벽 비활성화

sudo ufw allow ssh comment 'ssh'

 

Putty를 통해 접속이 가능해진다.

 

22번 포트가 잘 되었는지 확인한다.

sudo ufw status verbose

 

모든 IP에서 접곤하는 22번 포트 접속을 허용해주는 설정이고, 보안에 취약하다.

 

위 SSH 설정을 삭제한다.

sudo ufw delete allow ssh
sudo ufw status verbose

 

현재 접근하고 있는 Local IP에서만 22번 포트 접속을 허용해주도록 설정하기 위해 ip를 ghkrdlsgksek.

cat /var/log/auth* | grep Accepted -a

 

위에서 확인한 IP를 기반으로 방화벽 설정

sudo ufw allow from <위에서 확인한 IP> to any port 22
sudo ufw status verbose

 

백신 설치

sudo apt-get update

 

clamav 설치

sudo apt-get install clamav

 

설치한 프로그램으로 /home 디렉토리와 그 하위 디렉토리 검사 실시

clasmscan -r /home

 

감염된 파일을 /virus 디렉토리로 이동

clamscan -r /home --move=/virus

 

감염된 파일을 삭제

clamscan -r /home --remove
728x90

'리눅스_실습' 카테고리의 다른 글

IT 인프라 실습] RAID 0 구성  (1) 2023.11.09
IT 인프라 실습] 리눅스 명령어  (0) 2023.11.08
728x90

RAID 0를 구성해보자

Virutal Box에서 아래의 경로에 따라 하드 디스크 선택기에 들어가 1GB 하드 디스크를 7개 생성한다.

 

관리자 계정으로 변경한다.

 

우분투에 접속하고

sudo -i

 

명령어를 입력하여 Root(관리자) 계정으로 변경한다.

 

 

fdisk -l 명령어를 통해 파티셔닝 정보를 확인한다.

위에서 정상적으로 디스크가 추가되었다면,

/dev/sdb 부터 /dev/sdh 까지 총 7개의 디스크가 생성된다.

fdisk -l

 

실행 키워드

fdisk /dev/sdb

n, Enter, Enter, Enter, Enter

 

 

Command (m for help) : l
Command (m for help) : fd
Command (m for help) : t

 

sdb ~ sdh까지 동일한 과정을 수행한다.

 

모든 과정이 정상적으로 실행되었다면 아래와 같이 화면이 구성된다.

 

Raid 설정을 하기 위한 패키지 도구 mdadm을 설치한다.

apt-get -y install mdadm

 

/dev/sdb1 /dev/sdc1를 Raid 0 구성하여 /dev/md0라고 생성한다.

mdadm --create /dev/md0 --level=0 --raid-devices=2 /dev/sdb1 /dev/sdc1

 

/dev/md0 를 포맷한다.

mkfs.ext4 /dev/md0

 

/dev/md0 과 마운트(연결)할 디렉토리 생성 및 마운트

mkdir /raid0
mount /dev/md0 /raid0
ls /raid0

 

Raid 구성 확인

mdadm --detail --scan

 

 

수정한 내용 적용

update-initramfs -u

 

디스크 확인

df

728x90

'리눅스_실습' 카테고리의 다른 글

IT 인프라 실습] 방화벽  (0) 2023.11.09
IT 인프라 실습] 리눅스 명령어  (0) 2023.11.08
728x90

리눅스 명령어

ls
디렉토리의 내용을 출력한다

ls -al
추가 옵션

man ls
ls 명령의 매뉴얼을 확인한다.

pwd
현재 어떤 디렉토리에 있는지 출력해준다.

whoami
현재 어떤 계정으로 접속되어 있는지 출력한다

history
이전 명령 수행 로그를 출력해준다.

date
현재 시각을 출력해준다.

clear
화면을 클리어 한다.

echo 문자열
echo hello Aivle

 

 

728x90

'리눅스_실습' 카테고리의 다른 글

IT 인프라 실습] 방화벽  (0) 2023.11.09
IT 인프라 실습] RAID 0 구성  (1) 2023.11.09

+ Recent posts