전체 글120 [자료구조] 이진 탐색 트리(BST, Binary Search Tree) 이진 탐색 트리 (binary search tree) ※ 이진 탐색 트리 삽입 구현 :: insert class Node: """이진 탐색 트리 노드 클래스""" def __init__(self, data): self.data = data self.parent = None self.right_child = None self.left_child = None def print_inorder(node): """주어진 노드를 in-order로 출력해주는 함수""" if node is not None: print_inorder(node.left_child) print(node.data) print_inorder(node.right_child) class BinarySearchTree: """이진 탐색 트리 클래스.. Algorithm 2023. 12. 29. [Algorithm] Brute Force 사용하여 Trapping Rain 구현 [ Brute Force 알고리즘을 사용하여 trapping rain 빗물의 양을 구하기 ] 건물 높이 정보를 보관하는 리스트 buildings를 파라미터로 받고, 담기는 빗물의 총량을 리턴해주는 trapping_rain 함수를 작성. ex) 파라미터 buildings로 [0,1,0,2,1,0,1,3,1,2,1] 을 받았을 때, 총 6의 빗물이 채워진다. 문제를 접했을 때 풀이 방법이 떠오르지 않고 힌트를 봐도 이해가 한번에 되지 않았기에 가장 기본적인 알고리즘이지만 다시금 정리해 본다. Brute Force 란? : 무차별 대입 알고리즘 장점 ▷ 직관적이고 명확하다. 확실하게 답을 찾을 수 있다. 단점 ▶ 인풋이 커질수록 비효율적 대가가 심각해진다. 비효율적인 Brute force 알고리즘 왜 알아야 .. Algorithm 2023. 12. 26. [머신러닝] 로지스틱 회귀 (Logistic Regression) 로지스틱 회귀 (Logistic Regression) 선형 회귀 분류는 예외적인 데이터에 예민한 단점이 있다. 그래서 분류를 할 때는 로지스틱 회귀 (Logistic Regression) 를 사용한다. 로지스틱 회귀는 데이터에 가장 잘 맞는 시그모이드 함수를 찾는 것이다. 시그모이드 함수는 곡선의 형태이며 항상 0과 1의 사이의 결과를 낸다. ? 로지스틱 회귀는 분류를 하기 위해 쓰인다는데 왜 '회귀'인가 : 사실 시그모이드 함수의 결괏값도 결국은 0과 1 사이의 연속적인 값이기 때문에 회귀라고 볼 수 있다. 그래서 '로지스틱 분류'가 아닌 '로지스틱 회귀'라고 부른다. 우리는 주로 시그모이드 함수를 결괏값이 0.5보다 큰지 작은지 보고 결국 분류를 하기에 명칭은 '회귀'이지만 주로 사용하는 건 분류라는.. DB/ML 2023. 12. 21. [머신러닝] 범죄율(CRIM)로 집값 예측하기 [ 범죄율로 집 값 예측하기 ] scikit-learn을 사용하여 선형 회귀를 직접 연습하기. CRIM : 동네의 범죄율 범죄율 열을 선택 training-test set 나누기 모델을 학습 test 데이터로 예측 - 입력 변수로는 범죄율 열만 이용. - train_test_split 함수의 옵셔널 파라미터는 test_size = 0.2, random_state = 5 - 예측 값 벡터 변수 이름은 y_test_predict # 필요한 라이브러리 import from sklearn import datasets from sklearn.model_selection import train_test_split from sklearn.linear_model import LinearRegression .. DB/ML 2023. 12. 20. [머신러닝] 선형 회귀(Linear Regression) 머신러닝 알고리즘 선형 회귀에 대해 정리해 보자 ! 선형 회귀는 단순하면서도 유용하고, 특히 다른 많은 알고리즘의 기반이 되기 때문에 완벽하게 이해하는 것이 중요하기에 관련된 개념들도 함께 정리해 보자. 선형 회귀 (Linear Regression) : 알려진 다른 관련 데이터 값을 사용하여 알 수 없는 데이터의 값을 예측하는 데이터 분석 기법. : 선형회귀는 머신러닝에서 '지도 학습(회귀/분류) 알고리즘' 중 연속적인 값을 예측하는 회귀에 해당한다. - 목표 변수 (target variable / output variable) : 맞추려고 하는 값 - 입력 변수 (input variable / feature) : 맞추는 데 사용하는 값 , '특징/속성' 쉽게 말하자면 위 그래프에서 데이터를 가장 잘 대.. DB/ML 2023. 12. 20. Kaggle(캐글) 타이타닉 생존자 예측하기 (1) [ Kaggle(캐글) 타이타닉 문제 해결하기] Titanic - Machine Learning from Disaster | Kaggle www.kaggle.com 타이타닉 탑승자 정보 데이터를 가지고, "어떤 종류의 사람이 생존할 가능성이 높은가?" 라는 질문에 답하는 예측 모델을 구축해 봅시다! 필자는 Google colab에서 실행하였다. 따라서 Data에서 훈련세트, 테스트세트 Dataset을 받아서 해당파일 경로에 넣어주었다. [ 훈련세트 필드명 확인 ] survived : 생존=1, 죽음=0 pclass : 승객 등급. 1등급=1, 2등급=2, 3등급=3 sibsp : 함께 탑승한 형제 또는 배우자 수 parch : 함께 탑승한 부모 또는 자녀 수 ticket : 티켓 번호 cabin : 선실.. DB/ML 2023. 12. 19. [HMI] 신호등 HMI 작화하기 [ PLC 프로그래밍 ] 2023.11.28 - [PLC & HMI/PLC] - [PLC] HMI와 연동하여 신호등 제작하기 [PLC] HMI와 연동하여 신호등 제작하기 HMI와 PLC를 연동하여 보행자/자동차 신호등을 제작. PLC 프로그래밍 ▷ 보행자가 보행 버튼을 누르면 8초 후 차선의 신호등은 황색 램프가 점등되며 2초 후 적색으로 바뀐다. ▷ 이때 보행자 신호 kongda.tistory.com HMI 작화하기 ▷ 비트램프 : 보행자 신호등(빨/초), 자동차 신호등(빨, 주, 초) ▷ 비트 스위치 : 보행자 버튼 신호등 램프들은 비트 램프에 디바이스 값을 PLC에서 설정한 메모리 할당값이랑 통일시켜 준다. ▶ 보행자 신호등 : %MX1 (빨), %MX2 (초) ▶ 자동차 신호등 : %MX3 (빨).. Dev etc/HMI 2023. 11. 28. [PLC] HMI와 연동하여 신호등 제작하기 HMI와 PLC를 연동하여 보행자/자동차 신호등을 제작. PLC 프로그래밍 ▷ 보행자가 보행 버튼을 누르면 8초 후 차선의 신호등은 황색 램프가 점등되며 2초 후 적색으로 바뀐다. ▷ 이때 보행자 신호등은 청색 램프가 10초간 점등된 뒤 10초간 점멸하며 이후 적색으로 바뀐다. PLC 프로그래밍을 할 때는 펑션과 펑션블록을 사용할 때는 구분하여 구현해야 된다 ! 위 예제에서는 펑션블록을 사용하여 구현할 것이다. 펑션 / 펑션블록을 사용해야 되는 시점을 구분해보자. 펑션 펑션블록 입력의 수 1개 이상 2개 이상 출력의 수 오직 1개 1개 이상 연산 시간 하나 스캔에 결과 출력 여러 스캔 누계 결과 출력 데이터 입/출력 데이터를 반드시 모두 지정. 입력 데이터는 반드시 지정, 출력 데이터는 생략 가능. 데이.. Dev etc/PLC 2023. 11. 28. [HMI] LS의 XP-Builder 사용법 익히기 (2) - 비트,워드 램프/스위치 실습예제로 XP-Builder 사용법을 정리해 보자! XP-Builder는 비트와 워드로 동작을 표현할 수 있으므로, 비트와 워드 동작법을 익히기 위해 다양한 기능을 구현해 볼 예정이다. 먼저, 1번 화면에 배경화면을 생성해 주고 [기본 화면 삽입] 으로 각 화면을 추가하여 화면명을 변경해 준다. 우측 [오브젝트] - [화면 전환 스위치] 추가 후 더블클릭 [오브젝트 속성] 들어가기. 화면번호를 고정값으로 각 화면에 맞는 화면번호를 설정해 준다. 그럼 해당화면번호로 화면 전환 스위치가 완성된다. 완성시킨 배경화면을 화면 목록에서 우측클릭하고, 모든 기본화면의 배경으로 설정을 해준다. 그러면 완성시킨 배경화면이 2-9까지 모든 화면의 배경으로 들어가는 것을 확인할 수 있다. 그러면 각 화면별로 기능을 익혀.. Dev etc/HMI 2023. 11. 23. [Python] 데이터 시각화 - Seaborn 통계 데이터 시각화 데이터 시각화를 수행할 때, 어떤 그래프를 선택해야 정보가 가장 잘 전달될지 고려해야 한다. 특히 데이터가 무한한 경우, 특정 값에 대한 정확한 확률 계산은 의미가 없을 수 있다. 이런 상황에서는 특정 범위에 대한 계산이 더 유의미할 것이다. 이때, 확률을 효과적으로 표현해 주는 라이브러리로 seaborn이 유용하다. seaborn를 사용하여 통계 데이터 시각화를 해보자 !! ◈ Seaborn Statistical Data Visualization 통계를 기반한 데이터 시각화 : matplotlib를 기반으로 하는 Python 데이터 시각화 라이브러리. import pandas as pd import seaborn as sns # seaborn은 sns로 칭한다. ▼ seaborn 사이트 seaborn은.. BE/Python 2023. 11. 21. [Python] 데이터 시각화 - Matplotlib 그래프 그리기 [ Matplotlib 사용하여 그래프 그리기 ] 머신러닝에서 모델을 구현하는 것도 중요하지만, 학습할 데이터를 선별하고 만들어진 모델을 검증하기 위해서는 데이터를 이해하는 것이 필수적이고 이를 위해서는 데이터를 시각화해서 보는 것이 매우 중요하다고 한다. Python에서 가장 널리 사용되는 데이터 시각화 라이브러리 Matplotlib로 데이터 시각화를 해보았다 ! ◈ Matplotlib ? : Python 프로그래밍 언어 및 수학적 확장 Numpy 라이브러리를 활용한 플로팅 라이브러리 : 그래프, 차트, 플롯 등 다양한 시각화 요소를 생성하고 데이터를 시각적으로 나타낼 수 있다. %matplotlib inline # Jupyter Notebook 사용시 추가해줘야 됨. import matplotlib .. BE/Python 2023. 11. 17. [Python] pandas로 데이터 분석하기 - DataFrame 생성. ◈ Pandas ? : 구조화된 데이터나 표 형식의 데이터를 빠르고 쉽게 다룰 수 있도록 하는 라이브러리 : Series - 1차원 데이터, DataFrame - 2차원 데이터 DataFrame = Series + Series Series : List와 다르게 index를 직접 지정할 수 있다. 설정을 안 해주면 0, 1, 2...로 설정됨. DataFrame : 인덱스와 컬럼을 기준으로 표 형태처럼 데이터를 저장. ▼ DataFrame 생성해 보기! import pandas as pd student_list = [['철수', 100, 90, 85], ['영희', 70, 80, 85], ['진구', 95, 75, 80]] df = pd.DataFrame(student_list) df columns와 in.. BE/Python 2023. 11. 17. 이전 1 2 3 4 5 6 7 ··· 10 다음 728x90