본문 바로가기

분류 전체보기

(596)
[2024 수능개념 생명과학1] (22) 세포주기, 체세포 분열 이 글은 EBSi 박소현 선생님의 강의 [2024 수능개념] 완벽한 수능 준비! 박소현의 생명과학Ⅰ 22강을 수강하고 정리한 글입니다. 1. 세포 주기 간기(DNA 복제와 세포 생장) + 분열기(세포 분열) 보통 간기가 분열기보다 훨씬 김 간기: 분열기와 분열기 사이의 시기 G1기: 세포의 생장이 일어남, 세포 분열 직후부터 다음 분열을 위한 DNA 복제 전까지의 단계, 세포 구성 물질 합성, 세포 소기관의 수 증가 S기: DNA 복제가 일어나 유전 물질의 양이 2배로 증가 G2기: 방추사 구성 단백질 합성, 세포 분열 준비 분열기(M기): 핵과 세포질의 분열이 일어남. 전기, 중기, 후기, 말기로 구분 2. 체세포 분열 체세포 분열: 몸을 구성하는 세포가 분열을 통해 세포 수를 늘리는 과정 모세포와 동..
[2024 수능개념 생명과학1] (20, 21) 유전 정보와 염색체 이 글은 EBSi 박소현 선생님의 강의 [2024 수능개념] 완벽한 수능 준비! 박소현의 생명과학Ⅰ 20, 21강을 수강하고 정리한 글입니다. 1. 염색체, DNA, 유전자, 유전체 염색체: 유전 정보를 저장하고 전달하는 역할을 하는 끈이나 막대 모양의 구조물 (DNA + 단백질) DNA: 유전물질. 유전 정보를 담고 있는 분자이며 2중 나선 구조를 이룸 히스톤(단백질): DNA 형태 정리를 돕는 단백질 뉴클레오솜: 염색체를 이루는 기본 구조. 히스톤 단백질을 DNA가 감고 있는 구조 유전자: 유전 정보를 담고 있는 DNA의 특정 부분 유전체(게놈): 한 생명체가 가진 모든 DNA의 유전 정보 * 간기(일상생활) 때에는 염색사 형태로 존재하다가 분열기(이사할 시기)가 되면 염색체의 형태로 바뀐다. * 뉴..
Kaggle에 submit 하기 Kaggle은 각 문제마다 train 데이터셋과 test 데이터셋, sample_submission 데이터셋을 제공한다. 우리가 머신러닝 모델을 만들었다면 최종적으로 test 데이터셋의 예측값들을 Kaggle에게 알려주어야 한다. 이 과정은 보통 submission.csv 파일을 만들어서 Kaggle에 업로드하면 간단히 끝낼 수 있다. 우선 제출할 데이터가 아래와 같이 있다고 하자. print(submission_data.head()) print(submission_data.describe()) submission_data.info() Pandas DataFrame 인 submission_data 변수로부터 submission.csv 파일을 만들어야 한다. 이 파일은 아래 코드로 간단히 생성할 수 있다...
Scikit-learn HardVoting, SoftVoting 사용법 머신러닝 전략 중에서 성능을 높이기 위해 사용하는 방법 중 하나는 다수결의 원칙을 따르는 것이다. 1과 0중 하나를 예측해야 할 때 모델 A는 1, 모델 B는 0, 모델 C는 1을 예측했다면 다수결에 따라 최종 예측을 1로 한다. 이를 Hard Voting 이라 한다. 각 모델은 1과 0을 예측할 때 Hard Voting 처럼 둘 중 하나만 지정할 수도 있고, 0.8의 확률로 1이 예측되고 0.2의 확률로 0이 예측된다고 말할수도 있다. 만약 모델 A가 1을 0.8, 0을 0.2의 확률로 예측하고 모델 B가 1을 0.7, 0을 0.3의 확률로 예측하고 모델 C가 1을 0.2, 0을 0.8의 확률로 예측했다면 1의 최종 예측 확률은 (0.8 + 0.7 + 0.2) / 3 = 0.57, 0의 최종 예측 확률..
모델 학습 시간과 성능은 비례하지 않는다 머신러닝 문제를 풀다가 모델의 학습 시간이 길다고 해서 성능이 좋은 건 아니라는 사실을 알게 되었다. 아래 코드를 통해서 여러 머신러닝 모델의 학습 시간을 측정하였다. # 리스트 준비 models = [ran, knn, log, xgb, gbc, svc, ext, ada, gnb, gpc, bag] model_names = ['Random Forest', 'K Nearest Neighbour', 'Logistic Regression', 'XGBoost', 'Gradient Boosting', 'SVC', 'Extra Trees', 'AdaBoost', 'Gaussian Naive Bayes', 'Gaussian Process', 'Bagging Classifier'] scores = {} # 모델 튜닝 ..
연속적인 DataFrame의 값들을 몇 개의 그룹으로 나누고 싶을 때 머신러닝 공부를 하다가 0~1의 연속적인 값을 가지는 데이터를 10개의 그룹으로 나누고 싶어졌다. 아래 데이터는 기존의 데이터이다. normalized_train.head() 각 column의 데이터들이 0~1 사이의 연속적인 값들을 가지고 있다. 내가 하고 싶은 것은 0.0 = 0.3) & (normalized_train[column_name] = 0.4) & (normalized_train[column_name] = 0.5) & ..
3. DataFrame의 column별 데이터의 분포가 보고 싶을 땐 seaborn.displot() 각 컬럼별로 어느 구간에 데이터가 몰려있는지 알고 싶다면 seaborn의 displot을 사용해보자. import random import seaborn as sns rand_data = [] for _ in range(1, 10000): # 10000개의 난수 생성 rand_data.insert(0, random.randrange(0, 10001)) # 생성된 난수는 0~10000 사이의 값을 가짐 sns.displot(data = rand_data, kind='kde').set(title='Random Values') 위의 예제는 0~10000개의 난수를 생성하여 rand_data 배열에 넣고 이 난수들의 분포를 seaborn을 통해 시각화하는 코드이다. 참고로, 각 난수는 0~10000 사이의 값을..
Numpy 차원 낮추기 - ravel() vs reshape() vs flatten() Machine Learning을 공부하다 보면 배열의 차원을 낮추는 경우가 종종 발생한다. 예를 들어 아래와 같이 2차원 배열인 array_2d가 있다고 할 때, 차원을 하나 낮춘다는 의미는 2차원 배열이 1차원 배열이 되는 것이다. 그런데..!! 차원을 낮출 땐 주의사항이 있다. 바로 array_2d의 데이터 변화가 array_1d에 영향을 미치느냐 하는 것이다. 결론부터 말하면, 아래처럼 array_2d의 첫번째 원소값을 바꿀 경우 ravel(), reshape() 으로 차원을 낮춘 array_1d_ravel 과 array_1d_reshape 의 데이터는 바뀌고, flatten()으로 차원을 낮춘 array_1d_flatten은 데이터가 바뀌지 않는다. 잘 모르고 사용하다가 예상치 못하게 변하면 안될..