본문 바로가기

전체 글110

맛슐랭 - 모든 맛집 리스트 조회를 위한 구현 1. repository ReviewRepository 이전에 구현했던 ReviewRepository 에 findByPlace 함수를 추가함으로써 해당 장소에 대한 모든 리뷰를 반환받을 수 있다. @Repository public interface ReviewRepository extends JpaRepository { List findByPlace(Place place); } 2. service ReviewService 이전에 구현했던 ReviewService 에 getReviewByPlace 함수를 추가함으로써 장소에 의해 리뷰를 찾을 수 있는 로직을 구현하였다. //특정 장소에 작성된 리뷰 리스트 반환 @Service @RequiredArgsConstructor public class ReviewS.. 2024. 3. 30.
z-score 기반의 이상치 제거 zcore함수: 평균에서 얼마나 떨어져 있는지 알기 위해 각 데이터에서 평균을 빼고 표준편차고 나눠준다. 사용법 from scipy import stats # Z-score 기반 이상치 제거 z_scores = np.abs(stats.zscore(train_x)) threshold = 3 # 이 값을 조절하여 이상치로 간주되는 임계점을 설정합니다. train_zscore = train.copy()[(z_scores < threshold).all(axis=1)] #이상치 제거하고 남은 데이터 2024. 3. 30.
IQR(사분위수) 기반 이상치 검출 및 해결방안 # 이상치를 탐지하는 함수 정의 def detect_outliers(dataframe, column): Q1 = dataframe[column].quantile(0.25) Q3 = dataframe[column].quantile(0.75) IQR = Q3 - Q1 # IQR 기반으로 이상치 범위를 정의 lower_bound = Q1 - 1.5 * IQR upper_bound = Q3 + 1.5 * IQR # 이상치의 인덱스를 반환 return dataframe[(dataframe[column] upper_bound)].index # 숫자형 데이터만 대상으로 이상치 탐지 numeric_columns = train.select_dtypes(include=[np.number]).columns.tolist() .. 2024. 3. 30.
데이터 가공 - 데이터 증강 SMOTE 컬럼 내의 클래스별로 속한 데이터 수의 불균형으로 생기는 문제를 해결하기 위해 SMOTE알고리즘 사용 (ex: 성별이라는 컬럼 있을 때 남자가 100명 여자가 10명인 데이터가 있다면 테스트 데이터에서 성별을 남자로 예측할 가능성 높음) 사용이유 불균형한 데이터에서 소수 클래스의 샘플을 증강시켜 데이터를 균형있게 만듦 소수 클래스 샘플과 비슷한 데이터 생성 (합성 소수 샘플링 기술) 사용법 from imblearn.over_sampling import SMOTE smote = SMOTE(random_state = 0) X , y = smote.fit_resample(x , list(y)) #증강된 데이터 반환 2024. 3. 30.
데이터가공 - 문자열 변환 1. Scikit-learn의 LabelEncoder 사용 from sklearn.preprocessing import LabelEncoder model = LabelEncoder() model.fit(df[column]) df[column] = model.predict(df[column]) 문제점 :가중치의 차이가 생길 수 있음 2. 판다스의 get_dummies함수 사용 df_dummies = pd.get_dummies(df[column]) (실제 사용에서는 df_dummies를 원래 데이터 df에 붙여주고 get_dummies함수 적용해준 컬럼 drop) 3. enumerate 사용 dict = { text : i for i, text in enumerate(df[column]) } df[colum.. 2024. 3. 30.
다중 공선성 다중 공선성 문제 회귀 분석에서 독립변수들 간에 강한 상관관계가 나타나는 것 1. corr 메소드를 사용하여 두 변수간에 상관관계를 분석한다. 사용법 import matplotlib.pyplot as plt import seaborn as sns plt.figure() sns.heatmap(train[features].corr(), annot=True) plt.show() 2. variance_inflation_factor 메소드를 사용하여 특정 피처가 다른 피처들로 얼마나 잘 설명될 수 있는지를 확인한다. 사용법 from statsmodels.stats.outliers_influence import variance_inflation_factor vif = pd.DataFrame() vif['featur.. 2024. 3. 30.