[Data]

    [Data Science] TF-IDF란?

    [Data Science] TF-IDF란?

    TF-IDF를 알기 이전에 DTM부터 알아보겠습니다.  DTM(Document-Term Matrix, 문서 단어 행렬)  다수의 문서에서 등장하는 각 단어들의 빈도를 행렬로 표현한 것을 의미합니다.  문서1: "나는 고양이를 좋아합니다."문서2: "나는 개를 싫어합니다."  단어나는고양이를좋아합니다개를싫어합니다문서111100문서210011  TF-IDF(Term Frequency-Inverse Document Frequency)  단어의 빈도(TF)와 역 문서 빈도(IDF)를 사용하여 DTM 내의 각 단어들마다 중요한 정도를 가중치로 주는 방법 - 위키독스  *모든 문서에서 등장하는 단어는 중요도가 낮고, 특정 문서에서만 등장하는 단어는 중요도가 높습니다.  tf(d, t): 특정 문서 d에서 특정단어 ..

    [Data science] 문장 유사도 분석을 위한 Levenshtein Distance(편집거리 알고리즘) 행렬 구하기

    [Data science] 문장 유사도 분석을 위한 Levenshtein Distance(편집거리 알고리즘) 행렬 구하기

    두 문장의 유사도를 알기 위해 "레벤슈타인 거리"라는 알고리즘을 사용할 수 있습니다. 대학시절 이산수학 과목에서 배웠는데 잊어버리기도했고 문장 유사도 분석을 해야하기 때문에 다시 정리할까 합니다. 이러한 공식을 가지고 있다고 합니다. 하지만 너무 어려우니 저는 매트릭스에 값 채우는 법만 빠르게 알아보겠습니다 레벤슈타인 알고리즘은 2차원 매트릭스를 생성하는데 비교하는 글자의 수에 따라서 정방행렬이 될 수도 있고, 아닐 수도 있습니다. 비교하려는 두 개의 문자 또는 문장의 길이가 같으면 정방행렬, 그렇지 않다면 정방행렬이 아니게 됩니다. 규칙은 간단합니다. 2차원 매트릭스의 행과 열을 a[i], b[j]라 할때 a[i] == b[i]이면 왼쪽 위 대각선 값을 그대로 가져오고, 그렇지 않으면 왼쪽, 위쪽, 왼..

    [Numpy] argsort()

    [Numpy] argsort()

    파이썬의 넘파이 라이브러리에는 argsort()라는 정렬함수가 있습니다. 일반적인 정렬함수와 약간 차이가 있는데요. 주어진 배열의 요소를 정렬한 후 정렬전 인덱스를 반환해 주는 것이 특징이며 오름차순이 기본값입니다. 직접 코드로 확인해 보겠습니다. import numpy as np arr = np.array([3, 1, 2, 5, 4]) print(np.argsort(arr)) >>> [1 2 0 4 3] 0 1 2 3 4 >> 인덱스 ↓ ↓ ↓ ↓ ↓ 3 1 2 5 4 >> 배열요소 정렬되면 1 2 3 4 5로 정렬이 될텐데, 그에 맞춰 인덱스도 정렬되어 1 2 0 4 3이 되어 출력됩니다. 추가) .argsort()[::-1]로 작성해 내림차순으로 정렬해 역순으로 가져올 수도 있으며 많이 사용되는 방..

    [Pandas] 판다스 2.0 버전 이상 원-핫 인코딩 표시 문제 해결

    [Pandas] 판다스 2.0 버전 이상 원-핫 인코딩 표시 문제 해결

    저의 판다스는 2.1.3 버전입니다. 23년 12월 3일 기준 최신 버전인데, 원-핫 인코딩 시 불편한(?) 문제가 생기게 됩니다. 바로 정수가 아닌 문자(bool)로 표현된다는 것 입니다. "satisfaction_dissatisfied" 컬럼 부터 True or False로 표현됩니다. 이전 버전의 판다스는 이러지 않았는데 불편하다고 생각합니다. 미관상 숫자로 통일하고 싶죠. 또한 타입도 boolean타입이 됩니다. df.info()를 이용해 확인해 보았습니다. 그럴 때 방법이 있습니다. 단순합니다. "곱하기 1"을 해주면 됩니다. 이전과 다르게 "satisfaction_dissatisfied" 부분 부터 정수로 변한 것이 보이시나요? True or False가 1 or 0으로 변경되었습니다. df...

    [Pandas] axis=0, axis=1에 관하여

    [Pandas] axis=0, axis=1에 관하여

    aixs=0, axis=1 이 헷갈려 정리하는 김에 포스팅을 하게 되었습니다. axis=0은 행, axis=1은 열입니다. 연산 과정일 때 결론부터 말하면 연산시 행은 책의 높이이고 열은 책을 담는 서랍인데 axis=0은 행 방향(가로 방향)으로 동작하는데 가로 방향인 행들이 쌓이게 되면 세로 방향으로 쌓이게 됩니다. 책이 위로 쌓아지는 것과 같다고 생각합니다. aixs=1은 열 방향(세로 방향)으로 동작하는데 연산시 세로 방향인 열들이 쌓이게 되면 가로 방향으로 움직이게 됩니다. 서랍이 옆으로 들어나는 것 같다고 생각합니다. arr = {'a' : [1, 2, 3], 'b' : [4, 5, 6], 'c' : [7, 8, 9], 'd' : [10, 11, 12]} tmp = pd.DataFrame(arr..

    [머신러닝] 로지스틱 회귀(Logistic Regression)에서 모델 학습 과정

    [머신러닝] 로지스틱 회귀(Logistic Regression)에서 모델 학습 과정

    로지스틱 회귀는 어떠한 과정을 거치며 학습할까? 분류 문제를 해결하는 대표적인 모델인 로지스틱 회귀(Logistic Regression)의 학습 과정에 대해 알아보자. 그 전에 몇 가지 사전 지식을 점검하고자 합니다. 1. 머신 러닝에서 문제는 크게 2가지로 나뉘게 되는데 "분류(Classification)"와 "회귀(Regression)"로 구분합니다. 분류 문제는 "이산적인(class)" 결과를 예측하는 문제, 회귀 문제는 "연속적인(continuous)" 결과를 예측하는 문제로 정의할 수 있습니다. 예시를 들자면 분류 문제는 수신된 이메일이 스팸 메일인지 아닌지, 암 의심 환자의 종양이 양성인지 악성인지 등을 예측합니다. 또한 회귀 문제는 주택 가격 예측, 온도 예측, 판매량 예측 등을 예측합니다...